游戏反作弊系统的设计与实现

2017-05-30 11:23周标强
企业科技与发展 2017年3期

周标强

【摘 要】随着智能手机的不断普及,手机游戏用户将在2018年接近6亿人,预计到2018年中国手游市场规模将接近700亿元。如此大的市场规模,必定会引起手游产品的激烈竞争。手游产品若想获得更长的生命周期,留住忠实“粉丝”用户,守护在市场中应得的盈利,除了手游产品本身完整精美之外,游戏任玩家操作捣鼓、抗第三方工具或黑客恶意修改、防止竞争对手对游戏核心成果的窃取和篡改也是至关重要的。

【关键词】Unity;反作弊;DllAPK

【中图分类号】TP311.52 【文献标识码】A 【文章编号】1674-0688(2017)03-0059-03

游戏反作弊系统是一款Android端游戏加固型通用工具,可以对任意一款Android游戏apk纯净包进行加固,包括对游戏代码的加密,防止用户使用模拟器游戏,防止用户修改游戏货币、道具和资源等数据,防止用户修改游戏速度,防止用户因修改游戏内容阻碍其他玩家正常游戏,保障其他正常玩家及付费玩家能顺利游戏。

1 目前市场上已有的加固产品的缺点分析

(1)大多数加固服务产品都是基于为app应用类apk安装包加固为设计标准,极少有针对游戏apk安装包加固而设计的加固服务产品,特别是针对unity 3d版制作生成的游戏apk安装包,其加固要求、加固内容与加固app应用还是有区别的。

(2)如果先给游戏apk安装包加固,每个加固服务商都要求加固前后的apk安装包证书一致。对于开发者来说,开发者并没有渠道发行商的打包证书,即便是签了合作合同,渠道发行商也不会将打包证书外流供开发者使用,打包证书只是由开发者将apk上传至渠道发行商后台时,由渠道发行商的系统自动更换,如若采用此操作,加固过后无法更换证书,游戏无法发行;如果不加固直接发行,发行后游戏有可能会被黑客使用模拟器、修改器等工具进行危害,各种脚本、外挂、作弊器、分析调试、内存数据窃取和篡改都是对游戏造成不安全的因素,最终还有可能破解游戏,造成玩家失去游戏的公平和快乐,开发者的创作产品和制作心血也将付水东流。

(3)有些渠道发行平台根本没有针对apk安装包的后台操作系统,作为开发者,不知道apk安装包的各环节的流程进度,是否审核成功被發行,上传apk包打上签名证书后,也不知道在哪里下载。

(4)有些渠道发行平台收到apk安装包后,就开始审核,审核成功后立即发行,没有加固的apk安装包就已经流入市场。作为开发者,并不能要求发行商先将apk打上证书,再交由开发者和加固服务商加固apk,此过程,开发者和加固服务商都完全接触不到渠道发行平台的审核人员,无法沟通发行进程。

(5)对于适用的个别渠道发行平台,受到时间的极大限制。开发者上传apk安装包到渠道打上apk签名证书时,需要单独联系客服人员,取回签名过后的apk安装包,并中断此次审核,则之前的审核时间就白白耗费。此外,如果游戏因BUG或其他紧急原因需临时调整更新一个新的apk安装包,此时恰遇节假日或非工作时间,无法联系到客服人员,开发者就只能等待,眼睁睁地看着有问题的游戏安装包继续在市场上运行,已经修改好的bug不能立即更新到市场上,忍受着玩家不断的抱怨却束手无策。

(6)也有个别加固服务公司提供了定制的加固服务,但服务价格非常昂贵。

2 系统的设计实现思想

(1)系统基于游戏apk安装包结构,针对黑客玩家经常对游戏操作的工具和手段,加入模拟器检测单元、加速检测单元、内存修改检测单元和加密单元等几个重要的部分,防止利用反编译工具对游戏中DLL文件进行调试源码、修改源代码,防止黑客玩家对游戏中内存数据的窃取、篡改和游戏速度的随意调整,防止黑客玩家在電脑端使用模拟器对游戏外挂、作弊、分析调试,保证玩家在游戏既定的环境下操作及游戏。

(2)系统通过对游戏核心模块的保护,拦截了黑客对游戏资源的入侵、窃取、攻击,有效地保护了游戏开发者及游戏利益相关者的权益,游戏开发者可以把全部心思都放在游戏的创造和制作,不必再为游戏遭受黑客的入侵而担心,不必再为游戏遭受黑客的攻击而烦恼,不必再面对烦琐的发行流程而束手无策。

(3)游戏apk安装包经本系统加固,游戏开发者可使用自己的签名证书打包apk,加固后,可上传至各渠道发行平台进行审核发行,如平台要求apk安装包需修改为渠道发行平台的签名证书,上传后由渠道自行修改,且不会影响加固效果;如渠道没有修改签名证书的要求,apk安装包可直接发行投放市场使用。

(4)系统简单易用,游戏开发者只需准备好游戏apk安装包和签名证书即可。相较于使用第三方加固服务产品,大大减少了加固阶段消耗的时间。比如上传apk到加固服务方的网络耗时,加固异常时联系服务商处理加固异常问题的沟通耗时,加固环节到发行环节的操作耗时等,加固完成后可直接上传渠道发行平台进行审核发行运营,进一步提高了游戏发行上线的速度效率;同时,也为专门的游戏开发者降低了游戏发行成本,可节省一笔游戏加固服务费用用于游戏技术创新和游戏品质的提升。游戏开发者如果有多款游戏产品,也可统一使用此系统加固,方便可靠。

3 系统的单元结构描述

