资源描述:
《让软件在任务管理器中无法结束任务》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本帖最后由wulongxiang2009于2011-5-2923:39编辑ByKiDebugMay28Windows会给每一个进程建立一个EPROCESS结构,给每一个线程建立ETHREAD结构,EPROCESS结构第一个成员是KPROCESS结构,ETHREAD结构第一个成员是KTHREAD结构。每个进程的线程的ETHREAD结构都会按下图所示链接起来:里面有两条链表。通过遍历这两条链表,可以得到一个进程所有的线程。Windows在执行线程调度时,不会去管这两条链表。只有当新建一个线程时,会加
2、入到链表中,一个线程退出时,会从链表中移除。如果在EPROCESS中将这两条链表置空,会发生什么事呢?以下是验证步骤:【注意】请先关闭360安全卫士,以免加载驱动时提示。驱动代码中用了一堆的硬编码,所以请确保操作系统为WindowsXPSP3中文版,否则可能蓝屏。1.编译以下代码为haha.exe/**【作者:KiDebug】*【空间:http://hi.baidu.com/KiDebug/】*/#include<Windows.h>intAPIENTRYwWinMain(HINSTANCEhI
3、nstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){while(1){MessageBoxA(NULL,"关不了,气死你!~","哈哈!~",MB_OK);}return0;}双击打开haha.exe,它会不断地调用MessageBox弹出对话框,此时打开任务管理器,可以结束haha.exe2.确保haha.exe可以弹出对话框,然后再编译以下代码为ProtectHaha.sys,利用InstDrv.exe加载ProtectHa
4、ha.sys,依次点击安装、启动、停止、卸载/**【作者:KiDebug】*【空间:http://hi.baidu.com/KiDebug/】*/#include<ntddk.h>voidDriverUnload(INPDRIVER_OBJECTDriverObject){}NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverObject,INPUNICODE_STRINGRegistryPath){__asm{movebx,PsInitialSystemProc
5、essmovebx,[ebx]leaebx,[ebx+88h]//+0x088ActiveProcessLinks:_LIST_ENTRYL1:movebx,[ebx]//遍历ActiveProcessLinks,找haha.exe的EPROCESScmpdwordptr[ebx+0ECh],61686168hjnzL1cmpdwordptr[ebx+0F0h],6578652eh//686168612e657865haha.exejnzL1//88h、50h、190h、194h都是硬编码,适用
6、于WindowsXPSP3leaebx,[ebx-88h]//EBX为haha.exe的EPROCESSleaeax,[ebx+50h]//nt!_KPROCESSmov[ebx+50h],eax//+0x050ThreadListHead:_LIST_ENTRYmov[ebx+54h],eax//置为空链leaeax,[ebx+190h]//nt!_EPROCESSmov[ebx+190h],eax//+0x190ThreadListHead:_LIST_ENTRYmov[ebx+194h],
7、eax//置为空链}DriverObject->DriverUnload=DriverUnload;returnSTATUS_SUCCESS;}复制代码3.打开任务管理器,选中haha.exe,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;4.打开XueTr,在“进程”窗口中选中haha.exe按右键,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;刷新,再次右键,点击“强制结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;5.打开360安全
8、卫士(8.0.0.2001),启动“功能大全”里面的“进程管理器”,选中haha.exe,点击“关闭程序”,haha.exe无法结束,仍然可以不停地弹对话框;【注意】1.有可能点击对话框右上角的关闭按钮后,haha.exe会假死。这时先随便点下桌面或其他什么地方,再点对话框的“确定”按钮,就又活过来了。2.如果要应用到其他进程上,请确保驱动启动后这个进程不会新建线程,否则“强制结束进程”可以结束掉新建线程,可能会造成进程假死。3.haha.exe中只有一个线程,对于其他进程,在EPROCESS中