|
本帖最后由 Tesla.Angela 于 2010-7-18 21:06 编辑
我说的“普通进程”,指的是没有进程保护,能获得PROCESS_ALL_ACCESS权限句柄的进程。
用ZwResumeProcess测试,如果进程已经死亡,会得到一个负数,如果进程没有死亡,会得到零。
BOOLEAN IsProcessDead(DWORD pid)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,0,pid);
PVOID pZwResumeProcess=GetProcAddress(LoadLibraryA("ntdll.dll"),"ZwResumeProcess");
LONG ntst=0;
__asm
{
push hProcess
call pZwResumeProcess
mov ntst,eax
}
CloseHandle(hProcess);
if (ntst==0)
return FALSE;
else
return TRUE;
}
代码没有测试过,应该是这样子吧。。。 |
|