taskmgr.exe 结束任务
比较简单,网上都有的,这里只是做个记录。
分析:
1、只要窗口标题不为空的程序,都会在任务列表中显示。
2、结束任务的时候,任务管理器(taskmgr.exe)在调用EndTask之前会先向目标窗口发送一个WM_CLOSE的消息,如果窗口仍未关闭,再来个EndTask直接干掉该进程,调用过程EndTask -> CsrClientCallServer -> ZwRequestWaitReplyPort。一般当一个进程启动时,父进程会调用CsrClientCallServer将该进程的句柄传递给子系统csrss.exe,因此所有进程都会在csrss.exe中留下句柄。当用任务管理器结束一个任务时,通过CsrClientCallServer向csrss.exe发送通知,csrss.exe收到通知并用其父进程传进来的句柄用NtTerminateProcess结束它。
防杀方法:
1、将窗口标题设置为空,就不会在任务列表中显示了。
SetWindowText( _T("") );
2、过滤掉WM_CLOSE消息。
BOOL CAntiCrackDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if( pMsg->message == WM_CLOSE ) // 过滤掉WM_CLOSE
{
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
3、在驱动里hook NtTerminateProcess。
上面的3个方法最好一起用,否则会有漏洞。
有兴趣的朋友可以来尝试杀下这个demo。
把文件解压到c盘根目录,

按照图中步骤1和2操作

