网络游戏外挂与反外挂的研究
序
你见到过哪些NB的外挂?
外挂的分类:
反外挂的分类:
国内外当前的状况
国外
国内
外挂的研究
1.模拟类
2.内存修改类外挂
3.封包类外挂
3.脱机类外挂
网络游戏封包加密技术
异或加密
RC4 加密
RSA 加密
网络游戏外挂检测技术
鼠标键盘模拟检测技术
游戏数据修改检测技术
外挂实现与反外挂举例
射击类外挂
游戏实现要怎么预防呢?
杂谈
序
全球的网络的几乎普及到了每个角落,伴随着全球经济的发展与进步,游戏行业的玩家越来越多,许多违法犯法的活动也在网络游戏行业越来越多,也变得越来越多样化。例如 FPS 射击类游戏,这种以自由射击为蓝本的的竞技类游戏,深受网络外挂的毒害和侵扰,极大地破坏了竞技类游戏的公平性,由于竞技类游戏的功利性,很多新手玩家想要获得成就感,给外挂提供了滋生的环境,并且这类游戏的一些关键数据只能保存在本地客户端,不能实时上传服务器导致了外挂的泛滥,而外挂制作者通过售卖外挂非法获得巨额利润,所以防御和解决网络游戏中的非法行为已经迫在眉睫。
你见到过哪些NB的外挂?
CF:
透视(能用另一种颜色标识墙后敌人),
自瞄(瞬间自动瞄准敌人),
自动开枪(当枪在敌人身上会自动开火),
飞天(人能走到地底下),
遁地(同上),
无后座力(一般开枪,瞄准方向会上扬)
远程装包(C4远程安装)
DNF:
人物变大型外挂(这类外挂可以让角色瞬间变超大,技能也会随之变大)
全技能无消耗 (就是任何一个职业可以使用这个职业所有技能)
召唤某一个东西(召唤一些强力的怪)
全图秒杀 (一键全图的怪都死了)
召唤怪物类 (召唤一只或多只地下城里的怪物来帮你刷图)
冒险岛:
飞天,吸怪,无敌,自动攻击
QQ炫舞:
自动perfect
炉石传说:
自动上分(利用深度学习,自动战斗出牌)
LOL:
自动躲技能,神走位,自动战斗
韩服一些游戏(检测很弱):
修改本地txt的几个0 1
以上只是举一些例子,其实游戏外挂已经有很多很多了,在国外深圳有专门的论坛去学习,分享外挂制作的方法,比如看雪:link.
外挂的分类:
现如今游戏外挂的种类繁多,而且是每个网络游戏对应一种系列的外挂,针对某一个游戏,其外挂商家可能就多达 100 多家,而这些外挂所提供的的针对该游戏的功能达到几十种,所以面对这么多的外挂很有必要对外挂做一些分类,方便分析和总结外挂的技术和特点,传统的外挂分类方法笼统的把外挂分为两大类:非修改游戏数据类外挂和修改数据类外挂,其具体功能如下:
分类 功能
非修改游戏数据类外挂 通过模拟键盘鼠标操作,将网络游戏中很繁琐的动作或者重复的无聊的很费玩家时间的流程和任务使用外挂帮助玩家完成,达到方便和解放玩家的目的
修改游戏数据类外挂 修改游戏数据类外挂是由外挂获取服务器与客户端通信产生的网络游戏封包进行修改或修改客户端本地的内存数据,并将这些修改后的封包或者内存地址发送给服务器端,得到外挂想要的结果和数据,外挂通过修改封包信息和客户端内存地址,使角色人物的属性和状态发生改变
反外挂的分类:
由于在国外像魔兽世界这类大型网络游戏的盛行,K. Park 等人针对该类游戏的外挂进行研究,并把此类游戏的外挂进行了总结分类,分别为针对服务器攻击的外挂、针对客户端数据攻击的外挂、针对网络流量攻击的外挂以及针对正常玩家攻击的外挂,并把游戏外挂的检测方法分为三类,即玩家客户端检测,游戏网络通信检测和游戏远程服务端检测,如下表:
分类 方法 实例
用户端 开发商的反作弊系统 腾讯的TP,Valve的VAC
用户端 第三方反外挂开发商的反作弊系统 绝地求生采用的BettleEye 系统
用户端 用户举报以及人工巡检系统 几乎所有的游戏都会做这样的系统
网络通信 监控流量,往返的时间值的比较 现在比较普遍的手段
网络通信 封包数据加密 现在比较普遍的手段
服务器 分析玩家的游戏日志是否异常 梦幻西游,地下城
服务器 不定时的图片验证或者数字问答验证 问道
国内外当前的状况
国外
Ronald L.Rivest 等人研究了玩家客户端向服务器发送数据封包命令的情况,监控了不同时间段的不同的流量总量的情况下,在使用外挂时与正常游戏时的流量变化的不同之处,以此来作为识别外挂的手段。David A.solomon 等人指出,脱机类外挂及机器人类的外挂在数据流量上会体现出一定的规律性,并会表现出数据包发送具有固定的时间间隔和频率极快的特点。William R.Cheswick 等人根据行为分析的方法,利用机器人操作与玩家操作的不同之处,分析两者之间的差异特征,研究正常玩家的行为日志和机器人的行为日志,通过分析对比找出外挂使用者。Matt Pietrek 等人使用玩家角色的路径分析方法,玩家正常游戏时的移动路径是变化的,随机的,走相同的路有不同的路径,而机器人外挂操作的角色经过相同地点时的路径点大部分是重复的,通过对比玩家角色的路径,会发现使用外挂会反复出现相同的路径坐标,所以可以以此数据来检测玩家是否使用外挂。用户端的反外挂系统,会为玩家带来很多不便,经常会与系统平台和其他相关软件发生冲突。例如,在用户端加上外挂监测机制,但是程序本身对游戏没有任何益处,而且加重玩家电脑的负担,并且即使检测到外挂,也只能检测当前的用户,只有一个违法行为,且不法分子完全可以针对该程序设计逃避检测方法。而对于网络通信的检测方法早已过时,现在所有的游戏都有网络通信的时间验证和流量监控,时间加速类外挂也不存在了,不法分子的外挂制作更加高级和隐蔽,网络通信的检测办法已经对当前的外挂无能为力。为了克服客户端和网络端检测的缺点,游戏开发商们和第三方反外挂机构都将重点检测机制放在了服务器端,尤其通过对玩家的行为日志分析检测,判断该游戏人物是否存在异常。
如今国外存在防御外挂的方法有很多,但是效果比较好且比较流行的有:角色行为分析,角色移动路径分析,数据包验证,弹出事件检测。在玩家游戏时,弹出图片类验证码测试,玩家可以很容易解决,但是如果存在脱机外挂代替玩家自己操作人物,那么外挂就很难识别,游戏系统就可以判断出该角色是否是脱机挂玩家,但是由于如今人脸识别和图像处理技术的提高,图片中的关键字和数字已经很容易检测出来,这种反外挂方法作用也越来越小。
国内
国内的外挂其历史可以追溯到单机游戏时代,那时它的名字是游戏修改器,因为其可以在游戏中追踪锁定游戏角色的各项数据参数,通过修改各项参数来降低游戏难度,使玩家更容易在游戏中得到乐趣。随着国内经济发展以及互联网普及度越来越高,网络游戏也应运而生,游戏外挂功能也变得越来越强大,在原有的基础上增加了很多新的功能,腾讯的网络游戏《地下城与勇士》,外挂种类和功能多种多样,例如:秒怪、瞬移、顺图、无敌、透明、加三维、加移速、自动补血等,利用这些功能可以在游戏中轻松打怪练级爆装备,让外挂玩家轻松升级做任务。为了阻止网络游戏外挂的蔓延和维护自己应得的权益,国内网络游戏开发商制定了很多的反外挂系统和措施来预防和检测网络游戏非法外挂,但效果都不太好,比如地下城与勇士,游戏从发行到现在已经 10 年之久,但是外挂一直存活至今,甚至公然在游戏中喊话卖外挂。随着技术的创新和发展,国内的反外挂系统也有了自己的成果,下文主要对国内的四类反外挂系统做了说明。
第一种方法是验证分析方法。验证分析方法检测的是脱机外挂,脱机类外挂危害最大,破坏游戏平衡,造成客户端与服务器通讯拥堵,引发游戏中的物价的上涨和暴跌,最终导致游戏的金钱系统崩溃,流失大量玩家。验证分析法的检测原理是:在游戏人物休息时,弹出不确定的验证码,让玩家手动输入答案,来区分机器人外挂和玩家。验证分析方法有两种类型的验证分别为:验证码识别技术和图像验证技术。验证码识别技术(Gimpy)是服务器端随机从数据库中抽取一定比例的数字和一定比例的汉字,发送到玩家的客户端,让玩家进行识别验证,判断操作该游戏角色的是机器人托管还是玩家本人[12]。图像验证(Pix)的方法和它只有轻微的差别,图像验证技术的数据库是各种各样的图形,让玩家选择不同的符合要求的图形来验证其身份,这两种方法都是比较常规的方法,利用机器人外挂的判断逻辑漏洞来进行识别和验证其真实身份。由于图像识别技术的发展和提高,这两种方法都被不法分子利用图像识别技术自动识别填写内容,效果越来越差,国内的游戏开发商又发展新的验证办法如:图像或者文字归类验证方法和玩家声音识别验证方法。这两种方法能有效的识别出机器人,但是其占用资源大,并且不够直接,影响玩家游戏体验,降低游戏的可玩性。并且该检测方法具有最大的弊端是检测时间是比较随机和不确定的,极有可能在玩家操作角色的关键时刻弹出验证信息,导致操作失败或者对局失利,及其影响玩家体验,所以在如今的网络游戏中这种验证分析技术使用的越来越少,逐渐被淘汰,退出了历史舞台,但是这种技术在其刚开发的初期,对于外挂的检测,尤其是脱机类机器人外挂提供了很大的助力。
第二种方法是对服务器和客户端的通信数据进行加密的方法 。它的原理是通过对传送数据的加密,让服务器与客户端的通信数据进行交互及校验时,其通信数据不被泄露,如:地下城与勇士游戏,玩家在通关本局时,通关评分是 S,外挂找到其数据,修改为 SSS 评分,然后客户端把修改后的数据发送给服务器端以达到其增加游戏评分的目的,但是如果在游戏设计的时候增加一个加解密过程,先对需要通信的数据进行加密,然后发送给用户端,那么该数据外挂就无能为力。虽然对通信数据添加加解密这样的过程能够有效的阻止外挂对其的修改,但是整体增加了游戏服务器的负担,影响游戏的整体流畅度和效率,而且其加密秘钥也容易泄露,因为其解密在客户端进行,而客户端已经下载到玩家电脑上,所以外挂制作者们费一些功夫就能找到该解密秘钥,所以该方法存在很大的安全隐患。
第三种方法是阻断网络游戏外挂程序的方法。该方法的原理是在游戏客户端启动执行的时候,附加外挂检测手段,查看电脑中是否有修改本地内存的操作或者权限的软件在运行中,若检测到立马终止其操作,如果不能阻止那么立马阻止游戏客户端的启动,防止客户端被调试或修改。但是该方法同样被外挂制作玩家破解,外挂制作者完全可以在客户端截获从服务器端发来的监测数据packet,然后伪造检测数据,外挂已经修改了一个地址,但是改地址会被检测,那么根据被检测的地址伪造数据,返回被修改前的数据,这样无论外挂修改了哪个地址都不会被检测到。
第四种方法是一种防止网络游戏外挂软件的集成办法。该办法比前面三种更为强大和全面,它不仅能保护游戏数据的安全,对数据进行加密更能对外挂进行有效的检测。该方法主要是从三个方面进行防护:
提供数据游戏封包数据加密方法。
提供游戏外挂的检测系统。
具有防御外挂的装置。
但是这种方法是通过从玩家客户端的数据和服务器的数据进行分析对比,来判断是否存在非法行为,外挂制作者利用封包分析工具 WPE 发送相同的数据,选择最好的结果的数据,比如评分最高的数据,并不修改数据本身的内容,使得该外挂检测系统识别不出来。
当前的反外挂技术都存在或多或少的漏洞,游戏一旦发布就会面临着世界上所有黑客的攻击和分析,找出其漏洞来获取非法利益,所以反外挂道路任重而道远。
外挂的研究
1.模拟类
模拟类外挂是代替玩家操作鼠标键盘,模拟玩家操作类的程序,它能帮助玩家用简单的操作实现让游戏角色进行复杂的动作,简化甚至替代玩家操作,帮助玩家不用点击鼠标或者敲击键盘就可以进行游戏操作的自动功能。例如:简单的射击操作、简单的移动操作、捡东西等,这类外挂不需要分析游戏的数据和加密算法,只需要按照一定规律或顺序设计一组按键操作或者按键的触发条件就可以[23]。不过随着时间的推移和技术的发展,这类外挂也形成一种体系,比如非常出名的“按键精灵”,他可以配合其他类的外挂进行功能组合,达到自动拾取,自动放技能的作用,在已经分析出人物数据、掉落物品数据的情况下,设定坐标相同时触发拾取按键功能,就可以达到自动拾取的功能。这种外挂没有修改游戏的数据和物品,只是作为辅助方便的了游戏玩家和节省了很多无聊的操作和时间,一般对游戏危害比较轻。
模拟类外挂实现方法较简单,用几个 API 函数就可以实现模拟键盘和鼠标的操作,通过 API 函数来代替键鼠操作,把键鼠操作指令发送给游戏程序,让玩家的游戏角色进行移动、攻击、捡取物品等行为操作。
2.内存修改类外挂
内存修改类外挂可以分为以下三种:
第一种方法是利用 virtual X driver(虚拟设备驱动程序)直接查找游戏内存分配地址,这种方法需外挂开发人员有良好的编程基础和系统的底层驱动知识,是技术较难的一种方法,门槛较高。
第二种方法就是用 ToolHelp API 函数,该函数是用来枚举进程和模块,获取进程和模块的 ID 与信息。黑客利用 ReadProcess Memory 函数从网络游戏的进程中读取到游戏的内存数据,但是该方法没有修改内存的函数,不能往内存里写数据,所以这种方法需要其他方法的配合,具有一定的弊端。
第三种方法是利用游戏进程的对应函数,这种方法比前两种要方便和简单很多,游戏进程的对应函数很容易就能得到,例如利用:ReadProcessMemory 和 WriteProcess-Memory 两个函数对游戏进程进行读取和写入,这种方法是当下最流行最受欢迎的方法,该方法能修改市面上大多数的游戏内存。
Windows 系统会预留一些 API 函数,这样会大大降低开发人员的开发程序的难度和复杂度,这些函数原本是用来调试程序,但是外挂制作人员利用这些 API 函数修改游戏内存进行非法外挂的制作,其中典型的两个 API 函数分别为 ReadProcessMemory 和WriteProcessMemory,一个是对游戏程序内存进行读取,另一个是对游戏内存程序进行写入操作。但在使用这两个函数之前,想要对网络游戏内存进行读取和修改,首先要查找到游戏中相关属性的内存地址,才能进行修改,所以相对内存修改而言游戏中人物属性的相关内存查询更加困难和繁琐,需要找到合适的算法和公式进行分析。
3.封包类外挂
封包类外挂是难度较高的一种外挂技术,涉及多个技术问题,网络游戏的服务器端和客户端通信是利用 socket,服务器端申请一个socket 监听消息,并绑定到一个对应的 IP 地址和端口上,等待游戏客户端的连接,外挂制作者利用封包截取工具截取通信数据包,经过多次截取封包,分析数据,得到封包数据对应的人物操作或属性,若封包加密则分析其加密算法,网络游戏的前期由于其服务器功能的限制,一般封包都不加密或者采用异或加密很好破解,修改对应的数据,再利用封包截获工具(如windivert)转发给服务器,通过篡改通信数据来实现作弊。
由于互联网通讯技术的发展和计算机硬件功能的更新与加强,封包数据只能用异或加密的限制已经不存在,现在的游戏客户端在和远程服务器通信时一般都利用 RC4 和 RSA 进行加密,封包外挂技术即使截获了数据,也破解不了被加密的数据。所以对网络游戏的危害已经变得越来越小。
3.脱机类外挂
脱机类外挂是一种综合类外挂,是前三类外挂技术的总和,也是难度最大的一种外挂,一般在一个游戏发布 3 到 5 年之后,才会在市面上流传的外挂,是制作周期最长所需技术最为复杂的外挂。每个游戏都有自己特有的通信方法和原理,外挂开发者们需要完全分析出本地端与远处服务端的通信原理,达到不使用客户端进入游戏的目的,这类外挂是为工作室而开发,一台机子可以开几十个号同时挂机练级和刷金币,获取非法利益。
开发流程如下:
破除游戏反调试。
逆向分析出游戏加解密算法。
逆向分析出地图等资源信息
分析出登陆封包,实现脱机登陆,获取角色属性、装备、物品、技能相关信息。
具体功能封包分析。
整合寻路算法,实现基本挂机。
根据工作室需求,完善功能。
一个游戏如果被外挂制作者们开发出脱机外挂,对该游戏破坏是灾难性的,脱机外挂的出现必然会导致游戏中物价的起伏,甚至金钱系统的崩溃,损害正常玩家的利益,造成玩家大量流失,最后导致游戏运营时间缩短提前退出市场,严重损害游戏开发商和玩家的利益,扰乱我国游戏行业的正常发展,所以脱机类外挂一直是游戏开发商和国家重点打击的对象。
网络游戏封包加密技术
异或加密
网游游戏最开始运用的加密算法是异或加密,顾名思义该加密算法就是经过简单的异或的位运算进行加密,跟高中数学所学的映射关系相类似,由于其运算简单,加密速度快,而且在网络游戏初期受服务器和电脑硬件配置的限制,网络游戏加密只能运用此类加密算法,但该加密算法很容易被破解,若游戏的通信机密算法被破解,只能等待游戏的下一次更新进行修改和维护。这种加密算法存在很大的弊端,对数据的保护强度很差,早期的游戏开发商只能增加游戏的维护频率和周期,进行不定时的更换映射规则,预防外挂的破解。
异或加密的数据很容易破解,例如:网络游戏中所使用的地址一般是一个 8 位的 16进制数,通信所发送的数据也是 16 进制,下面一段数据是利用 WPE 工具在玩家操作游戏界面进行登录时被截取的一段数据,很明显该数据为登录时玩家输入的登录账号和密码。
Send: 0000 01 00 00 00 68 75 61 6e 67 6a 75 6e 31 31 38 00
00 02 00 6a 75 6e 6a 75 6e 31 32 33 33 34 00 00
由 WPE 截获的数据看出,用户名经过异或加密是: 68 75 61 6e 67 6a 75 6e 30 30 37;
登录密码经过加密是: 6a 75 6e 6a 75 6e 31 32 33 33 34。用辅助软件和规律分析,很快就
可以得出解密后的明文。然后利用 16 进制换算为 10 进制,并从 ASCII 码表中找到对应
的 ASCII 码值,就可以计算出原文的数据:用户名: huangjun118,密码:junjun12345。
RC4 加密
算法见我的另一篇文章:
link.
RSA 加密
link.
网络游戏外挂检测技术
鼠标键盘模拟检测技术
键盘鼠标模拟外挂是通过软件模拟人工操作鼠标和键盘进行替代玩家操作的外挂,比较流行的外挂如:按键精灵、鼠标连点器、简单游等外挂软件。
网络游戏开发商检测该类外挂总体用两种方法,一种是客户端检测,一种是用户行为分析检测。客户端软件检测主要有检测玩家电脑上运行程序的进绝地求生号程、窗口名、界面名字、机器码和软件特征码等。举个简单的例子,一些外挂软件被黑客制作出来进行出售,如果销量比较高,用该外挂的次数比较多,那么该软件的一些特征码就会被加入黑名单,只要在运行游戏时,打开此类外挂就会提示非法,但是如果把外挂代码放入其他的编程语言进行编辑再打开却没有提示非法外挂,这里也是游戏商的一个痛点之一,如果游戏因为代码编辑工具就提示非法,这就违背了国家制定的版权规定,所以此类方法只能遏制外挂的泛滥而不能完全禁绝外挂。所以目前比较流行的方法也是大多是游戏开发商使用的方法:用户行为分析检测,主要有以下几点:
分析鼠标点击频率和移动频率,如果存在长时间的点击频率相同和类似,或者点击频率过快,都会被加入黑名单。
判断游戏角色的差异值,一般模拟类软件的角色行为和玩家的行为差距很大,这种差距安全人员一眼都可以看出来,但是游戏开发商不可能有那么多的人工对所有玩家进行监测,所以游戏开发商会针对游戏角色的行为设置一个范围值,即临界点,如果过了该临界值就加入黑名单或者直接弹窗非法,强制下线该账号。
监测结果数据,游戏公司对游戏中关键的数据进行严格的监控,利用时间的大间隔对关键数据的结果进行上传,对上传到服务器的数据进行临界值检测,若有异常数据,则判断为非法使用模拟类外挂。由于此类外挂对游戏的公平性有影响,但是危害性比较低,所以游戏开发商一旦检测到此类外挂,只会对该玩家做下线处理并弹窗警告,并不会做封号处理。
游戏数据修改检测技术
在网络游戏反外挂的历史中,曾有一个很流行的反外挂系统 N-Protect,该系统是当时网络游戏普遍采用的反外挂系统,该系统可以在线进行升级,并同时在玩家运行游戏时检测游戏运行环境,是否有外挂运行,客户端是否完整,是否有外挂存在修改客户端内存数据。但是这用外挂检测办法本身就存在缺陷,因为反外挂系统 N-Protect 本身就存在于游戏的客户端的机子上,该电脑是玩家所有,如何能够保证该外挂程序不会被修改和欺骗,客户端可以被修改,那么该反外挂程序一样可以被修改,所以该反外挂系统投入运营了一段时间后,被国内的黑客攻破,最终该系统以失败而告终。想要检测游戏外挂存在以下难点:
无法完全防止游戏客户端被修改,游戏客户端一旦到了玩家和黑客手上,根本无法阻止黑客的修改。即使有法律的制约,在当前的社会情况下也无法有效的监督其个人行为。
对游戏客户端的检查容易被欺骗,当检测系统检查客户端的完整性的时候,外挂制作者完全可以伪造一个安全的进程,把合理的代码放进去,让检测系统检测假的数据,这样无论客户端被怎么样修改检测系统都不会发现。
挂检测系统无法把检测到的结果正确的传递给服务器,外挂制作者找到其检测结果的数据,即使该检测系统已经检测到非法软件,作弊者也可以篡改其检查结果,变为检测合法的数据分支,不管检测系统检测出什么外挂,都无法向服务器发送正确的检测结果。
因为游戏公司无法通过客户端的加壳和检测的方法有效的阻止作弊者修改其客户端,所以开发商又考虑从服务器端检测玩家的使用外挂修改本地数据的行为,具体方法如下:
检测玩家的 IP 地址,是否在同一个 IP 地址下存在很多游戏账号登录的情况,这里检测并不是一定要一个 IP 只有一个游戏账号,而是针对用软件模拟玩家操作,在同一个电脑中登录十几个账号的工作室,如果被检测到 IP 上有很多号,那么就会被服务器加入黑名单,甚至被全部封号。
限制客户端多开的数量,比如地下城与勇士该游戏在刚发行的时候只允许玩家在同一台电脑只能开一个客户端,随着游戏的运营和玩家的减少,开发商现在允许玩家进行双开设置,方便大号带小号。
检测 MAC 机器码,这种检测机制只有很小一部分开发商使用,因为一个电脑有一个固定的 MAC 码,不能被软件改变,所有如果玩家在一台电脑上长期使用外挂或者造成的影响非常恶劣,那么游戏就会把该台机器的 MAC 码加入黑名单,禁止该电脑登录游戏。
游戏内置举报系统,现如今几乎所有的网络游戏都有该功能,尤其是在竞技类游戏中,如果正常玩家被作弊玩家杀死,那么玩家肯定会举报该外挂,所以此类方法非常简单且效果强大。
根据玩家最近玩游戏的数据,延时分析游戏数据是否异常,这种检测机制是当下最流行的检测机制,在玩家使用外挂修改了人物的属性之后,利用变态的属性刷怪打装备,很安全所有难度都可以随便刷,并且也没有被检测到,但是等两天再登录的时候发现账号非法或者账号被封,这种情况就是服务器定时对玩家游戏数据进行分析,而且这种检测机制准确率非常高,只要发现数据异常很可能直接做封号处理。
外挂实现与反外挂举例
射击类外挂
射击类游戏(FPS)如:穿越火线、逆战、守望先锋、绝地求生、以及最近新出的apex 英雄,其特点是以第一人称视角或者第三人称视角进行操作虚拟人物进行射击交战,而游戏屏幕中间会有一个准星,这是枪械武器的射击位置,通过准星瞄准敌人进行射击交火,以达到击杀效果,若射击瞄准的是头部危险部位那么会发生一击致命,即爆头效果,达到快速击杀。但是头部相对于人物的整体是很小的一部分,很难被射击,且人物会一直移动再加上武器的后坐力,所以要打到头部危险部位几率非常小,那么外挂自动瞄准就是根据游戏漏洞进行编写,达到自动瞄准,形成一击必杀、百步穿杨效果。
游戏调试工具:CE和OllyDbg。
外挂制作者通过游戏调试工具,可以获取到游戏的基地址以及某个变量(如血量,子弹数,自己的位置,敌人的位置,朝向),通过数学运算,计算出自己与敌人之间的朝向与当前朝向的差异,一种方法可以直接修改本地朝向为自己直接朝向敌人,即准信瞄准敌人,另一种可以通过模拟鼠标操作,通过计算给一个输入,让自己的朝向锁定敌人。
除了内存挂现在已经可以完全可以通过键鼠模拟去瞄准敌人,如计算鼠标的灵敏度偏移,在渲染时拿到渲染的数据,一般人物会有标识可以找到,然后可以取到渲染的位置(如果在游戏上层加一层改变一下渲染颜色,就能做出透视挂),通过计算鼠标应该有的偏移,使用系统自带的系统接口可以直接在不移动鼠标情况下,操作游戏任务瞄准敌人,这也是锁头挂的原理。
后坐力的实现,有的游戏后坐力是纯客户端实现的,可以通过修改后坐力的系数,或者直接一直设置朝向达到无后座力,另一种就是使用输入反向输入后坐力的偏移,这样也能达到无后坐力。
飞天遁地挂的话主要是服务器没信任客户端,没有对客户端的位置进行校验,客户端通过修改1P的位置,然后告诉服务器,服务器因为没有校验合法性,直接同步给了其他3P导致。
自动开枪挂的原理跟上诉类似:也是在外面的准信即自己的准信对准敌人的时候,自动触发鼠标点击事件,达到自动开枪的目的。
游戏实现要怎么预防呢?
主要还是基于检测跟校验:
监听武器准星移动频率玩家在操作游戏人物的时候,鼠标控制武器准星的移动,玩家通过移动鼠标让武器准星瞄准敌人位置,进行射击。而自动瞄准外挂会让武器准星自动瞄准,不需要玩家移动鼠标瞄准,自瞄外挂代替了玩家操作鼠标,但是在自瞄外挂的控制下,武器准星移动的频率和准确率远远超过了玩家的操作极限和合理性。本文可以利用自动瞄准外挂这个特点来监视非法使用外挂的玩家,阻止玩家作弊。方法如下:
设定玩家移动武器准星最大频率值预先测定玩家移动鼠标的最大频率值,然后作为反外挂程序的基本标准。
判定外挂规则
判定方法具体为,用计数器B来记录频数,如果频数超过设定的标准,则另一个计数器A加1,如果第二次计数器B没有超过频数标准,则计数器A清零,避免由于人为的低概率事件的发生,如果连续3次超过频数标准,即计数器A的值超过3,则判定出现外挂程序,中止游戏。
监视玩家的命中概率
这种方式比较占内存,但是这种方法发现外挂的效率要比前一种方式高。下面介绍方法如下:
设定一个玩家命中率的最大值反复试验,测定玩家命中的最大概率,适当增加这个概率值,做为反外挂的一个基本参考标准,设该标准值为p。
判定规则
首先建立两个系统计数器n和m,用来监视射击类游戏窗口,当游戏中玩家对战开始时,启动两个计数器,玩家每发射一发子弹,计数器n加1,玩家发射的子弹每造成一次伤害计数器m加1,当本局游戏结束时,就会得到两个确定的值n和m,如果两者的比值大于反外挂系统设定的上限值,则判定该玩家使用外挂,终止游戏。如果两者比值小于该上限值,则把玩家添加进白名单,经过一段时间后,再进行监视,尽量减少服务器压力。
总之自动瞄准类外挂的防御程序的设计思路还有很多其它方法,比如外挂运行窗口检测、玩家的行为分析等方法,但是本文认为上面两种方法监听准星和监视命中率更为简洁和可靠。
杂谈
腾讯的TP反作弊算得上是效率最高的反作弊系统,TP反作弊的机制是通过扫描玩家硬盘,确认是否有疑似外挂的程序存在。但这一行为在很多国家和地区是不被允许的,去年欧盟国家更正完计算机用户隐私条例后,就对在欧盟国家中使用TP等硬盘扫描反作弊系统的游戏发出了警告。
《绝地求生》还采用过特征码的反作弊方式,每天都在更新,甚至一天更新两三次。而每一次更新都会让现有的大部分外挂失效。既然打不过你,还可以以逸待劳累死你。
还有一些公司不走寻常路,跳出了传统中路对线的思维局限,选择直接招安外挂的开发者来替自己针对其它外挂,简直妙哉
暴雪在这种事上就显得亦刚亦柔。一面出高价买下插件开发者为《魔兽世界》开发的各种"好插件"——有些破坏游戏环境的插件与外挂无异,有些则可以有机地融入到游戏玩法中;另一面又和德国的Bossland Gmbh打了八年官司,直到Bossland服软才罢休。
顺带一提,Bossland不仅仅是开发了《魔兽世界》的挂,他们给暴雪全家桶里的所有游戏都写了挂。
最为魔幻的是,外挂问题在我国国外游戏作弊泛滥的环境里,却被本土厂商和代理很好地遏制住。而这无疑要先归功于我国的法律。
国内对外挂案件的处理,在国内主要有三个罪名——非法经营罪(最高15年有期徒刑),侵犯著作权罪(最高7年有期徒刑)和破坏计算机信息系统罪(最高15年有期徒刑)。目前实际国内外挂案件判例中比较严重的外挂犯罪,通常会判5年左右有期徒刑。
有效动用法律手段,既维护了开发商和运营商的利益,也维护了玩家的体验。之前腾讯手撕了《穿越火线》的外挂开发者,判了两年有期徒刑;最近的《新天龙八部》的"冰焰"外挂也备受社会瞩目,因为开发者是一名中科大博士,可惜因为外挂断送了自己的生涯。
————————————————
版权声明:本文为CSDN博主「popcorn丶」的原创文章