找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 1902|回复: 15

《WIN64驱动教程》补充[6]:关于商业级别的进程保护

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2014-6-2 19:16:59 | 显示全部楼层 |阅读模式
作者:Tesla.Angela

进程保护在技术上是非常简单的,不过要做到商用级别的,比较难。
接下来总结一下我的技术方案,总用户数超过了10万级别,基本没有蓝屏,也没有太多异常。

首先说说32位的XP和2003。
XP和2003没有标准的进程保护接口,我用的方法是Hook PspTerminateThreadByPointer。
定位PspTerminateThreadByPointer可以通过PsTerminateSystemThread,这个网上有很多代码。
不过需要注意的是,PspTerminateThreadByPointer在XP和2003上的函数原型并不相同。
XP上的原型是:PspTerminateThreadByPointer(PETHREAD Thread, NTSTATUS ExitStatus)
2003上的原型是:PspTerminateThreadByPointer(PETHREAD Thread, NTSTATUS ExitStatus, BOOLEAN DirectTerminate)
至于HOOK的安全性,实在不必太纠结,关闭内存写保护+提升IRQL+自旋锁的方法,基本上就没有蓝屏的了。
如果非要担心,可以使用两字节二段跳的方法:
先用个2字节的短跳,跳到PspTerminateThreadByPointer-2的位置,再来个5字节的长跳,跳到ProxyPspTerminateThreadByPointer。
修改函数的2个字节,可以用InterlockedExchange16,这是个原子操作,就不用担心修改的时候正好有个线程执行到指令的一半。

再说说64位的XP和2003。
64位的XP和2003,从内核的角度看其实是一个操作系统。因为他们的内核文件版本号都是3790。
貌似从WIN2003X64SP1开始,就有PATCHGUARD了,所以HOOK内核API肯定是行不通的。
我个人建议的方法是修改ETHREAD的CrossThreadFlags,把这个标识的bit 4(SystemThread)设置为1即可。

最后说WIN7、WIN8/8.1(不考虑VISTA)
这两个系统系统都可以通过使用ObRegisterCallbacks标准方法实现,代码教程里有,具体就不多说了。不过我要说说注意的地方。
1.去掉以下权限:PROCESS_TERMINATE、PROCESS_VM_WRITE、PROCESS_VM_OPERATION、PROCESS_SET_QUOTA、PROCESS_SET_INFORMATION、PROCESS_SUSPEND_RESUME。
2.放过audiodg.exe和dwm.exe对目标进程的操作。否则目标进程可能会异常,比如无法播放声音,失去AERO效果。
游客,如果您要查看本帖隐藏内容请回复

1

主题

77

回帖

0

精华

铂金会员

积分
1972
发表于 2014-8-7 00:31:38 | 显示全部楼层
两字节二段跳的方法为什么比之前那个方法好啊

1

主题

77

回帖

0

精华

铂金会员

积分
1972
发表于 2014-8-11 22:09:35 | 显示全部楼层
xp,server 2003也是hook那个函数么

1

主题

77

回帖

0

精华

铂金会员

积分
1972
发表于 2014-8-11 22:09:48 | 显示全部楼层
mlyknown 发表于 2014-8-11 22:09
xp,server 2003也是hook那个函数么

64位的

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
 楼主| 发表于 2014-8-11 22:22:00 | 显示全部楼层
64位2003没啥好的办法保护进程。HOOK会蓝屏。但又没有进程回调可以用。

0

主题

37

回帖

0

精华

铜牌会员

积分
61
发表于 2024-1-1 12:22:07 | 显示全部楼层
学习了

0

主题

11

回帖

0

精华

铜牌会员

积分
95
发表于 2024-1-3 23:44:55 | 显示全部楼层

学习了

0

主题

41

回帖

0

精华

铜牌会员

积分
116
发表于 2024-1-4 09:11:23 | 显示全部楼层
学习了

0

主题

21

回帖

0

精华

铜牌会员

积分
53
发表于 2024-1-16 18:49:08 | 显示全部楼层
学习学习

0

主题

1

回帖

0

精华

初来乍到

积分
11
发表于 2024-1-24 15:35:40 | 显示全部楼层
dd

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2024-1-26 09:48:04 | 显示全部楼层
我来学习

0

主题

47

回帖

0

精华

贵宾会员

积分
89
发表于 2024-1-26 14:08:19 | 显示全部楼层
2024补充学习

0

主题

29

回帖

0

精华

初来乍到

积分
39
发表于 2024-2-8 21:37:46 | 显示全部楼层
学习一下

0

主题

39

回帖

0

精华

铜牌会员

积分
49
发表于 2024-2-15 08:07:42 | 显示全部楼层
学习一下,谢谢楼主

0

主题

45

回帖

0

精华

铜牌会员

积分
53
发表于 2024-3-13 16:51:41 | 显示全部楼层
学习一下

0

主题

92

回帖

0

精华

铜牌会员

积分
111
发表于 2025-1-25 16:20:44 | 显示全部楼层
认真学习一下
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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