龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 872|回复: 0

分享一下win10 RS5的PatchGuard部分攻击方法

[复制链接]

11

主题

11

回帖

25

积分

编程入门

Rank: 1

龙马币
32
小子不忘记 | 显示全部楼层 |阅读模式

系统环境是win10 1809 17763.437

我没有研究怎么解密上下文,我主要是想办法得到Pg蓝屏时候的堆栈,然后根据对应的方法找对应的攻击措施。

对于dpc例程来说,最有帮助来判断是不是pg的dpc就是DefferContext,很多资料都提了。

首先我做的是hook KiDispatchException,一方面是能够更快的触发PG,另一方面是在PG接手异常前,DbgBreakPoint(),让调试器接管,这样就可以得到PG调用的堆栈。在KiDispatchException中我们可以判断rip,rbx,rdx。大多数通过异常触发DPC都是触发KiCustomRecurseRoutinex这里,但是不管你是把rip跳过那条异常指令还是给一个合法的寄存器让他解引用来绕过异常,后面都还是会出另一个异常,而且有时候会连续验证2次。
001.jpg

PatchGuard会在_except块里恢复寄存器,然后再执行这个函数正常的功能。也就是说没有执行他的except块后面正常执行的时候还是会蓝屏。

下面是其中一次的堆栈,
002.jpg


上面是其中一种,攻击方法是hook KiProcessExpiredTimerList,
003.jpg

原理是替换一个垃圾DPC让Pg执行。我一开始还想过hook _guard_dispatch_icall来处理所有的函数指针调用,发现一hook就死机,不管是虚拟机还是主机都一样。

在打第二次虚拟机快照的时候,Pg又蓝屏了。这一次他并没有通过异常,也没用DPC。我想了一会没想出来他是怎么触发的。

然后我从PG的上下文内存分配入手,一开始我什么也不知道,就直接hook ExallocatePoolWithTag来试一下,在所有分配大字节全部断下
004.jpg

游客,如果您要查看本帖隐藏内容请回复


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表