外挂是什么意思？
“bu yao yi wei ni ying le” 秒懂这个梗的朋友，应该是忠实的星际争霸玩家了，不了解也没有关系，下面简单介绍一下。 这个梗来自星际争霸的职业选手罗贤，当时他受邀参加PLU全明星之夜，为了搞出点节目效果，节目方让他用小号进游戏平台来虐菜。然而，他在刚开始就遇到了一位极强的虫族玩家，结果连输三把，事后被证实对手是同为职业选手的F91小号。 紧接着，罗贤打算换种族来找回来点面子，结果不成想遇到了一位开外挂的玩家。 即便如此，作为中国顶尖职业选手，罗贤的实力自然是不容小觑，硬生生撑到对面金甲子弹都打完了，才慢慢艰难推进到对面主基地，用自己的操作一点点地把局面逆转了回来。 看到此情此景，罗贤觉得自己已经稳操胜券，终于能够取得一把胜利了，不禁喜从心来。 就在这时，屏幕上出现了一行字“bu yao yi wei ni ying le”（不要以为你赢了） 正当罗贤和主持人一头雾水的时候，神族基地里刷出了一队人族顶级兵种——大和星舰（作弊玩家使用的是神族） 随后，罗贤目瞪口呆，含着泪输掉了这场比赛。 事后，很多网友认为这个全明星之夜，罗贤被F91狙击和遇到外挂玩家均是事先安排好的。不过后来据FD的爆料：被F91狙击和碰上作弊玩家的事儿，全部都是计划之外的。当时的气氛特别欢乐，他们也笑到起不来。当然了，结果自然是很杯具的TAT 接下来，我们谈谈当前游戏行业的发展和由此诞生的游戏黑产，进而了解一下有关游戏外挂的那些事儿。 根据《2020年中国游戏产业报告》显示，2020年，中国游戏用户数量保持稳定增长，用户规模达6.65亿人，同比增长3.7% 在收入方面，2020年，中国游戏市场实际销售收入2786.87亿元，比2019年增加了478.1亿元，同比增长20.71%。 此外，中国自主研发的移动游戏在海外也有很大一笔收入，其中来自美国市场的收入占比为27.55%，蝉联第一。 如此庞大规模的一个行业，自然是少不了黑产的出现，游戏黑产大致分为了以下几种类型： 游戏外挂，是指针对某一款游戏而设计的、修改或者可以暴露游戏中部分数据、程序的恶意程序。对于大部分的玩家来说，外挂会破坏游戏平衡，进而导致未开挂玩家丧失游戏乐趣；对于开发者来说，外挂玩家的涌入会使得正常游戏用户大量流失，进而缩短了游戏寿命，同时也降低了开发者的收入。 以近几年非常火的吃鸡来举例，部分外挂售卖行业示意图如下： 从外挂原理上来讲，游戏外挂主要分为两部分： 3.1、数据修改 如：隐身，飞天遁地 穿墙（移动、射击） 人物无敌锁血、子弹无限、技能范围和结算数值修改（这种可以让你瞬间体验到超级武器和超级技能，史诗感满满） 3.2、信息挂 如，透视勾边 自动瞄准 等等等等...... 游戏可以简单的分为三个部分：游戏本地客户端、后台服务器以及用于在客户端和服务器之间传输数据的数据通道。因此也可以根据外挂修改的是上述的哪一部分来对其进行分类。 此外，也可以根据外挂是否有模块进入游戏客户端，把外挂大致分成两大类，即内存挂和非内存挂。 4.1 内存挂 内存挂是指会释放核心功能模块，并将其注入游戏客户端的外挂。一般有修改游戏代码或数据、Hook 游戏代码、Call 游戏函数等行为。 游戏中的各种对象，如人物、怪物、武器装备、当前状态等，都以内存块的形式存在，所以定位定位对象内存块的意义重大，可以帮我们了解模块的组成，对象的行为，另外在我们修改武器装备、角色属性等数值时，也需要定位相应的内存块。 在安全领域中，注入二字很常见。从技术角度上讲，注入其实就是迫使第三方进程非自愿地加载某个外来模块，因此注入和反注入一直处在持续不断的斗争过程中，就好像子弹和防弹衣/装甲一直都在不断地对抗。注入好比发射子弹，防弹衣好比保护手段，子弹嵌入射击对象体内则表明注入成功，否则便是反注入成功，即注入失败。 外挂注入游戏进程空间的方法有很多，可谓是五花八门，例如注册表注入、远线程注入、进程注入、输入法注入、LSP注入等。 外挂将自己的核心功能模块注入目标游戏进程后，就好比寄生生物成功到达了宿主身体，接下来做一些隐藏自己的工作，达到藏匿目的之后，便可以开始与外挂使用者进行交互，来接收对应指令进行特定的作弊行为了。 这里以上节“游戏外挂类型”中所涉及内容为例来讲解。例如技能范围和结算数值修改就是典型的内挂手段，假设某技能A的释放函数为Skii_A_Release(size，damage)，外挂在成功寄生到游戏进程后，设法定位到该技能攻击函数，那么便可以修改Skii_A_Release函数的参数，例如将技能尺寸size修改为游戏屏幕宽度，伤害数值damage修改为999，玩家便可体会到一刀全屏999伤害的舒畅感了，类似于下图所示。 再举个例子，透视勾边这个外挂也是通过这种方式得到的，因为游戏会记录一局对战中所有玩家的游戏位置坐标，所以外挂可以很方便地利用游戏内置的指定方法，如Getway(Role)，来获得敌人的坐标，在得到坐标之后，便可以通过定位方框将敌人在屏幕中标记出来。 此外，还有一部分渲染类透视挂，因为很多游戏在渲染图像时会用到Windows的DiretX模块，一部分外挂正好利用这个原理来修改游戏中DiretX模块的遮挡关系，将原本应该被游戏地图资源遮挡部分的渲染逻辑修改，便可以清楚的看到敌人的当前位置了。 基于上述方法，还有很多的衍生外挂可以拿来讨论，这实际上考验的是外挂制作者的脑洞了。 例如，既然有Getway(Role)函数，可能就会有Setway(role，position)操作，利用这一点便可以修改游戏中特定角色的位置(即position参数)，来实现吸怪挂，或者是吸人挂，进而一举歼灭目标。 其次，Getway(Role)得到坐标后，还可以进一步得到人物模型的头部骨骼坐标，进而实现锁头挂，自瞄挂等等作弊手段，也就是在每一帧中都把鼠标位置强制设置到头部骨骼的位置。 4.2 非内存挂 非内存挂则无须注入模块到游戏进程空间，可以通过修改游戏资源脚本，模拟游戏客户端收发包，模拟用户按键操作等来实现其作弊手段。 例如之前流行很久的枪战类游戏刷枪外挂，便是模拟游戏客户端收发包的结果，伪造一条成功购买M4A1-水晶、M4A1-雷神等武器的游戏下行协议并提交给服务器，接着刷新一下仓库，指定的武器便会出现在玩家的个人仓库中。 此外，既然能模拟发包，自然也就能够截获封包，然后还可以按照一定规则修改后再次发送，例如花5000点卷购买了一把屠龙刀，此时你就可以拦截这条支付消息并将付款参数“5000”修改为“-100”，这样贪玩蓝月不仅要给你一把屠龙刀，还要倒贴你100点卷，亏到不行。 4.3 私服 最后，涉及到游戏服务器的外挂，当要数私服了，例如已经成为了中国游戏行业中一条黑色产业链的传奇私服。 一般在代理商倒闭或者关停服务后，便可能会有内部人员私自出售游戏服务端，或者是利用各式各样的违法手段来拿到游戏的服务端，接着买方在对其进行部分改动和修复后再进行上线，这便是盗版游戏服务器，即非官方游戏的出现了。 例如，CS便有很多私服，里面也有很多非常强大的模式如无后座，无重力，飞天，无敌等。 私服的出现一般就表明游戏代码的外泄，这意味着玩家可以从源码级别来修改游戏，这简直就是上帝才能做到的事。类比一下现实世界，就好似我们可以很轻易的将本宇宙中的圆周率π修改为自己喜欢的数字3，或者将光速C修改为另一个固定值，这简直就是创世者才独有的能力，这也就是私服的威力所在了。 以上内容中谈到了许多有趣的游戏外挂以及其部分实现机制，然而，道高一尺魔高一丈，随着外挂的发展，反外挂手段也在不断进步。 反外挂是一个很大的系统工程，大致有以下几个方面： 除了以上手段，还有很多物理手段来制止外挂的传播，例如： 也就是——联合警方，重拳出击！ 以上，谢谢~