现在主流竞技游戏基本都上了内核驱动(EAC、BattlEye、Vanguard 这类)。技术上讲讲它为什么要进内核,以及这个选择的成本。
为什么要内核态
用户态的反作弊和作弊程序是同一个权限级别——你能读它的内存,它也能读你的。作弊工具进了 ring0,用户态反作弊就完全看不见了。所以这是一场权限竞赛。
内核态能做什么
- 枚举所有进程和句柄,看谁打开了游戏进程
- 检测手动映射的驱动(不走正常加载路径的)
- 校验系统结构的完整性,发现被 hook 的内核函数
- 监控驱动加载,拦截已知的漏洞驱动(BYOVD 攻击的载体)
代价
- 稳定性 — 驱动 bug 就是蓝屏。反作弊驱动引起的崩溃是真实存在的支持成本
- 攻击面 — 一个有漏洞的反作弊驱动,就是给整台机器开了个后门。这类 CVE 出过不止一次
- 隐私争议 — 开机自启的内核驱动,用户没法审计它在做什么
- 对抗升级 — 攻击者转向 hypervisor 层或者直接上 DMA 硬件,内核态也看不见了
最后这点值得注意:DMA 卡通过 PCIe 直接读内存,绕过 CPU 和操作系统。软件层面基本无解,只能靠行为检测(比如统计玩家的瞄准轨迹是否符合人类特征)。
所以趋势其实是从"检测程序"转向"检测行为"——后者不依赖权限竞赛。