打开主菜单

萌娘百科 β

大萌字.svg
萌娘百科欢迎您参与完善本条目☆Kira~
欢迎正在阅读这个条目的您协助编辑本条目。编辑前请阅读Wiki入门条目编辑规范,并查找相关资料。萌娘百科祝您在本站度过愉快的时光。
外挂推销.jpg
基本资料
用语名称 外挂
其他表述 作弊、cheat、hack、纪
用语出处 电脑游戏
相关条目 主角光环枪法孤儿、官服/私服

外挂一般指能够让玩家在电脑游戏中进行作弊行为的软件。

目录

本义简介

外挂一般是指能够让玩家在电脑游戏中进行作弊行为的软件,其存在大大破坏了游戏的平衡性和体验感。

“外挂”一词多用于网络游戏联机游戏。而单机游戏中的同类软件则多称为“修改器”。

在中国大陆刚刚进入网络游戏时代时,曾经有两款因外挂而毁灭的游戏——《冒险岛》与《奇迹MU》。

在当时,游戏的自身漏洞与游戏性使得外挂猖獗,这严重影响了游戏的平衡,进而威胁到了游戏本身的意义。如今,已经成为时代眼泪的两款游戏因外挂而载入史册。

除了这两款游戏,绝大多数的进入中国大陆的网络游戏都免不了遭外挂毒害。比如《地下城与勇士》的核弹秒图外挂,各类射击游戏的透视穿墙爆头外挂,RPG类网游的无限隐形自动刷怪等外挂等。

值得一提的是,中国的很多游戏厂商为了治理外挂也可以理解为是官方无能或适应玩家需求,将诸如自动刷怪、自动使用回复药、自动寻路等功能内置进游戏当中。虽然这在一定程度上减少了第三方外挂的存在,但这种让步在某种意义上无疑是厂商宣告让步的表现。

与之不同的是,“挂机”并非指外挂的一种,而是指保持角色站在原地不动、同时角色不断开与服务器的链接的行为。

硬件外挂

也叫物理外挂,和传统意义上的软件外挂不同,是通过硬件设施来实现的外挂。

虽然性能上远不如软件外挂,但好处在于其“合法性”——硬件外挂可以视为游戏设备的强化硬件配置,一般是属于允许范围内的。况且对于人不在场的比赛,根本无从得知是谁开了硬件外挂。现有的技术手段几乎完全无法检测硬件外挂的使用。

常见的硬件外挂包括但不限于:

  • 使用自带中央准星的特制显示器
    • 在屏幕上贴贴纸甚至是“黏鼻屎”也可以当准星
  • 在手机上安装辅助点击屏幕的“手柄”

特别需要指出的是,手机散热器不属于硬件外挂。

  • 在键盘鼠标上安装外置装置以实现自动点击

FPS游戏外挂种类

