今年初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要修栈)
8abK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5I4y4o6l9I4x3e0V1&6x3U0j5J5i4K6u0r3d9r3!0G2K9#2)9J5k6p5E0V1g2s2u0S2M7l9`.`.
话说好久之前就发了啊
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
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
最后于 2023-8-19 20:38
被Pipi1337编辑
,原因: