首页
论坛
课程
招聘
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝

[原创]不HOOK任何函数,让任务管理器、XueTr、360进程管理器无法结束保护进程

2011-5-29 11:17 49712

[原创]不HOOK任何函数,让任务管理器、XueTr、360进程管理器无法结束保护进程

2011-5-29 11:17
49712
【提示】能加驱动进内核,就没必要弄EXE了,所以我个人觉得没啥实际用途,仅供观看

Windows会给每一个进程建立一个EPROCESS结构,给每一个线程建立ETHREAD结构,EPROCESS结构第一个成员是KPROCESS结构,ETHREAD结构第一个成员是KTHREAD结构。每个进程的线程的ETHREAD结构都会按下图所示链接起来:


里面有两条链表。通过遍历这两条链表,可以得到一个进程所有的线程。Windows在执行线程调度时,不会去管这两条链表。只有当新建一个线程时,会加入到链表中,一个线程退出时,会从链表中移除。

如果在EPROCESS中将这两条链表置空,会发生什么事呢?

以下是验证步骤:

【注意】请先关闭360安全卫士,以免加载驱动时提示。驱动代码中用了一堆的硬编码,所以请确保操作系统为Windows XP SP3 中文版,否则可能蓝屏。

1.编译以下代码为haha.exe
/*
* 【作者:KiDebug】
* 【空间:http://hi.baidu.com/KiDebug/】
*/
#include <Windows.h>

int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
        //这个循环是用来证明进程没有被结束,不是重点,请无视!
        while (1)
        {
                MessageBoxA(NULL,"关不了,气死你!~","哈哈!~",MB_OK);
        }
        return 0;
}

双击打开haha.exe,它会不断地调用MessageBox弹出对话框,此时任务管理器、XueTr、360进程管理器都可以结束haha.exe

2.确保haha.exe可以弹出对话框,然后再编译以下代码为ProtectHaha.sys,利用InstDrv.exe加载ProtectHaha.sys,依次点击安装、启动、停止、卸载
/*
* 【作者:KiDebug】
* 【空间:http://hi.baidu.com/KiDebug/】
*/
#include <ntddk.h>

void DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING  RegistryPath)
{
        __asm
        {
                mov ebx,PsInitialSystemProcess
                mov ebx,[ebx]
                lea ebx,[ebx+88h]                                //+0x088 ActiveProcessLinks : _LIST_ENTRY
L1:                mov ebx,[ebx]                                        //遍历ActiveProcessLinks,找haha.exe的EPROCESS
                cmp dword ptr [ebx+0ECh],61686168h
                jnz L1
                cmp dword ptr [ebx+0F0h],6578652eh                //68 61 68 61 2e 65 78 65 haha.exe
                jnz L1

                //88h、50h、190h、194h都是硬编码,适用于Windows XP SP3
                lea ebx,[ebx-88h]                                //EBX为haha.exe的EPROCESS
                lea eax,[ebx+50h]                                //nt!_KPROCESS
                mov [ebx+50h],eax                                //+0x050 ThreadListHead : _LIST_ENTRY
                mov [ebx+54h],eax                                //置为空链
                lea eax,[ebx+190h]                                //nt!_EPROCESS
                mov [ebx+190h],eax                                //+0x190 ThreadListHead : _LIST_ENTRY
                mov [ebx+194h],eax                                //置为空链
        }

        DriverObject->DriverUnload = DriverUnload;
        return STATUS_SUCCESS;
}
3.打开任务管理器,选中haha.exe,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;
4.打开XueTr,在“进程”窗口中选中haha.exe按右键,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;刷新,再次右键,点击“强制结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;
5.打开360安全卫士(8.0.0.2001),启动“功能大全”里面的“进程管理器”,选中haha.exe,点击“关闭程序”,haha.exe无法结束,仍然可以不停地弹对话框;

