在 MOBA 游戏火热的几年时间里,似乎大家已经忘记了游戏外挂其巨大的杀伤力。近年来随着大逃杀类型游戏的火爆,射击类游戏重归大众视野,同样的,外挂也回来了。那么问题来了:
游戏外挂能根除么?几乎不能,或者说现阶段绝大部分游戏做不到。
游戏公司能够完全准确的判断一个人是否开挂么?不能。
外挂作者的技术厉害么?不厉害,甚至很多还很差。
外挂违法么?违法。
网游运行原理
我们常常下载得到的游戏,我们称为客户端。还有一部分游戏资源在游戏运营商手中,我们称其为服务端。
客户端就在我们的电脑之中,我们便有可能对其进行修改、干预、读取等操作。而服务端在游戏运营者手中,一般难以干预。
理论上来说,如果游戏开发者将游戏中所有的计算(如是否击中,能够看到哪些信息等)全部放在服务端执行,外挂就根除了。但目前的大型网游,尤其是射击类游戏,这几乎是不可能的事情。
首先就是服务器运算能力的问题。以最近很火的 APEX 为例,每个人的每一次移动,每一颗子弹的打出,弹道等等信息全部交由服务器计算,服务器很容易出现运算能力不足的情况,从而导致成本直线飙升(例如原成本能容纳一百万人同时游戏,现在可能一万人都无法保障)。这对游戏运营商而言是十分不合算也不可能这么做的。
其次便是网络问题。如果游戏数据的全部运算均在服务器执行,那么你的每一次操作都将上传至服务器之中。假设计算机与服务器之间有 100ms 的延迟(即客户端发出消息后 100ms 服务端才能接收到消息),每一次操作之间都需要等待 100ms 才能生效。这看起来或许很短,但实际的游戏体验将会非常糟糕。如果真的采用这种方法,你看到的将会是人物满天飞、瞬移抑或是走一步卡三步的“畅快”体验。
因此,游戏开发商不得不做一个妥协——将一部分游戏数据放在玩家的机器上进行计算,将计算结果反馈给服务器,服务器只抽查结果是否正确。如此一来,游戏体验好的很多,成本也得到了控制,看似大家都得到了满意的结果。
然而,外挂诞生了。
外挂的工作原理
既然游戏数据的计算一部分放在了玩家电脑中进行计算,外挂自然就能够通过读取、修改等方式对游戏的正常数据进行修改。
以透视为例,外挂读取客户端中敌人的数据,通过距离、xyz坐标等信息进行反算敌人位置,再在屏幕中绘制一个矩形框将敌人的位置标注出来,如此,一个透视外挂便做好了。
而穿墙等操作则是通过修改游戏数据,将本不应该通过的位置通过修改游戏的碰撞模型等让玩家能够畅通无阻的通过,如此,这些逆天的功能就做成了。
如此一来,外挂与游戏运营厂商的对抗也就开始了。
主流的反作弊手段
最简单的反作弊手段,便是收集市面上的主流外挂程序,手动将这些外挂软件加入黑名单,在游戏运行时不允许这些程序运行。然而这种反作弊手段过于羸弱,外挂只需简单更新便能轻松绕过反作弊软件,且市面上的外挂种类繁多,如论如何都有漏网之鱼,人力耗费巨大。当然,这种反作弊手段现在已经几乎不再使用了。
接下来便来说说现在的几大主流的反作弊软件。
APEX 所使用的 Easy Anti-Cheat,绝地求生所使用的 BattlEye,CS-GO 所使用的 VAC ,腾讯系网游所使用的 TP 等等。
首先,这些反作弊软件都有的功能便是游戏保护。
刚才说到了,外挂需要读取、修改游戏数据才能达到作弊的目的,那么我们开发出一款软件用以保护游戏数据,避免其他软件的破坏,也就做到了反作弊的目的。
现在的反作弊软件,一般都是花费大量的人力物力,以非常高的权限运行,用以保护游戏。这样一来,外挂就需要找到反作弊软件的漏洞,抑或是提升到相同高的权限,才能对游戏进行修改。无疑这样大大提升了外挂的制作难度。
各个反作弊软件都有些许不同,这里作者想单独讲讲 VAC 的一些反作弊手段。VAC 通过引入监管这一概念,将疑似作弊者的录像发送至一些挑选出来的玩家手中,由他们来做出评判,这个玩家的种种行为是不是使用了外挂。
由于外挂更新频繁,反作弊软件的更新永远是滞后的,所以增加一些人工判断还是十分有新意的,但害怕误封等问题,需要所有人一致认为这个人使用了外挂,才能执行封禁,很显然,结果并不如人意。但新颖性确实是值得肯定的。
外挂的主要手段
既然如今外挂泛滥严重,那就说明外挂有着一套比较完整的制作流程,能够绕过现如今的反作弊软件一段时间。那就是权限的对抗。
外挂作者想尽手段将自己的外挂也提升到反作弊软件的权限级别,如此一来绕过反作弊软件也就不是什么难事。
然而这种开发工作难度很大,现如今的外挂作者绝大多数都没有与之相对应的技术。怎么办?买。
大神将绕过反作弊软件的方法卖给高价卖给技术更低的外挂制作者,并跟进游戏厂商的更新。而其余外挂的功能部分则交给这些技术较低的外挂制作者。
现如今游戏为了加快游戏制作进度,节约游戏制作成本,都会使用现成、成熟的游戏引擎进行游戏开发。现在主流的游戏引擎如寒霜引擎、虚幻引擎、起源引擎等。
相同的游戏引擎,外挂的制作差距不大,只需进行简单修改即可使用。
例如现在你想制作一个 CS-GO 的游戏外挂,你只需要买到绕过 VAC 的软件源代码,以及 起源引擎 所对应的外挂代码,进行简单修改,套上自己的壳,一个散装外挂就诞生了!是不是很简单!
想去制作外挂了?小手铐了解一下,单间了解一下。
游戏公司
说了这么多,还有一个问题没解决,那就是游戏公司为何无法准确判断一个人是否开挂呢?
首先,如果这个人所使用的外挂非常高级,使用人数也很少,反作弊软件并没有判断出玩家运行了外挂,游戏公司也没有找到外挂是通过何种手段注入游戏数据的。
再加上如果外挂并没有修改游戏数据(如仅透视、自瞄),通过客户端发送回服务器的数据很难发现异常。也只能通过命中率过高、爆头率过高等因素怀疑玩家作弊,但很难准确的说究竟是玩家技术高还是外挂技术高。
所以,一款游戏外挂满天飞,屡禁不止,可能真的不是游戏公司不想管,可能是真的管不了(摊手)。
欢迎关注微信公众号 KPWill科普