EasyAntiCheat BattlEye AntiDebug

发布于 2019-01-06  1.2k 次阅读


分享前些时间研究EAC普通版的 和去年BE(Pubg高级版) 反调戏吧 相比国内的反作弊弱势了很多

EasyAntiCheat AntiDebug

AntiHandleHijack:

句柄引用计数检测 由回调添加 进实时监测 <目标进程,句柄> 超过1即 关闭游戏 因直接结束进程 EAC也会跟着退出所以 正常任务管理器没有影响,这也是不关闭游戏直接关机时它会提示有趣的Detected 0x*****的原因了~

AntiDebugThreadAttach:
防止附加 因DebugActiveProcess会创建一条触发int3的线程 来让调试器中断 EAC是这样做的:线程创建检测由内核线程回调检测 如果有ntdlladdress/noimage的地址 直接结束游戏进程并提示
Detected 0x*****

AntiHardBreak:
反硬件断点监测 首先它这里用了两个方法 主逻辑线程由驱动程序手动置位线程的hidedebug位 其他线程调用NtSetThreadInformation

BattlEye AntiDebug (Pubg/H1z1)

Pubg的反调试在我研究时 相比较H1z1的反调试弱一些 同时并没有EAC对句柄计数的检测,而是内核中直接遍历某些进程的句柄权限 剥离权限.

时间有些久可能有些疏漏

AntiHandleHijack:内核遍历lass等进程剥离其相关权限,csrss采取的是挂钩进入它的内核 检查返回地址 如果有问题bsod.

AntiDebug:句柄异常检测/CloseHandle(x)如果挂接了调试器 那么内核会模拟一条异常.通常调试器 选择忽略所以被检测系统拦截到 由此检测到调试。

H1z1利用了异常来作为进入游戏时的Dx相关初始化措施 如果触发会爆炸

AntiHardBreak:调用NtSetThreadInformation Thread.hidedebug位

其他的都是差不多通用了:

…NtQueryProcessInformation
…Peb.Debug

2019.4.19 补充 EAC :AntiCreateThread->
RtlUserThreadStart ->Jmp PtrTo(EAC Replace Here)-> BaseInitializeContext
(CONTEXT* pContext, PPEB pPeb, PVOID pEntryPoint, DWORD dwInitESP, DWORD dwEipType)

总结:国外反作弊程式并未对反调试做太多检测处理。

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

博客管理员