Inline Hook检测模块到驱动

本文介绍了在驱动中实现Inline Hook检测的过程,包括如何处理HOOK恢复的问题,以及使用深度递归进行函数调用链扫描。作者提到,虽然已经实现基本功能,但要达到产品级稳定还需进一步努力。同时,文章还提及堆栈回溯在定位恶意程序模块中的作用,并分享了计算被Patch掉的长度的具体算法。
摘要由CSDN通过智能技术生成

 by sudami

由于项目需要,驱动中要做所有的事情,所以我负责的一个小小的模块自然要全部在驱动中实现;

    小小的模块中一个小小的Inline Hook检测部分当然也不例外. 不过是要把某个函数调用链下所有调用过的函数都扫一遍,看是否存在恶意程序的干扰,自然用个深度递归就搞定,可是移植到驱动中,扫描是没问题,就怕那些变态的HOOK恢复不过来,还好,经过一小段时间的算法改进,差不多实现了. 当然,"实现了""产品级"是不可同日而语的,嘿嘿,但是总算前进了一小步吧,同时也期待wy同学的进展...

    还有,堆栈回溯也很好玩,其实没啥难度,关键是要仔细的理解,结合windbg+vm,然后自己写个驱动,下断点调试下,就知道那些寄存器中的东西,写code就简单了.这样做主要是回溯定位出恶意程序的模块,结合搜索隐藏模块那些东西,自然能找到他们...

    哎,高端调试很强大,稍微跟下,就能知道很多东西,看来以后得多学习~~~~

//
// 像 "微点/KV 2008"的JMP类型的HOOK,可能会在JMP前后留下一堆nop.
// 所以必须精确计算出要恢复的长度,无奈项目需要,检测模块全部得在
// 驱动中完成,所以把以前在R3写的艰难的移植到了驱动中,测试了下,还算
// 稳定,哎,一般到驱动做全模块的HOOK检测,稳定性降低了不少啊...
//           -- sudami 08/10/01
//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值