强制结束一个进程
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。
下面的代码可以卸载一个进程的模块。
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。
相关文章推荐
- Delphi中强制结束一个进程
- Linux中强制结束一个进程的终极方法
- Linux中强制结束一个进程的终极方法和其他常用命令
- Delphi中强制结束一个进程
- u3d 一个工程编译一半强制结束进程导致的问题
- Delphi中强制结束一个进程
- Delphi中强制结束一个进程
- 强制产生死锁的进程结束,产生core文件
- Linux强制结束进程
- 强制结束windows任务管理器的进程
- win7下强制结束进程的cmd命令
- windows下强制杀死一个进程
- 强制结束进程的命令和软件
- 强制结束系统进程
- 等待一个进程结束,调用外部exe
- 删除EM,强制结束EM进程后,启动数据库ORA-00119,ORA-00132报错的解决方法
- NSIS:强制结束软件进程
- 浅谈驱动中强制结束进程的3种方法
- windows xp/7命令提示符强制结束指定进程
- 强制结束linux系统下的tomcat进程及tomcat重启的方法