Joe1sn's Cabin

【杂谈】为什么外挂难以根除?

一个略知逆向工程的人谈谈他的看法

或许我们的公众号会有更多你感兴趣的内容

img

外挂问题一直是《CS:GO》等竞技游戏的最大顽疾,尽管游戏厂商和反作弊团队不断升级技术手段,但外挂仍然屡禁不止。2025年8月,5E对战平台曝出职业选手使用“软路由雷达”作弊,该外挂通过路由器解析游戏数据包获取对手位置,传统检测手段几乎无法识别。这一事件再次凸显了外挂技术的隐蔽性和反作弊的挑战。

image-20250815113622182

电子游戏的本质

电子游戏就是一段运行在计算机上的程序

电脑的最基本组成需要:

  • CPU:中央处理器,处理来自内存的数据。一般包含有寄存器等,寄存器存储运行中的程序需要处理的数据,例如进行减少血量的操作就是将血量放入寄存器中然后CPU进行减法运算。

  • 主板:安装所有硬件,让各个硬件能进行数据传输。

  • 内存:暂存运行程序的相关数据,例如程序中的坐标、游戏人物的血量等等。

  • 显卡:负责将数据转为屏幕的像素图形成画面。最开始这是CPU的工作,但是CPU不适合大规模的简单运算(让一个博士去狂刷小学加减法,不如让100个小学生去同时运算),英伟达开发的 Nvidia GeForce 256 是世界第一个图形处理器(显卡)。

    image-20250815115845791

  • 硬盘:存储非运行程序的数据,要使用的时候CPU从硬盘读取或者写入。但是随着时代的进步逐渐出现了直接访问等技术(例如直接从硬盘到显卡、外设到内存双向通信,这也是DMA的基础)。

  • 操作系统:对于计算机来说是非必须的,但是对于用户来说很重要。因为他可以协调各个硬件,例如控制程序运行的优先级。

​ 对于一个常见的联机游戏中数据流程大致如下:

image-20250815122009027

如何修改一个程序的数据

根据上面的数据传输图,我们会发现通过操作系统和硬件可以在不同的访问等级下对不同的位置进行数据的访问,如:

image-20250815123016587

内存挂

​ 其中最常用的是内存挂,由于游戏的数据会放在内存当中,那么我们使用操作系统提供的方法,或者从操作系统内核中的内存管理,进行跨进程的内存访问/写入。例如修改器最常用的cheat engine 对单机游戏的金币等等进行修改。在cs中,一场对局中所有玩家的坐标位置也是通过上面的流程保存在内存当中的,这就是透视、自瞄等的原理,部分外挂程序通过读取内存中玩家的坐标数据转到屏幕上进行绘制达到透视的效果。
image-20240523094055200

​ 由于运行中的程序的指令是暂存在内存当中的,更加高级的内存挂会直接修改游戏内存中的代码指令让游戏程序自己绘制出玩家位置,也可以计算射击角度来自瞄等等。这种类型的外挂防护已经比较成熟了,一个思路是将反作弊程序升级到更高级的系统内核层面,从一般程序无法访问的系统内核拦截外挂对游戏内存的访问和修改。除了拦截之外,还会利用哈希算法校验游戏关键代码是否被修改。还有的会依靠样本库对当前运行的所有程序进行扫描,扫描到已知的外挂程序会做出相应的处理。还有一些是基于行为分析等等。

image-20240519162215594

DMA

DMADirect Memory Access,直接内存访问)技术改变了这一切。回忆之前的内容,所有的硬件需要插在主板上运行,并且为了数据访问速度的加快,部分数据可以不经过CPU直接访问内存。正常的功能例如将电脑硬盘中的资料复制到USB中,原来需要通过CPU将数据读取到内存中,然后CPU再把数据复制到USB中。但是DMA是硬盘直接将数据读取到内存,然后usb的DMA控制器直接从内存中得到数据,CPU在这一过程中是几乎没有参与的,而之前的外挂是需要CPU来运行的,因此DMA的内存读写方式是硬件层面直接决定的,往常的反作弊程序难以探测
​ 按照将反作弊程序升级到更高级、更底层这一思路,近期例如三角洲行动等使用CPU虚拟化技术来进行DMA的反作弊。CPU虚拟化顾名思义就是允许在单个物理CPU上创建多个隔离的虚拟环境(虚拟机),每个虚拟机可以独立运行操作系统或应用程序。这样就可以对特定程序(例如游戏)单独创建一套系统,通过将游戏运行在受保护的虚拟环境中、拦截和审核所有对关键硬件(如内存、DMA设备)的访问请求,实现对DMA外挂的检测。

image-20250815132333382

软路由

​ 回顾上面的数据传输图,游戏数据通过网络传送到电脑上,网络的传输会通过路由器。软路由可以说是在路由器中的插件,例如屏蔽特定的域名访问、复制网络流量等等。如果我们能过理清楚游戏和服务器之间的通讯的加密流程,就可以从路由器拦截并解密服务器向游戏发送的数据包,再从数据包中提取出坐标等相关信息转发,这样就不需要修改或者访问游戏的任何内存。

img

总结

​ 外挂难以根除的根本原因在于:游戏必须依赖本地硬件运行,而硬件和网络的开放性为作弊提供了无数切入点。反作弊与作弊的对抗本质是一场技术军备竞赛,且受限于用户体验、硬件兼容性和黑产利益,短期内无法彻底解决。未来可能需要结合云端游戏、AI行为分析、法律打击等多维手段,才能逐步压制外挂的生存空间。

​ 不过也可以复兴LAN派对(局域网游戏聚会形式)参与者通常自带电脑,在自由开放的线下空间进行游戏竞技与交流,发现开挂立刻线下真实。

引用

[1] 5E对战平台“顺藤摸瓜”收网行动

[2] Donovan, Tristan (2010-04-20). Replay: The History of Video Games. Yellow Ant. pp. 1–9. ISBN 978-0-9565072-0-4.

[3] Game-Changer: How the World’s First GPU Leveled Up Gaming and Ignited the AI Era

[4] 反作弊升级|CPU虚拟化功能上线