luqi_44 发表于 2015-10-11 13:24:47

关于PspTerminateThreadByPointer的疑问

在DriverA中有线程ThreadA,能不能在DriverB中使用PspTerminateThreadByPointer结束ThreadA。如果能,应该如何操作。

gfw 发表于 2015-10-12 15:13:32

找到PspTerminateThreadByPointer的地址就可以调用了

luqi_44 发表于 2015-10-12 20:16:03

找到了,不能终止驱动创建的线程

tangptr@126.com 发表于 2015-10-14 18:49:30

这么干:(假设要结束的线程的ETHREAD是变量txtd)
*(PULONG64)((ULONG64)txtd+OFFSET_CROSS_THREAD_FLAGS)=0x9;
PspTerminateThreadByPointer(txtd,STATUS_SUCCESS,TRUE);
注意OFFSET_CROSS_THREAD_FLAGS是硬编码,要用WinDbg确认偏移量的。

Tesla.Angela 发表于 2015-10-14 22:26:54

不能终止驱动创建的线程 是 不可能的。

tangptr@126.com 发表于 2015-10-14 23:45:27

Tesla.Angela 发表于 2015-10-14 22:26
不能终止驱动创建的线程 是 不可能的。

目测只是因为驱动创建的线程都是系统线程,PspTerminateThreadByPointer不能结束之的关系吧。。。所以只要用DKOM欺骗之或者插APC来PsTerminateSystemThread就能结束

luqi_44 发表于 2015-10-19 23:38:25

找到解决方案,就是插入APC,再调用PsTerminateSystemThread,就能结束了。如果不是系统线程,直接调用PsTerminateSystemThread就可以结束掉。动态逆向了PChunter64,他也是插APC后,让系统线程自杀的。

luqi_44 发表于 2015-10-19 23:39:39

找到解决方案,就是插入APC,再调用PsTerminateSystemThread,就能结束了。如果不是系统线程,直接调用PspTerminateThreadByPointer就可以结束掉。动态逆向了PChunter64,他也是插APC后,让系统线程自杀的。
页: [1]
查看完整版本: 关于PspTerminateThreadByPointer的疑问