找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5943|回复: 7

关于PspTerminateThreadByPointer的疑问

[复制链接]

6

主题

103

回帖

0

精华

金牌会员

积分
680
发表于 2015-10-11 13:24:47 | 显示全部楼层 |阅读模式
在DriverA中有线程ThreadA,能不能在DriverB中使用PspTerminateThreadByPointer结束ThreadA。如果能,应该如何操作。

28

主题

116

回帖

0

精华

铜牌会员

积分
273
发表于 2015-10-12 15:13:32 | 显示全部楼层
找到PspTerminateThreadByPointer的地址就可以调用了

6

主题

103

回帖

0

精华

金牌会员

积分
680
 楼主| 发表于 2015-10-12 20:16:03 | 显示全部楼层
找到了,不能终止驱动创建的线程

78

主题

190

回帖

9

精华

贵宾会员

积分
15605
发表于 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确认偏移量的。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2015-10-14 22:26:54 | 显示全部楼层
不能终止驱动创建的线程 是 不可能的。

78

主题

190

回帖

9

精华

贵宾会员

积分
15605
发表于 2015-10-14 23:45:27 | 显示全部楼层
Tesla.Angela 发表于 2015-10-14 22:26
不能终止驱动创建的线程 是 不可能的。

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

6

主题

103

回帖

0

精华

金牌会员

积分
680
 楼主| 发表于 2015-10-19 23:38:25 | 显示全部楼层
找到解决方案,就是插入APC,再调用PsTerminateSystemThread,就能结束了。如果不是系统线程,直接调用PsTerminateSystemThread就可以结束掉。动态逆向了PChunter64,他也是插APC后,让系统线程自杀的。

6

主题

103

回帖

0

精华

金牌会员

积分
680
 楼主| 发表于 2015-10-19 23:39:39 | 显示全部楼层
找到解决方案,就是插入APC,再调用PsTerminateSystemThread,就能结束了。如果不是系统线程,直接调用PspTerminateThreadByPointer就可以结束掉。动态逆向了PChunter64,他也是插APC后,让系统线程自杀的。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表