全是早已公开的方法了吧
遍历进程通过Process32First/Process32Next进行。
结束进程使用的基本方法:
1.得到进程句柄
尝试用ZwOpenProcess(PROCESS_ALL_ACCES,PID+1)的方式得到进程句柄(对个别比较白痴的ZwOpenProcess SSDTHOOK,这个招就可以骗过了)。
如失败:
ZwQuerySystemInformation(SystemHandleInformation)遍历系统所有句柄,对于其中的进程类的句柄(一般来说或多或少总是存在的,比如csrss.exe进程中存在大量其他进程对象的句柄)
尝试ZwOpenProcess(PROCESS_DUP_HANDLE)获得句柄所有者进程的句柄,并使用ZwDuplicateObject将句柄继承过来,找到其中代表所需要结束的进程的句柄
这样就用曲线的方式得到了所需的进程句柄,从而骗过了某些杀毒软件对ZwOpenProcess的拦截
2.如是瑞星的进程(Ravmon.exe、CCenter.exe、RavmonD.exe、Rav.exe),采用早已公开的结束方法:
ZwCreateJobObject->ZwAssignProcessToJobObject->ZwTerminateJobObject
这个方法的过程不用仔细写了吧,代码满天飞了。
如果这个失败才直接尝试ZwTerminateProcess
3.调用NtUnmapViewOfSection,强制将目标进程中ntdll.dll的模块卸除,导致目标进程崩溃,达到结束进程的目的。
4.对avp.exe以及360的进程进行IFEO劫持。
以上其实全都是早就已经公开了N久的方法,网上早就已经代码满天飞了。
无聊的是作者还加壳,还是用VB写的,根本就是浪费我逆向的时间。