对于游戏开发者来讲,外挂是深通恶绝的,它一方面破坏了游戏的公平性,形成大量玩家流失,另外一反面又加快了游戏节奏和资源产出,让开发商利益受损。对于这种让玩家和开发商都不讨好的行为,必定要坚定打击。算法
但现实状况是,外挂很难完全杜绝,特别是你的游戏火爆的时候,会有一大批外挂盯着你的游戏漏洞,让你防不胜防,你惟一能作的只能去不断的完善,作好安全预防和检测,和它作攻防斗争,或者从设计之初,就作好主要安全构筑,提高游戏的防外挂能力。安全
下面咱们介绍几种常见的外挂形式,给一些简单的建议,供你们一块儿探讨。本篇不涉及具体的操做和做弊工具使用,下篇再聊。服务器
协议破解是一种常见的方式,主要是针对通讯内容进行破解,对于采用hash加密的协议来讲,会被彩虹表暴力破解。对于采用对称加密的算法来讲,若是密钥被截获或者从文件破解,都会触发这种解密行为。如果采用非对称加密,对服务器的性能损耗太严重了,不值得,因此好的方式还自定义一种动态密钥,加大被破解的难度。网络
加快游戏的时间或者帧率,让人物快速移动、快进技能CD等,或者遇到一些操做比较难的关卡,减慢游戏节奏,减低操做难度,从而影响游戏的帧率,加速过关,减速躲避技能等。函数
对于这种行为,通常是客户端和服务器作好心跳检测,检查客户端时间,防止篡改,另外一方面作好客户端输入数据检查,作到验证数据以服务为准。工具
修改内存数据,这个在以战斗逻辑主要客户端计算的游戏中,常常会出现。这类外挂经过分析游戏所使用的内存,找到内存中的变量去分析猜想变量是表明的什么含义。而后再去修改这个值,令玩家控制的角色战斗力爆棚,好比技能CD直接修改成0,或者攻击值修改变大等。这个一方面客户端要对内存数据作好加密,另外一方面服务器得作好验证,不能以客户端为准,具体形式后面再讲。性能
对于有些协议加密比较严谨的项目,协议数据破解会很难,做弊者破解不了,就重发或者篡改向服务器发的包,好比充值包,或者购买道具包,他们会采用WPE工具截取到发送的包以后,再次重发,若是服务器没有作好惟一认证或者逻辑严格检查,就会被这种重发包给攻击,形成大量道具的产出。 发放技能这种包也能够被重发,这样能够无限放技能。加密
这种常见的就是采用按键精灵,对于一些任务系统,或者采集系统,经过按键精灵来录入操做,模拟人手操做,加快收集过程,对于这种的就须要服务器进行分析了,不过影响不是很大,根据影响效果来看是否处理spa
这种比较高级了,通常会对没有加壳保护的客户端包进行逆向分析,好比把你的包加入外挂程序从新打包,或者逆向出你的加密函数,把本身的想要发出的数据,回溯到加密函数,执行加密再发送等,对外挂人员的要求比较高,对安全人员的要求也更高,通常就得作加壳加密,资源加密等一系列防御,防止程序被逆向。设计
fps外挂要被单拎出来,是由于这个被搞的太厉害也比较高端了,其中牵扯到内存修改,坐标定位,以及劫持系统渲染等。不过目前也有工具支持了。
FPS类游戏面临的两大外挂问题:透视和自瞄。这也是多数FPS游戏所遇到的问题,好比守望先锋和穿越火线等。
透视分为方框透视和人物透视,具体的方框透视,我没有仔细研究过,大概也是经过坐标系来定位的,而坐标系的数据也是经过内存数据读取出来的,因此说如果内存数据没有保护好,这个也是会被搞的。而人物透视就是采用劫持系统渲染的逻辑来实现的,简单粗暴。
自瞄是方框透视的附带功能,可是比方框透视更难以检测。由于自瞄从原理上来讲仅仅是模拟了鼠标的移动,并无实际对游戏进行干涉。因此这种方式想要验证,只能经过服务器来分析是不是输入设备的操做来处理了,相对比较困难。
目前多数游戏为了作好用户的操做体验,大部分的运行和渲染逻辑都在客户端,再加上网络延迟的问题,服务器用来验证客户端输入的准确性难道愈来愈大,作的过于严谨会形成误伤,作的宽松又会被外挂利用,因此业内也采用了各类各样的方式来解决,并无统一的方案,我讲一些咱们本身的方式,好比会把关键战斗的操做数据保存下来,存入到一个分析库里面,让防做弊的机器用来分析处理。
作好关键资源报警监控,对于出现玩家爆出大量资源产出的时候,作好防范,一旦出现,及时处理和分析。
从上面的做弊方式能够看到,不少做弊方式已经出如今客户端了,因此客户端除了作好协议加密意外,还得对包加壳加密,防止逻辑被反编译,对资源作好加密,防止资源被盗取,对内存作好加密和混淆,防止被篡改等。
游戏的防做弊是一件不易的事情,要想作到全面的安全提高, 须要作不少细节上延伸和增强,目前不少一线的大厂已经作出了本身的一套防做弊系统,包含客户端程序的打包加密,以及服务器的防做弊分析,期待可以开放出来,也方便一些工做室和没有这部分精力研发的小厂使用,收费也好,起码是节省出研发成本。
具体的加密和破解工具的使用方式,下篇再聊,还原持续关注。
-----------------------------------------------------------------------------
想看更多有趣原创的技术文章,扫描关注公众号。
关注我的成长和游戏研发,推进国内游戏社区的成长与进步。