今年初EAC在部分游戏上部署了假CR3保护,具体痕迹如下
没开游戏时:
开游戏后:
原本指向HalpTscQueryCounterOrdered的指针指向了EAC模块内的异常处理函数。
部分系统变量被更改,是为了配合系统顺利调用HalpTscQueryCounterOrdered从而进入异常处理流程。
如果发生异常则会走以下流程
int 3异常, 系统1709
GP异常, 系统21H1
原理:
EAC将自身进程eprocess.dirbase/cr3 的reserved bit设1,其他进程mov cr3, eac_cr3 就会触发#GP 并进入EAC的异常处理流程,EAC在异常处理流程内栈回溯获取相关信息并恢复CR3,Flag调用进程
粗略实现: (仅测试Win10, Win11要修栈)
https://github.com/1401199262/Hook-KdTrap
话说好久之前就发了啊
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
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
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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-8-19 20:38
被Pipi1337编辑
,原因: