首页
社区
课程
招聘
[分享]编写驱动保护进程
发表于: 2019-2-22 11:55 18507

[分享]编写驱动保护进程

2019-2-22 11:55
18507

内核保护进程

使用驱动编写SSDT HOOK保护进程不被附加(win7下)

 

结果如图使用CE附加被保护的记事本程序会报错。


实现原理

三环程序附加进程最终会通过内核层的NtOpenprocess函数,内核层HOOK此函数判断PID是否为保护进程PID来返回结果达到保护目的。

NtOpenprocess函数的第四个参数为结构体,其中UniqueProcess字段为进程PID,根据这个字段判断PID

驱动的实现:

构建自己的MyNtOpenProcess函数与NtOpenProcess函数原型需一致,判断上述字段

构建好自己的函数后,需要获取当前NtOpenProcess地址

首先查看SSDT表(System Services Descriptor Table,系统服务描述符表)

typedef structServiceDescriptorTable{

   PVOIDServiceTableBase; //System Service Dispatch Table 的基地址

   PVOID ServiceCounterTable(0);//包含着SSDT 中每个服务被调用次数的计数器。这个计数器一般由sysenter更新。

   unsigned intNumberOfServices;//由ServiceTableBase 描述的服务的数目。

   PVOID ParamTableBase; //包含每个系统服务参数字节数表的基地址-系统服务参数表

   }  

搭建环境加载符号可以使用windbg指令查看dd poi [KeServiceDescriptorTable]

查看NtOpenProcess的调用号 U ZwOpenProcess指令


查看到调用号为0xBE(win7其他版本的调用号可能一样),编写代码获取


使用MmGetSystemRoutineAddress函数可以获取原函数NtOpenProcess的地址


当当前地址与原地址不同时,该函数已经被HOOK


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (14)
雪    币: 195
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发 支持
2019-2-22 12:33
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
快乐的萌小萌 沙发 支持[em_39]
支持
2019-2-22 13:05
0
雪    币: 1564
活跃值: (3572)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
4
OpenProcess(PID+1) 
2019-2-22 13:15
1
雪    币: 1535
活跃值: (695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享~
2019-2-22 14:02
0
雪    币: 2306
活跃值: (3427)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
6
xiaofu OpenProcess(PID+1) [em_86]
我懂= =。。。
最后于 2019-2-22 14:05 被Cc28256编辑 ,原因:
2019-2-22 14:05
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
蟹蟹
2019-2-22 15:11
0
雪    币: 168
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持
2019-2-22 15:23
0
雪    币: 965
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持
2019-3-7 09:38
0
雪    币: 6832
活跃值: (1637)
能力值: ( LV5,RANK:67 )
在线值:
发帖
回帖
粉丝
10
你安装驱动不报错嘛
2019-3-22 14:38
0
雪    币: 225
活跃值: (73)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
这个64位下问题有点恶心人!
2019-3-27 23:01
0
雪    币: 6977
活跃值: (1786)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
xiaofu OpenProcess(PID+1) [em_86]
想问下这个pid+1是什么意思,和原来的pid有关系吗?
2019-4-4 11:38
0
雪    币: 97
活跃值: (599)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个能直接用工具恢复的吧我记得
2020-10-5 21:35
0
雪    币: 6307
活跃值: (3837)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
有支持win8.1或者win10的吗?
2021-6-23 07:52
0
雪    币: 7433
活跃值: (2034)
能力值: ( LV4,RANK:42 )
在线值:
发帖
回帖
粉丝
15
TopC 想问下这个pid+1是什么意思,和原来的pid有关系吗?
pid 是对齐的
2021-6-23 08:29
0
游客
登录 | 注册 方可回帖
返回
//