-
-
[原创]仿照EAC的全局异常Hook
-
2023-8-19 19:46
12233
-
今年初EAC在部分游戏上部署了假CR3保护,具体痕迹如下
没开游戏时:
开游戏后:
原本指向HalpTscQueryCounterOrdered的指针指向了EAC模块内的异常处理函数。
部分系统变量被更改,是为了配合系统顺利调用HalpTscQueryCounterOrdered从而进入异常处理流程。
如果发生异常则会走以下流程
int 3异常, 系统1709
1 2 3 4 5 6 7 8 9 10 | 01 EAC Hook
02 hal!KeStallExecutionProcessor + 0xac
03 nt!KeFreezeExecution + 0x26a
04 nt!KdEnterDebugger + 0x64
05 nt!KdpReport + 0x71
06 nt!KdpTrap + 0x14d
07 nt!KdTrap + 0x2c
08 nt!KiDispatchException + 0x15f
09 nt!KiExceptionDispatch + 0x11d
0a nt!KiBreakpointTrap + 0x318
|
GP异常, 系统21H1
1 2 3 4 5 6 7 8 9 10 11 12 | 00 EAC Hook
01 nt!KeStallExecutionProcessor + 0x120
02 nt!KeFreezeExecution + 0x110
03 nt!KdEnterDebugger + 0x6d
04 nt!KdpReport + 0x74
05 nt!KdpTrap + 0x160
06 nt!KdTrap + 0x2d
07 nt!KiDispatchException + 0x177
08 nt!KxExceptionDispatchOnExceptionStack + 0x12
09 nt!KiExceptionDispatchOnExceptionStackContinue
0a nt!KiExceptionDispatch + 0x125
0b nt!KiGeneralProtectionFault + 0x320
|
原理:
EAC将自身进程eprocess.dirbase/cr3 的reserved bit设1,其他进程mov cr3, eac_cr3 就会触发#GP 并进入EAC的异常处理流程,EAC在异常处理流程内栈回溯获取相关信息并恢复CR3,Flag调用进程
粗略实现: (仅测试Win10, Win11要修栈)
https://github.com/1401199262/Hook-KdTrap
话说好久之前就发了啊
[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。
最后于 2023-8-19 20:38
被Pipi1337编辑
,原因: