首页
社区
课程
招聘
应用层和内核钩子函数的同步
发表于: 2010-11-19 17:33 13811

应用层和内核钩子函数的同步

2010-11-19 17:33
13811
最近研究内核钩子,发现恢复钩子等算是比较简单的,大部分钩子可以对比内存和真实文件的差异找到,不过有的钩子可能被线程之类的东西监视着,也有通用的办法,在钩子地址处下内存访问断点,
WINDBG很快就断在读写这个内存的地方,基本上就是监视线程了,这个时候内存补丁就相当无敌了,改变原程序的逻辑,一切监控就无从说起了....
好像说偏题了 呵呵 标题是应用层和内核钩子函数同步 这个是要实现具体的功能了,上面可以说是破坏钩子的功能,实现大部分时候是比破坏困难些...
当时写这个程序的时候,第一个遇到的问题就是同步,
当时脑袋里面想DeviceIoControl是R3主动去通知R0的函数,那如果为R0的代理函数截获到数据后怎么主动告诉R3呢?
后来知道事件可以解决这个问题,R3去等待一个R0激活的事件,等待完后去调用DeviceIoControl获取信息。
随后的问题就是函数截获的数据放到那里去呢?
首先想到的是全局结构变量,但是函数是随机调用的,多线程先后调用HOOK函数的时候,全局变量很快就会被改变?这里想到2个方案可以解决,一个是全局双向链表,一个是快速互斥体FastMutex,后来经过考虑和讨论后发现后者是比较容易实现的。
下面有个上面思路的图示和应用层和驱动的代码
里面有头文件路径是写死的 如果要用的话需要调整下 还有个加白名单黑名单的功能没实现
想用二分法去做这个库 最近在研究
这个驱动代码是摘自ROOTKITS-Windows内核的安全防护中的HideProcessHookMDL
为在此基础上修改 我感觉利用现成的稳定代码 然后扩充或者修改成自己的需求是快速高效的好办法,其实C++的继承和多态也有这样的思想在里面 呵呵  

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 302
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大神V5~~

你最近不是在研究催眠术吗?
2010-11-19 17:43
0
雪    币: 217
活跃值: (68)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
周末带书回去研究 到时候先催眠你哦 ....
其实你已经被催眠了 嘿嘿
2010-11-19 17:45
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不懂,呵呵。随风飘过。
2010-11-19 23:57
0
雪    币: 327
活跃值: (1065)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
图文并茂,把内核与应用层之间的同步说得很明白。
2011-7-21 01:45
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
帮助很大,谢谢分享
2012-2-9 19:34
0
雪    币: 1314
活跃值: (393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
图文并茂 非常不错
2012-2-9 22:14
0
游客
登录 | 注册 方可回帖
返回
//