一、 前言
随着移动互联网的兴起,移动游戏市场近几年突然爆发,收入规模快速增长。根据第三方数据统计,国内移动游戏2015年市场规模已达514.6亿。由于手游市场强势兴起,而且后续增长势头会愈加猛烈。火热的市场后面隐藏的问题也越来越多,其中手游外挂就是一个例子。目前移动游戏市场上,有多方需求在催促外挂的发展,大量屌丝玩家,想花少量的钱得到更大快感;竞品公司或者恶意玩家,想恶意破坏游戏正常活动运营。这类外挂会影响到游戏开发商的收益及众多正常游戏玩家的体验,因此必然需要一种反外挂的手段,来保证游戏开发商的合法利益。然而一些有实力的公司投入了不少资源来反外挂,虽然也卓有成效,但也大大增加了成本;一些实力相对弱小的公司则没有能力反外挂,这些公司的游戏很容易被外挂市场搞垮。就是在这种情况下,御安全加固平台推出了一种方便,高效以及成本低的基于APK加固的反外挂方法,来保护好手游免受外挂软件的侵扰。
二、 外挂种类及原理
移动游戏上已经出现过大量外挂样本,根据其特征可以分为以下几种:
①内存修改。
搜索修改游戏内存数据,利用修改器搜索相应数值,再根据数值变化规律多次搜索排除定位到相应属性在内存中的位置,直接修改成夸张效果值。在Android平台上较为主流,有烧饼、葫芦侠等典型代表.
②时间修改
加快游戏节奏,节省玩家时间;或者减慢游戏节奏,减低操作难度。其影响游戏帧更新频率,可实现加速过关、减速躲技能等外挂功能.
③资源修改
修改安装包中关键数据配置,修改替换游戏安装后的资源文件,破解或修改安装包资源(例如图片/音乐),重用游戏资源或制作广告版本.
④代码修改
可以通过修改客户端代码重新打包发布外挂版本,达到增加收益、去除限制、降低游戏难度的目的。修改代码库文件,直接替换安装后程序的库文件,可以通过hook方式动态修改内存中的执行代码.
⑤模拟器操作
让玩家可在PC上运行手游。PC上的模拟器,目前主要流行的是Android模拟器,其具体产品有TGP、海马玩、天天等模拟器.
⑥协议修改
用户修改上传数据,达到上报虚假数据作弊目的用户重复上传获取收益的消息,达到获取额外收益的目的用户上传不符合条件的消息,达到跳过客户端限制目的用户修改协议达到上传攻击信息的目的.
三、 反外挂系统
现有的反外挂系统主要分为终端侧反外挂系统以及服务器侧反外挂系统。
1)服务器端防外挂系统
①游戏时间相关校验。客户端计时不可信,需要在服务器校验客户端上传的时间参数是否合理,校验游戏过程数据和时间之间的关系是否合理(例如里程、时间、速度关系)
②游戏核心逻辑校验。每次操作均通过协议上传,服务器认可后再实际执行操作,每次操作服务器均要进行合理性判断,且判断结果实时反馈。
③玩家间数据相互校验。各玩家的操作经过服务器中转对其它玩家同步,如果核心逻辑在每个客户端单独计算,各玩家需定时上传各自游戏局势数据,服务器进行对比校验,如果核心逻辑在部分客户端计算,其他玩家需从该客户端同步局势数据,服务器需要校验主逻辑数据是否合理。
④游戏操作时序相关校验。部分操作有明确的时序要求,打乱时序可能导致额外收益。服务器端通过对客户端发送的操作时序进行校验,来判断客户端发送的请求时序是否合理。
服务器端防外挂的缺点:
(1)容易导致误杀
目前很多游戏的反外挂系统采用范围性的数值验证,由于本身的设计原因或者弱网络的原因,很多时候会造成误杀。
(2) 服务器端的设计非常复杂
由于服务器端的数据及流程校验和游戏的代码逻辑息息相关,所以服务器端防外挂的数据以及代码逻辑需要根据客户端的代码逻辑及数据进行设计和开发,这样会导致服务器端防外挂设计和客户端的代码逻辑进行紧耦合。客户端只要进行代码逻辑的修改,也有可能导致服务器端的防外挂系统进行修改。
(3)服务器端防外挂功能无法通用
每一款游戏都有自己的代码逻辑以及各种数据,所以服务器端的防外挂功能无法做到统一标准,对每一款游戏都使用。往往是只能针对特定的游戏进行定制化开发防外挂功能。
(4) 服务器端外挂系统维护成本高
综上所述,由于服务端外挂系统的复杂性以及定制化的多样性,必然导致开发成本以及维护成本不断增高。另外需要在服务器端进行各种逻辑和数据的校验,随着游戏的增多,系统设备的扩容以及系统的计算资源消耗也会越来越大,必然导致硬件成本及数据流量成本的增加。
2) 客户端防外挂系统
针对服务器端防外挂系统的不足,御安全加固系统开发出了一种基于客户端加固的防外挂系统,它是一种基于APK加固和防外挂系统相结合的一种防外挂方案。
御安全APK加固技术主要功能:
①DEX文件保护。
采用分片式按需加载技术,攻击者无法在内存中获取完整的DEX文件,再加上DEX内存分散功能,攻击者无法从一片连续的内存中Dump出DEX文件,大大加大了攻击者获取DEX的难度
②SO文件保护。
御安全加固保护逻辑,通过源码级的混淆,采取多种混淆方式,攻击者无法逆向其代码逻辑,另外,基于动态加载的SO加壳技术,也使得攻击者无法逆向保护逻辑以及原APK中SO的代码逻辑。
③资源文件保护。
御安全加固系统,可以针对APK的Assets,Raw及Res目录下的所有文件进行加密保护并进行完整性校验,经过御安全加固系统加固后的APK,资源无法被篡改,例如无法增加广告界面,也无法盗版APK里面的资源。可以很好地保护开发者的知识产权。
④内存保护。
防止通过动态调试的方式对APK进行调试,加固APK在被调试,或者其内存被篡改后,加固APK将自动退出。也可以防止通过进程调试的方式对加固APK进行进程调试,加固APK被进程调试的时候,加固APK也将自动退出。经过御安全加固系统加固后的APK,可以防止市面上所有主流的外挂软件对加固APK进行内存修改,如烧饼修改器,八门神器,叉叉修改器等上十种主流外挂软件。
⑤防止内存dump。
APK在运行时候,会在内存中释放全部或者部分源码,攻击者可以在运行时刻利用dump命令把这些源码导出。御安全加固后的APK,可以有效防止攻击者从内存中复制源代码。
⑥防游戏加速。
攻击者或者游戏玩家,通过市面上的外挂软件,可以加快游戏速度,破坏游戏平衡,用于加快战斗速度或者等待时间等场景。御安全加固后的APK,一旦发现玩家或者攻击者有加速或者减速游戏的行为,APK将自动终止运行。
御安全的整体APK保护方案以及对协议关键代码的保护,可以防止攻击者逆向协议的流程或者算法,避免攻击者对协议进行攻击,防止外挂软件通过破解协议的方式,攻击加固后的游戏。
四、 云-端结合防外挂攻击
相对于服务器端的防外挂软件系统,终端侧的防外挂方法也有其弱点,因为攻击者能够得到终端侧防外挂功能的逻辑实体,尽管我们对其做了严密的保护,但是也难免可能被攻击者绕过防外挂功能。因此如果御安全加固系统能和服务器端防外挂系统的有效结合,就可以很好地阻止外挂软件对加固游戏的攻击,从而减少游戏开发商的损失。另外御安全加固APK,采取一键式的保护方式,可以方便,快捷地为游戏开发商提供保护服务器。加固后的APK,兼容性接近100%,加固后的APK运行Crash率控制在0.02%以内。启动速度以及其它性能影响,对用户无任何感知。
来源:腾讯御安全技术博客