首页
社区
课程
招聘
[求助]IceSword是如何结束线程的?
发表于: 2009-1-7 16:09 7112

[求助]IceSword是如何结束线程的?

2009-1-7 16:09
7112
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
不行你就插APC啊....

这个下个断点,不懂的一路跟下去就懂了. 跟到PspExitThread继续跟....
2009-1-7 17:40
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
3
冰刃有两种结束线程的方式 Terminate和Kill(Force)
其中Terminate功能是使用ObOpenObjectByPointer 打开找到的线程对象,然后调用找到的原始的NtTerminateThread函数结束之

Kill(Force)功能,使用PsLookupThreadByThreadId 等函数获得线程对象,然后使用KeInsertQueueApc插入Kernel routine apc
在APC例程里,先调用PsTerminateSystemThread试图去结束系统线程,如果这里不是一个系统线程,就会失败,那么会接着调用之前找到的原始的NtTerminateThread函数来结束这个线程。此处的传入线程句柄是使用的PsGetCurrentThread,即-1,自结束
2009-1-7 18:29
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢大牛指点
2009-1-8 11:50
0
游客
登录 | 注册 方可回帖
返回
//