360Safe驱动学习笔记和实现源码

参考文档:
1、发一个可编译,可替换的hookport代码
网址:https://bbs.pediy.com/thread-157472.htm
2、腾讯管家攻防驱动分析-TsFltMgr
网址:https://www.jianshu.com/p/718dd8a1dd27
3、总结一把,较为精确判断SCM加载

网址:https://bbs.pediy.com/thread-135988.htm

资料代码:
https://github.com/WINGS2709/360Safe

环境:
编译器:VS2013 + WDK8.1
版本:Win7(32位)
中断:sxe ld XXXXX.sys + lmvm XXXXX

驱动使用:
先加载HookPort再加载SelfProtection

前言:
1、HookPort看achillis分析即可,新旧版本区别在于新增两个地方:INT 4中断、过滤函数的优化(感兴趣的单独处理,不感兴趣的通用Hook框架)
2、SelfProtection实现对应的Fake函数模板然后再返回给HookPort执行
3、SelfProtection绝大部分原理翻看MJ0011和V校帖子基本有解答
4、简单介绍下HookPort和SelfProtection流程,具体实现看附件
5、有错误欢迎大家告诉我
6、建议用OneNote打开附件
7、项目仅供参考,代码自己都快忘记了
8、代码ShaodwSSDT部分有BUG,SSDT只分析了感兴趣的部分。很多嫌麻烦就没看了

原理介绍:
1、Hook前后对比图

360Safe驱动学习笔记和实现源码
360Safe驱动学习笔记和实现源码
2、HookPort的工作流程
HookPort负责构造一份空白的Hook模板(不负责编写对应的Fake函数,导出给SalfProtectionX使用)
可以理解为老板(HookPort)小弟(SelfProtectionX)
HookPort负责循环执行SalfProtectionX返回的Fake函数
360Safe驱动学习笔记和实现源码
360Safe驱动学习笔记和实现源码
理论上我们是可以有无数个SelfProtectionX,但是大数字最大限制16个
Hook模板结构如下(单向链表结构):
360Safe驱动学习笔记和实现源码
360Safe驱动学习笔记和实现源码
举个例子:
假设我们一共有SelfProtection1、SelfProtection2两个驱动设置了对应的Fake_CraeteProcess函数

360Safe驱动学习笔记和实现源码
360Safe驱动学习笔记和实现源码
原始CreateProcess->KiFastCallEntry->Filter_CreateProcess代{过}{滤}理函数->HookPort_DoFilter
循环将链表中所有Fake函数取出来并执行,直到链表下一个为零终止
必须全部所有Fake函数合法返回才算正确,其中一个返回错误都算错误

免责声明:
本工作室所有程序与文章均为游戏爱好者自发进行共同探讨研究为目的。
所有买家自愿赞助的费用全部用于服务器、网络租赁与维护、更新等费用,本工作室完全没有任何赢利性商业行为。
本工作室提到的所谓“购买”、“充值”、“续费”等实质为赞助方式,并非商业用语所指的行为模式。
如果对阁下(任何个人、单位、团体、机关、企事业单位等)产生冒犯或者侵害,请您立即告知我们,我们将改正模式。
海神科技 » 360Safe驱动学习笔记和实现源码

独家打造,全球唯一,每个细节我们都用心处理!

24小时自动发卡 联系QQ在线客服