【注意】
1.有可能点击对话框右上角的关闭按钮后,haha.exe会假死。这时先随便点下桌面或其他什么地方,再点对话框的“确定”按钮,就又活过来了。
2.如果要应用到其他进程上,请确保驱动启动后这个进程不会新建线程,否则“强制结束进程”可以结束掉新建线程,可能会造成进程假死。
3.haha.exe中只有一个线程,对于其他进程,在EPROCESS中将两条链表置空后需要将链表中第一个线程和最后一个线程的ThreadListEntry链接起来。
4.对于其他进程,置空链表时需要考虑同步问题。

如何结束haha.exe呢?
在XueTr“进程”窗口中选中haha.exe按右键,点击“查看进程线程”,把看到的线程全部结束即可。
WS点可以把线程栈空间设小点,然后创建成百上千个线程……

[公告]看雪论坛2020激励机制上线了!多多参与讨论可以获得积分快速升级?

上传的附件:
最新回复 (46)
雪    币: 220
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
广海混沌 活跃值 2011-5-29 12:03
2
0
呵呵 吃完午饭来看看 获益
雪    币: 302
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zxiso 活跃值 2011-5-29 12:19
3
0
站位。。慢慢来看。
支持lz
雪    币: 2362
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zapline 活跃值 2011-5-29 12:22
4
0
新建进程会不会出问题?
这样做太危险了...
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-5-29 12:28
5
0
新建进程没问题。注意3和4两点新建线程也没问题。

haha.exe只有一个线程,所以上面驱动代码很精简。
雪    币: 49
活跃值: 活跃值 (13)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2011-5-29 12:34
6
0
#include <Windows.h>

int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
  while (1)
  {
    MessageBoxA(NULL,"关不了,气死你!~","哈哈!~",MB_OK);
  }
  return 0;
}
构想中,这样的话,那写驱动写个死循环,一卸载就蓝
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-5-29 12:38
7
0
我帖子的重点是将这两条链表置空,不是这个haha.exe里面的死循环,这个循环是用来证明进程没有被结束。
雪    币: 1776
活跃值: 活跃值 (83)
能力值: ( LV12,RANK:480 )
在线值:
发帖
回帖
粉丝
熊猫正正 活跃值 9 2011-5-29 12:50
8
0
嘿嘿,过来看看~~
雪    币: 154
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leeonegor 活跃值 2011-5-29 13:04
9
0
KiDebug越来越Yin荡了。。。
雪    币: 582
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
小覃 活跃值 2 2011-5-29 13:09
10
0
LZ好淫..荡.......
雪    币: 71
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mumaren 活跃值 2011-5-29 15:20
11
0
学习一下中

3q
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-5-29 16:03
12
0
雪    币: 1548
活跃值: 活跃值 (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天涯一鸿 活跃值 2011-5-29 16:59
13
0
都是通过遍历ThreadListHead来投递APC的所以没法结束吧?这又是看WRK看出来的么……
雪    币: 248
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
tornodo 活跃值 1 2011-5-29 18:40
14
0
吃过饭仔细品品。
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-5-29 19:56
15
0
WRK是个好东西啊!
雪    币: 1162
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
ycmint 活跃值 5 2011-5-29 21:17
16
0
摸链表的行为 r0 和r3 都用的地方很多,但大多是像lz 这样 猥琐行为...
谢谢lz 分享.....
雪    币: 0
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 活跃值 2 2011-5-29 23:48
17
0
看看.. :)
雪    币: 429
活跃值: 活跃值 (219)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
ppbb 活跃值 2011-5-30 00:24
18
0
直接写在进程内存呢
雪    币: 219
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wufenjack 活跃值 2011-5-30 08:28
19
0
好东西,学习了,受益
雪    币: 284
活跃值: 活跃值 (14)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
飞心男孩 活跃值 2 2011-5-30 09:11
20
0
所以说伟大的内存清0还是有市场的
雪    币: 236
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
YFLK 活跃值 2011-5-30 09:24
21
0
楼主的思路很新颖。学习了
雪    币: 244
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
听雨前缘 活跃值 2011-5-31 11:11
22
0
只能膜拜,
雪    币: 174
活跃值: 活跃值 (10)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
zouzhiyong 活跃值 3 2011-5-31 11:29
23
0
学习,mark~
雪    币: 599
活跃值: 活跃值 (11)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
zhaokang 活跃值 3 2011-5-31 11:46
24
0
硬编码,过来好好看看呀
雪    币: 121
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
rosetta 活跃值 1 2011-5-31 18:40
25
0
膜拜.收藏学习。
雪    币: 3041
活跃值: 活跃值 (63)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Crakme 活跃值 2011-5-31 20:10
26
0
   这方法很猥琐啊