因为FPS游戏是本地运算上传,服务器判断,所以外挂是无法避免的。

  • 穿墙
  • 锁血,让电脑判断没打中自己
  • 透视
  • 自瞄(锁头)
  • 无后坐力
  • 无限子弹
  • 加速
  • 瞬移
  • 自动开枪/Trigger bot
  • 陀螺/Anti-Aim,反自瞄
  • 暴力自瞄/rage bot,旋转自瞄
  • 超感官/ESP,看到地图上的物品 (要与游戏中某些探测式技能区分开)
  • 假Ping(和服务器汇报虚假延迟让自己看起来很卡,或者自己作为主机时不断切换连接导致其他人很卡) 假延迟/Fake latency 类似
  • 假身/Fake Yaw(通过在每两次服务器刷新,这个数据目前在CS:GO里面为1.1秒,中旋转),显示位置和真实位置不同
  • 解析器/Resolver(反假身的解析,用于强行锁定头部
  • 位置预判/Position Adjustment(根据自己延迟微调瞄准弹道)
  • 回溯/Last Record AA (假装告诉服务器掉线了,事实上客户端有在往前走,如果杀人则回归ping,如果没有则返回Last Record位置)

硬件外挂

  • 使用大号屏幕,强行拉大视野
  • 屏幕画准星,或使用自带准星的显示器使用连狙有奇效
    • 为了制止此类硬件外挂,目前各大FPS都对狙击枪的射击精度做了特殊设定,即在不开镜的情况下,狙击枪的射击弹道会随机大范围浮动也就是随缘弹道,可能准的六亲不认也可能飘的敌我不分,因此屏幕画准心已经没几个人用了。
  • 用放大镜代替狙击镜
  • 鼠标宏宏孩儿基本绝迹
  • 脚踩鼠标
  • 超高对比度


全图外挂原理

该部分内容仅供学习原理使用,下面内容以Warcraft III 1.27.0.52240为基础介绍。

全图外挂存在的基础条件:

  • 早期多人游戏允许通过局域网对战(没有专用的游戏服务器),造成每个玩家都有完整的游戏数据,只是游戏本身的逻辑隐藏了不可见的单位和地形。
  • 由于网络、盗版原因,很多玩家只能通过对战平台进行在线多人游戏。
  • 对战平台使用模拟局域网对战的方式连接参与游戏的玩家。

可以通过以下方式定位到在屏幕上绘制单位的地方:

  • 1 找到一个看的见得任意单位X,用ce打开war3.exe 搜索(bool) 1
  • 2 移动自己的单位,使得自己丢失X的视野,搜索(bool) 0
  • 3 重复1、2 步数次,直到ce搜索结果数量降到100(大约)以下
  • 4 在结果集中选定一个锁定其数值为1,如果观察到此单位在地图上闪烁说明找对了地址,删除其他结果(可以使用二分法节省时间)
  • 5 使用ce查找是哪里访问了这个数值

根据程序逻辑即可来到 game.dll + 0x1BFEE5 JNE -> JMP 即可绕过视野检测在地图上显示所有单位,以下是完整的patch列表

格式:{game.dll的偏移量,patch大小,patch内容,备份地址}

//大地图

{0x1BFEE5,1,"\xEB",nullptr},

//显示隐身单位

{0x370AD3,1,"\xEB",nullptr},

//小地图

{0x3BD7E5,2,"\x33\xC0",nullptr},

//视野外点击单位模型

{0x6516A3,1,"\xEB",nullptr},

//视野外点击物品模型

{0x1C0144,1,"\xEB",nullptr},

//显示视野外物品

{0x1C0053,1,"\xEB",nullptr},

//显示敌方小地图信号

{0x251274,1,"\xFC",nullptr},

{0x251287,1,"\xFC",nullptr},

//分辨幻象单位

{0x66E457,2,"\x40\xC3",nullptr},

{0x5E20D1,1,"\xCC",nullptr},

{0x47EE5E,1,"\x8C",nullptr},

{0x66E71E,1,"\xEB",nullptr},

{0x392818,2,"\x90\x90",nullptr},

{0x392858,2,"\x90\x90",nullptr},

//显示敌方金钱

{0x3BEC40,2,"\x90\x90",nullptr},

{0x3B0E33,2,"\x90\x90",nullptr},

{0x3B1593,2,"\x90\x90",nullptr},

{0x3B3993,2,"\x90\x90",nullptr},

{0x67A599,2,"\x90\x90",nullptr},

{0x3AAA17,1,"\xEB",nullptr},

//显示视野外弹道轨迹

{0x36F670,2,"\x90\x90",nullptr},

踢出玩家原理

该部分内容仅供学习原理使用。

最早的对战平台采用的解决方案是一种比较通用的模拟局域网方法。

平台通过转发、广播数据包把加入游戏的玩家接入一个模拟的局域网,利用游戏自带的局域网对战功能。

但是这种方法有显著的缺点:

1.平台无法获取可靠的游戏状态,玩家可以欺骗平台操纵游戏结果(胜利/失败)。

2.平台不是GameHost,GameHost会自动在参与的玩家中选举出来。

GameHost接受来自其他玩家的tick,打上时间戳之后再发送给其他玩家。

GameHost如果想可以随心所欲的干以下的事:

  • 直接断开与某个玩家的链接。(该玩家直接离开游戏,没有等待玩家)
  • 停止向某个玩家转发tick。(该玩家提示重连,读秒结束后断开链接)
  • 过滤一些重要的tick。(该玩家没有掉线,但可以让他:无法发布命令;无法聊天;)
  • 随机丢弃一些tick。(该玩家玩起来会有明显的卡顿、延迟)
  • 伪造聊天信息。

如今平台以第三方的身份加入了游戏,平台是其中的一位玩家,平台保证它会被选举为GameHost。从技术上来说杜绝了t人的可能。

t人的方法(前提是当前玩家被选举为GameHost):

hook WSASend,匹配字符串,如果命中就直接closesocket。

比如匹配“kuihuadianxueshou”,然后在游戏中跟受害者发送这段消息,受害者的链接就会直接断开。

其他外挂原理

连击

在格斗或moba游戏中,可以通过按键精灵等鼠标宏的方式打出连击。

崩人

GTA5中,可以通过上传大量数据的方式让其他人的电脑瞬间过载,此时系统会出于保护电脑目的结束游戏进程。

反外挂手段

  • 服务器运算
通过检测玩家的行为来检测作弊的方法
  1. 在魔兽争霸等rts游戏中,玩家会反馈给host当前被玩家选中的单位,一旦玩家点击了在该玩家视野之外的单位host就会发现。但是平台们好像都没有使用这一点检测
  2. 在fps游戏中,可以通过判断玩家鼠标的移动轨迹判断(包括移动速度),如果系统发现超出人了极限的反应时间和移动速度时就会判定为作弊。虽然大部分作弊可以模仿人类的移动方式
  • 检测系统
有相当一部分检测系统会以软件驱动(并不真正驱动任何硬件设备的驱动)的方式运行在r0层拥有最高权限,主要用来保护游戏进程的内存不被第三方读取(读取游戏内部数据)和修改(对游戏进行patch || hook,新建线程,非法注入模块,非法调用游戏内的函数等等)
相当一部分检测系统会检测当前系统的硬件指纹(主板序列号,磁盘序列号,bios序列号等等的哈希值),方便硬件封禁
同时会检测当前系统运行的进程通过外挂特征码的方式检测当前是否运行着外挂程序(所以外挂都要经常更新以规避特征码检测,会出现专门为某个实体定制的版本)有些特别丧心病狂的检测系统甚至会直接扫描物理内存
检测系统会hook关键的系统调用方便隐藏和保护游戏进程,同时会对系统本身和游戏的代码进行混淆处理(简单混淆,轻量级虚拟化,完全虚拟化),反调试,用于防止逆向分析
上述功能通过劫持操作系统的关键处理过程,虽然有效的防止了对游戏内存的访问和修改,但是bypass检测系统的方法还是层出不穷,因为外挂也在不断进化,在同一个特权级(r0)上的争斗是无穷无尽的。
在双方技术都比较成熟的情况下,只能通过抓取外挂程序特征码在通过云端动态下发检测shellcode批量封禁已经被广泛传播的外挂程序的使用者
  • 人工监管
利用人工审查来封禁作弊玩家,准确率高。
  • 实名认证
进行过认证的账号会与玩家身份证绑定。一旦作弊被抓到,只要绑定此身份证的游戏帐号以后永远无法登陆游戏。
  • 硬件ID绑定
在此主板上进行游戏的其他账号也会一起被封。暴雪我说你呢
  • 反外挂外挂

某些痛恨外挂的玩家开发的外挂,使游戏变得简单无法玩

衍生义

外挂也可以用来指“实现不可能实现之事”或者“好到逆天的运气”,在口头表达上常用“开挂了”来形容,其含义是“这人/事情办得可真厉害,真是出乎人的意料”。

在军事领域,外挂一词指的是飞机或直升机等的军用飞行器以外部挂载的方式携带武器或辅助设备的做法,与“内挂”(即挂在舱室里)相对。

当然也可以指“火车挂票”。

花钱买挂的人被称作“氪家人”,暗指把妈卖了。

Minecraft圈,“挂”另有一种称呼:“纪”,与之相对的,“挂逼”称作“纪狗”,但是请注意,这种称呼是侮辱性称呼,一般只在小学生范围内流行。

用法举例

  • CS等射击游戏的外挂举例:穿墙挂、爆头挂、透视挂、隐形单位显形挂等。[1]
  • Dota类游戏外挂举例:全图挂、踢人挂。
  • GTAOL类游戏外挂举例:无敌挂、刷钱挂、瞬移挂、所有玩家瞬间爆炸挂。
  • RTS类游戏外挂举例:视野挂、金钱挂。
  • 二次元主角外挂举例:主角光环挂、新手光环
  • 天朝战争外挂举例:暴兵挂。
  • 地球Online中国模式外挂举例:爸爸是李刚、帝都户口、外国国籍。
  • Hyper Muteki害怕母铁鸡
  • 哈利波特的隐形衣

注释及外部链接