冰刃的强力结束线程貌似很牛, 在网上找了几种驱动代码资料,自己整理编译后,貌似都不如冰刃的强,貌似调用的不是PspTerminateThreadByPointer
哪位大牛扔点代码或者指点一下小弟
山寨版的IceSword也不如它
- 标 题:IceSword是如何结束线程的?
- 作 者:escript
- 时 间:2009-01-07 16:09
- 链 接:http://bbs.pediy.com/showthread.php?t=80064
冰刃的强力结束线程貌似很牛, 在网上找了几种驱动代码资料,自己整理编译后,貌似都不如冰刃的强,貌似调用的不是PspTerminateThreadByPointer
哪位大牛扔点代码或者指点一下小弟
山寨版的IceSword也不如它
冰刃有两种结束线程的方式 Terminate和Kill(Force)
其中Terminate功能是使用ObOpenObjectByPointer 打开找到的线程对象,然后调用找到的原始的NtTerminateThread函数结束之
Kill(Force)功能,使用PsLookupThreadByThreadId 等函数获得线程对象,然后使用KeInsertQueueApc插入Kernel routine apc
在APC例程里,先调用PsTerminateSystemThread试图去结束系统线程,如果这里不是一个系统线程,就会失败,那么会接着调用之前找到的原始的NtTerminateThread函数来结束这个线程。此处的传入线程句柄是使用的PsGetCurrentThread,即-1,自结束