雪    币: 234
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wincwinc 活跃值 2011-6-1 09:47
27
0
测试,
我有多少现金 Kx ?
结果出来...
雪    币: 204
活跃值: 活跃值 (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
dkxzl 活跃值 1 2011-6-2 10:58
28
0
关闭一个进程,并不是由其他进程强行关闭,而是通知这进程本身的线程要他自己结束自己,当这个进程所有的线程全部自行关闭后,才释放其进程空间,你把线程连表删除了,结束进程遍历这个结构自然就找不到了,这才是关闭进程的概念,很多书上都没把这概念说清楚,都是说强行关闭。不过还好有其他的结构中存储这些线程数据,我一个个的把这些进程的线程一个个退出,也变相的把这些进程给结束了。
雪    币: 175
活跃值: 活跃值 (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
无泪城 活跃值 2011-6-2 12:57
29
0
断链
雪    币: 208
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hwbcs 活跃值 2011-6-2 13:09
30
0
果然很YD,lz 这样MJ会不会咬你
雪    币: 273
活跃值: 活跃值 (18)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
代码疯子 活跃值 3 2011-6-2 22:45
31
0
恩 说的有道理
雪    币: 47
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
付崇碧 活跃值 2011-6-5 00:57
32
0
LZ好邪恶哦。
雪    币: 49
活跃值: 活跃值 (13)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 活跃值 9 2011-6-5 22:40
33
0
再次顶起,哈哈
雪    币: 902
活跃值: 活跃值 (17)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
rrrfff 活跃值 2011-6-6 18:32
34
0
硬编码?弄个通用的出来嘛。
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-6-6 19:59
35
0
自己动手丰衣足食
雪    币: 252
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
superkofzx 活跃值 1 2011-6-8 23:18
36
0
LZ高手啊。。。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
winasm 活跃值 2011-6-10 15:56
37
0
这个比较牛逼,不错!
雪    币: 463
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
KiDebug 活跃值 4 2011-6-10 16:32
38
0
不知能否设个精?
雪    币: 349
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Osleti 活跃值 2011-6-10 17:50
39
0
WS点可以把线程栈空间设小点,然后创建成百上千个线程……

杀了我吧..我重启可以不?大哥..靠..
雪    币: 213
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pady 活跃值 2011-6-14 11:48
40
0
再次证明思路最重要..尽管可以称作“猥琐”
雪    币: 62
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxtailaji 活跃值 2011-6-15 20:53
41
0
伪造链表 有什么效果?
雪    币: 109
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GzsIceberg 活跃值 2011-7-14 15:42
42
0
不错
学习了
雪    币: 23
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
雅蠛蝶 活跃值 2011-7-14 20:52
43
0
猥琐。。。。
雪    币: 78
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ronging 活跃值 2012-3-28 10:21
44
0
其它的存储线程数据的结构是哪些结构?
雪    币: 14
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yamidie 活跃值 2012-7-10 23:22
45
0
都驱动了 还有什么不能实现的啊
雪    币: 564
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Hoiker 活跃值 2012-8-30 16:46
46
0
感觉确实到猥琐
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
caocunt 活跃值 2012-10-10 10:33
47
0
学习了,代码有创意啊~
游客
登录 | 注册 方可回帖
返回