找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4365|回复: 1

如何杀死指定的内核线程?

[复制链接]

1

主题

29

回帖

0

精华

铜牌会员

积分
94
发表于 2014-5-17 20:45:03 | 显示全部楼层 |阅读模式
想要终止别的驱动里的几个内核线程

NtTerminateThread
PsTerminateSystemThread
PspTerminateThreadByPointer

以上这三个函数有什么区别?
到底是要用哪个函数?
调用前还需不需要插APC?

请大神指教!

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2014-5-17 20:55:59 | 显示全部楼层
(以下答案不保证完全正确,只按照经验回答)

NtTerminateThread:这个是传入句柄结束“用户模式”线程,用来结束内核线程肯定没戏。
PsTerminateSystemThread:这是结束内核线程专用的,不过只有1个参数,只能在内核线程里调用。可以通过给线程投递APC的方式,强制内核线程调用它。
PspTerminateThreadByPointer:这个是NtTerminateThread的后续实现,貌似也是无法结束内核线程的。当年只会VB的时候,给线程设置上SYSTEM_THREAD的标志,就能阻止用PspTerminateThreadByPointer结束线程。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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