您的位置:首页 > 其它

强制结束一个进程

2008-08-08 15:54 399 查看
实际不是原创,是别人研究出来的,我不过把Delphi代码翻译成C的。
下面的代码可以卸载一个进程的模块。

pid是进程ID,ModuleName是模块名。
BOOL UnloadModule(DWORD pid, char *ModuleName)
{
typedef DWORD (WINAPI *PTRZwUnmapViewOfSection)(IN HANDLE ProcessHandle, IN PVOID BaseAddress);
PTRZwUnmapViewOfSection pZwUnmapViewOfSection = (PTRZwUnmapViewOfSection)GetProcAddress(GetModuleHandle("ntdll.dll"), "ZwUnmapViewOfSection");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (hProcess != NULL)
{
pZwUnmapViewOfSection(hProcess, GetModuleHandle(ModuleName));
CloseHandle(hProcess);
return TRUE;
}
return FALSE;
}
如果卸载的是一个关键模块,进程就废了。
比如:调用UnloadModule(pid, "ntdll.dll");可以结束一个进程,手段很黄很暴力。
结束一般程序没有问题,但有自我保护的,比如卡巴斯基是不行的,原因是根本不允许你OpenProcess。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: