软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 电脑教程 > 编程开发 > C/C++开发 > 暴力卸载进程的所有模块结束进程

暴力卸载进程的所有模块结束进程

今天有点无聊,又不想做作业,于是整天坐在电脑前……

翻看自己以前写过的代码时,发现有一份结束进程的代码是用NtUnmapViewOfSection卸载ntdll.dll来结束进程的。

那份代码有个不足之处,就是ntdll.dll基址在每个系统里都不相同,比如WinXP是0x7C920000,Win2003是0x7C930000

然后就产生了一个想法:

通过卸载内存中0x01000000到0x80000000范围之间的所有模块来导致进程崩溃退出。

代码如下:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com]
void UnloadAllModules(ULONG PID)
{
ULONG(WINAPI*ZwUnmapViewOfSection)(HANDLE ProcessHandle,ULONG BaseAddress);
int i;
ULONG base;
HANDLE hProc;
(FARPROC&)ZwUnmapViewOfSection=GetProcAddress(GetModuleHandle("ntdll.dll"),"ZwUnmapViewOfSection");
hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);
for(i=0x1;i<=0x80;i++)
{
base=i*0x1000000;
ZwUnmapViewOfSection(hProc,base);
}
CloseHandle(hProc);
}

这样就避免了硬编码不能通用的问题了。

原文来源:Zhi-Liang 程序小屋

    相关阅读
    网友评论