系统包括解析单元、加密单元、生成单元、检测库启动包、加固单元、加速检测单元、模拟器检测单元、内存修改检测单元;解析单元与加密单元进行连接,加密单元与加固单元进行连接,生成单元与加固单元进行连接,检测库启动包与加固单元进行连接,加速检测单元与加固单元进行连接,模拟器检测单元与加固单元进行连接,内存修改单元与加固单元进行连接。各单元关系连接图如图1所示。以下是对各单元进行描述。

(1)解析单元:本单元将要加固的apk安装包按Android工程格式解析并还原,本单元将游戏apk安装包无缝还原,保证游戏中所有的资源的完整性。

(2)加密单元:本单元是系统的核心部分,安卓平台的apk安装包本质上是一个zip文件,其结构如图2所示。

classes.dex:Android下的可执行文件,也就是Java在Android系统下的字节码文件。

resources.arsc:资源文件的索引文件,提供资源文件id到文件路径的映射关系及字符串value。

AndroidManifest.xml:清单文件,注册应用中的四大组件、Application、权限等信息。

assets文件夹:存放应用的资源文件,包括运行在U3D上的DLL文件及其他图形、声音、视频、模型资源文件。

lib文件夹:存放so文件,包括U3D的libmain/libmono/libunity 3个so文件。

META-INF:存放签名相关的文件。

res文件夹:存放原生Android应用的资源文件。

加密方式有很多种,目前主要包括以下几种。①dex文件保护:采用分片式按需加载技术,攻击者无法在内存中获取完整的dex文件,再加上dex内存分散功能,攻击者无法从一片连续的内存中Dump出dex文件。②so文件保护;御安全加固保护逻辑,通过源码级的混淆,采取多种混淆方式,攻击者无法逆向其代码逻辑,此外,基于动态加载的so加壳技术,也使得攻击者无法逆向保护逻辑及原apk中so的代码逻辑。③资源文件保护:防御安全加固系统,可以针对apk的Assets及Res目录下的所有文件进行加密保护并进行完整性校验,经过御安全加固系统加固后的apk,资源无法被篡改,例如无法增加广告界面,也无法盗版apk里面的资源,可以很好地保护开发者的知识产权。

本系统采用第3种加密方式,加密单元对unity 3d编译生成apk安装包中的游戏代码dll文件安全加密与解密保护,保护dll文件不被非法窃取、篡改;防止非开发人员利用Reflector反编译工具、Reflexil分析插件对unity 3d游戏的dll文件进行调试源代修改、源代码等。

(3)检测库启动包:此包用来启动模拟器检测库、加速检测库、内存检测库等检测程序。

(4)加固单元:本单元是系统的关键部分,本单元将加密后的文件加入模拟器检测库、加速检测库、内存修改检测库,最后加入检测库启动包。经过加固后的文件会基于以下方式运行:首先运行检测库启动包,其次通过检测库启动包启动模拟器检测库、加速检测库、内存检测库,最后运行安装包程序。

(5)加速检测单元:本单元检测有关加速模块是否被修改,一般是檢测gettimeofday、clock_gettime或其他相关变量值或函数。

(6)模拟器检测单元:本单元检测模拟器是否存在,是否开启,是否含有模拟器特征的程序在运行,防止模拟器非法运行,进行非法刷量与恶意调试等。模拟器可以使android apk在电脑端运行,这是非常危险的,受保护后,可以防止运行在PC上的任何类型的android模拟器,防止电脑端的脚本、外挂、作弊器、分析调试工具的运行,防止电脑端各种不安全因素对游戏造成的危害。

(7)内存修改检测单元:本单元检测内存中相关的模块名、是否有相关修改内存的包名、是否有修改器功能的特征。本单元是对内存数据的专业高级保护,可防止内存调试,防止内存数据被修改,避免黑客通过内存信息破解游戏。如果不对游戏进行高级内存数据保护,游戏在运行时可能存在内存中的数据被篡改和窃取的风险。系统工作流程图如图3所示。

4 结语

设计实现一款通用游戏反作弊系统,对已经完成制作的游戏apk安装包进行加固是很有必要的,它对游戏产业的健康发展具有重大意义。

本系统通过对游戏核心模块的加固阻碍黑客直接窃取游戏开发者的劳动成果,阻碍黑客或者非开发者利用反编译工具对游戏源代码及支付模块代码的窃取和修改,保障了玩家在游戏中支付后,得到应得的商品和服务,促进游戏中正常交易的顺利进行,保障了玩家的利益。只要玩家利益得到了保障,玩家才会继续在游戏中投入充值,给开发者和营运者带来收益;同时,也保障了游戏的收益属于开发者和发行商,利益不被窃取,促进游戏行业、游戏产业的发展,保障游戏行业及游戏产业链带来的经济效益,是游戏产业链经济体制中不可缺少的保护工具。

参 考 文 献

[1]简靖韡.Android智能手机信息安全问题与对策分析[J].通讯世界,2015(24):33.

[2]佚名.Unity3D[EB/OL].http://Unity3D.com,2016-

12-05.

[3]佚名.细说安卓模拟器和真实设备的区别[EB/OL].http://

bbs.ednchina.com/FORUM_POST_17_520621_0.HTM,

2013-03-26.

[4]佚名.Felix Matenaar,PatrickSchulz,Detecting An-

droid Sandboxes[EB/OL].http://www.dexlabs.org/blog/

btdetect,2012-08-10.

[5]佚名.手游通用加速器功能分析及匯总[EB/OL].http://

gslab.qq.com/article-12-1.html,2015-12-01.

[6]张跃骞.Android APP保护及破解[J].中国教育网络,2016(Z1):44-46.

[7]丰生强.Android软件安全与逆向分析[M].北京:人民邮电出版社,2013:78-90.

[8]杜吉志,徐明昆.Android系统内存管理研究及优化[J].软件,2012,24(5):69-80.

[责任编辑:钟声贤]