当前位置:首页 > 逆向工程 > 正文

反作弊机制全景:EAC、BattlEye、Vanguard 到底在看什么

约 3700 字 · 预计阅读 10 分钟
一句话总结:反作弊不是「扫一遍内存」那么简单,它分用户态行为监测、内核驱动驻留、云端统计三条线同时取证,本篇从防守视角拆开 EAC、BattlEye、Vanguard 的检测逻辑,也顺带说清为什么这类对抗最终拼的是成本。

上一篇 Cheat Engine 讲的是「怎么找」,进阶系列收尾篇 讲了「检测面三层」。这篇把视角彻底翻过来:站在反作弊工程师的位置,看他们手里到底有哪些牌。

我不做攻防立场,只讲机制。原因很实在:这套知识对做安全产品、做游戏服务端、做企业终端防护的人都有用,比单纯研究怎么绕过有价值得多。

三条防线,不是一条

很多人以为反作弊就是「检测外挂进程」。真实的商业反作弊是三套系统一起跑:

第一条:用户态取证。反作弊进程(EAC 的 EasyAntiCheat.exe、BattlEye 的服务)在游戏启动时枚举系统状态:谁打开了游戏进程的句柄、加载了哪些模块、有没有调试器附加、驱动列表里有没有可疑项。这一层的成本最低,覆盖也最广。

第二条:内核驱动驻留。三家都有内核组件(EasyAntiCheat.sys、BEDaisy.sys、vgk.sys)。区别在驻留策略:Vanguard 是开机自启、常驻内存,即使不玩游戏也在跑;EAC 和 BattlEye 一般跟随游戏启动、退出后卸载。这解释了为什么玩家对 Vanguard 的观感最差——它确实常驻,也确实能看到更多东西。

第三条:云端统计。这层最容易被忽略,却最难对付。服务端掌握所有玩家的原始数据:命中率分布、爆头率、反应时间、移动轨迹的平滑度、视角角速度的频谱特征。人类操作的角速度有明显的高频抖动和过冲,机器辅助的曲线光滑得可疑。单场看不出,几百场累积下来就是清晰的异常。

检测信号清单

把常见手段列成表,按「取证强度」排序:

信号 原理 绕过成本
句柄枚举遍历系统句柄表,找指向游戏进程的可疑句柄低:换访问方式即可
模块枚举扫描进程模块列表,比对白名单中:需要隐藏模块
内存页属性检查是否出现 PAGE_EXECUTE_READWRITE 等异常页中:改页属性会触发校验
代码完整性对 .text 段做哈希,与服务器下发值比对高:改一个字节就露
心跳与时间戳检测游戏主循环是否被挂起、时钟是否被改高:影响正常逻辑
输入时序键鼠事件的间隔分布是否呈人手的随机性很高:模拟成本极高
服务端统计命中率、角速度、反应时间的长期分布最高:无法在客户端解决

表格看完能得出一个结论:客户端能做的手段,绕过的成本从低到高;服务端统计这条线,客户端根本碰不到。这就是为什么现代反作弊的重心在往服务端迁移。

图 1:三条防线的取证强度与成本对照,第三层客户端无法对抗

EAC、BattlEye、Vanguard 的分工差异

三家的技术路线差异,本质是产品定位差异:

EAC(Epic 旗下)走的是「够用就好 + 低打扰」路线,大量中小游戏用它,配置简单、授权便宜,检测强度中上。BattlEye 是老牌,驱动做得激进,PUBG、R6 这类竞技射击长期用它,误封争议也最多——激进检测必然带来误伤。Vanguard(拳头)走极端路线:内核驱动开机常驻、要求系统开安全启动、Windows 内核级隔离,强度最高,代价是兼容性和用户观感。

没有谁绝对更好,这是个典型的三角权衡:检测强度、兼容性、用户接受度,最多占两样。

HWID 封禁:封号之后的事

封号只是第一步,真正的威慑是设备指纹。HWID 封禁采集的标识包括主板序列号、硬盘序列号、网卡 MAC、卷序列号、GPU 设备 ID 等,组合起来形成稳定指纹。绕过需要改硬件标识,成本高且有法律风险。这也是「封号不如封机器」这句话的由来。

顺带说一句我的判断:HWID 封禁的误伤率被低估了。二手硬件、网吧机器、共用设备都可能被连带,这块的申诉机制普遍做得不好,属于行业性的欠账。

对正经开发者的启发

如果你在做安全产品、游戏服务端或企业终端,这套机制有三点可直接借鉴:

  1. 分层取证比单点检测稳。任何一层被绕过,另外两层仍能兜住,这跟纵深防御是同一个道理。
  2. 统计特征比规则匹配耐打。规则会被针对,行为分布不会——人的手速有物理上限。
  3. 成本思维:反作弊不是要把作弊者全灭,而是把作弊成本抬到不划算。同理,企业防内鬼也是这个逻辑。

收尾与边界

技术上这些都可以公开讨论,但用在在线游戏上就是另一回事了——检测机制和绕过手段的对抗,本质是一场猫鼠游戏,参与的一方要付出封号、硬件封禁甚至法律代价。本系列始终只建议在单机、自建服务器和 Pwn Adventure 这类靶场里练习。

下一篇回到实操:CE 能找单个值,但一整个玩家结构体(坐标、血量、阵营、骨骼)挨在一起,手工抠太慢,用 ReClass 一次还原出整个对象的布局。

目录导航
  • 三条防线,不是一条
  • 检测信号清单
  • EAC、BattlEye、Vanguard 的分工差异
  • HWID 封禁:封号之后的事
  • 对正经开发者的启发
  • 收尾与边界
  • 相关文章:

  • C++ 游戏辅助进阶系列(四):速度预判与边界,给自瞄系列收个尾2026-10-20 23:25:46
  • 发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。