用到了NTDLL中的函数
typedef DWORD(WINAPI *PFSuspendProcess)(HANDLE hProcess);
typedef DWORD(WINAPI *PFResumeProcess)(HANDLE hProcess);
int main(int argc, char* argv[])
{
PFSuspendProcess SuspendProcess;
PFResumeProcess ResumeProcess;
if(argc != 2) {
printf("/nParameter not enough !!!/nusage: %s process-id /n", argv[0]);
return 0;
}
HMODULE hNtDllLib = LoadLibrary("ntdll.dll");
SuspendProcess = (PFSuspendProcess)GetProcAddress(hNtDllLib, "ZwSuspendProcess");
ResumeProcess = (PFResumeProcess )GetProcAddress(hNtDllLib, "ZwResumeProcess" );
if(SuspendProcess) {
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, atoi(argv[1]));
SuspendProcess(hProcess);
printf("Press any key to resume process ...");
getc(stdin);
ResumeProcess(hProcess);
CloseHandle(hProcess);
}
FreeLibrary(hNtDllLib);
getc(stdin);
return 0;
}
本文介绍了一个使用NTDLL库中ZwSuspendProcess和ZwResumeProcess函数实现暂停和恢复指定进程ID对应进程的方法。通过加载ntdll.dll库并获取所需函数的地址,可以对特定进程进行挂起和恢复操作。

357

被折叠的 条评论
为什么被折叠?



