HanDs
管理员

[Visual Studio文章] VirtualProtect结束进程 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

很强大~只要能获得句柄(适用于只挂钩了 TerminateXXX 的保护),结束进程是难免的(让处理器结束进程)。看到后不敢独享,立即尝试编码,特和大家分享,并和大家一起膜拜Syf同学。
这道菜看起来很好吃,实际上也不容易吃(估计很容易实现,是我太菜了~)。主要问题是枚举堆。微软的Heap Walk Api太崩溃了,有两套,具体有什么区别也看不明白。直接VirtualProtect整个内存又会返回ERROR_INVALID_ADDRESS。干脆直接尝试。不多说了。直接上码。

BOOL VPKillProc(DWORD PID)
{
DWORD MaxAddr;
DWORD CurAddr;
DWORD PageSize;
DWORD OldProtect;

HANDLE hProc;

SYSTEM_INFO SysInfo;
MEMORY_BASIC_INFORMATION MemBasicInfo;

GetSystemInfo(&SysInfo);
MaxAddr = (DWORD)SysInfo.lpMaximumApplicationAddress;
PageSize = SysInfo.dwPageSize;
hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_QUERY_INFORMATION, FALSE, PID);

for (CurAddr = (DWORD)SysInfo.lpMinimumApplicationAddress; CurAddr <= MaxAddr; CurAddr += PageSize)
{

//
// Main loop: if the address is valid, make it unaccessible
//

if (VirtualQueryEx(hProc, (LPVOID)(CurAddr), &MemBasicInfo, sizeof(MEMORY_BASIC_INFORMATION)))
{
VirtualProtectEx(hProc, MemBasicInfo.BaseAddress, MemBasicInfo.RegionSize, PAGE_NOACCESS, &OldProtect);
CurAddr += MemBasicInfo.RegionSize;
}
}

//
// Check if the process is dead
//

CloseHandle(hProc);
if (OpenProcess(PROCESS_VM_READ, FALSE, PID))
{
CloseHandle(hProc);
return FALSE;
}

return TRUE;
}


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
VirtualProtect 结束进程
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复