前言:之前有人发过:【首发但非原创】支持x64,反一切R3下的常规Hook,完全基于Baby大佬的KiFastSystemCall,本质上,这个是直接调用Wow64SystemService(x86命令)->Wow64Transition(x86命令)->KiFastSystemCall(x64命令)实现API命令的底层调用(这种方法可以被称为一种“天堂之门”,实际上是在调用syscall stub)实际上,这种方法并不是完全的不能Hook,而是对它的Hook成本极高,存在一些操作难度。本程序只是一个小小的测试Demo,但是基本上已经可以实现具体的使用(如果想要了解更多可以参考ScyllaHide的原理)温馨提示:本程序当且仅当在x64系统下有效,x86系统请不要尝试,否则会引起程序错误!本代码编写环境:win11,加上本人汇编能力有限,可能存在一些不兼容的情况,具体可自行测试。正文:在开始谈论我们的Hook之前,我们先来了解了解NtReadVirtualMemory的实际工作原理(注意:下面的讨论全部基于x64系统,R3下NtReadVirtualMemory和ZwReadVirtualMemory的定义完全相同):这个call跟进去是一行很简单的汇编(本质上,这个就是Wow64SystemService函数,这个将调用信息跳转到wow64cpu.dll,注意,wow64cpu已经不是x32的Dll,是一个x64的Dll):接着便来到了Wow64Transition(jmp 0033:wow64cpu.dll+6009这个将会跳转到wow64cpu.dll+6009这行命令,0033:这个会将段寄存器CS改为0033,CPU的汇编执行模式也被调整为x64汇编的模式):接着wow64cpu会对内核调用号进行判断,然后包装参数。最后终于看到真正的x64的ntdll,由它call内核:我们很容易想到:对于x86程序,我们其实可以通过Hook Wow64Transition来实现一个大Hook。具体Hook代码很简单:基本Hook处理代码如下:具体原理可以使用CE查看,可以想想我为什么这样写,也可以自己实现个更好的。Demo测试结果(我好像只Hook了一处,实际上我可能Hook了几乎所以的API,但是这个NtRaiseException命令似乎修复了我们的Hook,这里我没有深入研究,具体可以自己研究):如果屏蔽掉我们的测试部分代码,程序很快就会因为拦截到过多的消息函数而堆栈崩溃(如何优化请自行思考):
欢迎来到可可资源网 免费分享实用的学习资源及技术教程 技术爱好者的栖息之地
✌可可资源网✌商务合作
下载地址
转载:感谢您对可可资源网网站平台的认可,以及对我们原创作品以及文章资源的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源可可资源网”。https://www.100keke.cn/9184a15150bb.html
猜你还喜欢
- 2024-11-10 Chatbox API工具v1.6.0绿色版
- 2024-04-09 安卓逆向神器NP管理器v3.1.3
- 2024-01-31 无需好口才解决沟通难问题
- 2024-01-29 开发数据产品+AI产品通关上岸
- 2024-01-25 图片无损放大Topaz Gigapixel AI
- 2024-01-20 程序员的AI必修AIGC全栈实战
- 2023-12-08 安卓王者战力查询助手v7.1
- 2023-11-03 安卓驾考题库大全v2.2.8精简版
- 2023-10-06 Google Guava深入浅出课程
- 2023-09-09 饿了么点蜜雪冰城领雪王音乐盒
- 2023-08-31 安卓扫描王全能宝v6.7.88高级版
- 2023-06-25 安卓扫描王全能宝v4.11.61高级版
- 站内搜索
-
- 热门资源
- 随机标签