以下为正文:

3月25日,2018 Unity技能路演首站:移动游戏技能分享日在广州举办。
这次活动,旨在为移动游戏开拓者们搭建一个更好的互换平台,学习Unity在移动游戏开拓领域的最新工具与运用技巧,分享最炫酷的游戏开拓与行业运用案例,理解移动游戏开拓中的安全问题所能给企业带来的隐患,帮助开拓者提前感知安全隐患,避免受到丢失。

网易云易盾移动游戏安全技能专家陈士留

php易盾dll知物由学|游戏开辟者若何自在应对Unity手游风险 SQL

网易云易盾移动游戏安全技能专家陈士留出席互换活动,并进行了《Unity手游风险及安全问题——网易云易盾来保驾护航》的技能演讲。
在分享中,他先容了时下Unity手游面临的浩瀚风险及热门外挂,并重点讲解了易盾安全办理方案的技能事理和实践案例。

一、Unity手游面临的风险

据统计,2017年海内生动移动游戏APP运用约有9000款,其多数存在被破解、恶意代码插入、广告插入、外挂、二次打包等安全问题。
而这些安全问题为企业带来隐患是,研发难度增加,研发本钱的提高、玩家付费意愿减低、游戏失落去公正性,玩家流失落,直接丢失收入——因此,破除Unity手游风险对付开拓者来说十分主要。

常见的Unity手游风险紧张包括破解风险、外挂工具这两类。

破解风险

破解风险紧张有Unity mono脚本解密、Unity il2cpp脚本解析、Assetbundle资源修改这三项。

Unity mono脚本解密

以下两张图为mono脚本文件的二进制形式及源码转换。

Unity il2cpp脚本解析

以libil2cpp.so和global-metadata.dat作为输入,利用Il2CppDumper即可进行解析:

解析出来的效果如下所示,类名、函数名以及对应的偏移都能够被解析出来:

目前iOS中还没有能够解析为源码的工具,但是如果可以解密或解析Android脚本,将会大大方便iOS的破解。
因此Android的有效脚本加密非常有必要。

Assetbundle资源修改

透视功能可让利用修正版的玩家获取不对称上风。
如下所示的某枪击游戏,将个中Assetbundle资源里面的材质属性修正为透明,即可达到透视的效果。

除了资源被修改的风险外,游戏中还存在资源被竞品盗取、剖析的风险。

存档数据被修正

某些游戏存档数据以明文形式存在,如果这些数据不去做事端校验,或者是单机游戏的话,则存在巨大的安全风险,游戏的各种属性可以直接修正。

外挂工具

游戏修正器

利用修正器能够将侵害倍率从18%改成999.9%,使得攻击侵害提升了几十倍。
类似的事理也可以实现无敌、秒杀、无限蓝、技能无CD等效果,因此修正器对游戏平衡的危害相称大。

常用的修正器有烧饼修正器、八门神器和GameGuardian(GG修正器及其各种修正版),个中的GG修正器(GameGuardian)盛行于即时对战类游戏(比如吃鸡游戏)。

上图为搜索数值界面,下图为调用lua脚本界面

某QQ群售卖的GG lua脚本

免ROOT修正器

免ROOT修正器是指通过第三方软件得到Root权限,可以访问和修正手机游戏中险些所有的文件,但这样操作有可能影响游戏的稳定性,涌现去世机、卡顿、重启等人为性故障。

八门神器附带的免ROOT修正器

GG大玩家附带的免ROOT修正器

游戏加速器

加速器分2种类型,一种是手机加速器,例如烧饼加速器、GG加速器;另一种是仿照器加速器,例如每天加速器。
加速器除了可以加速,还可以减速。
如下图所示,利用烧饼加速器,背景速率会随加速倍数加大而提高。

游戏破解版

破解版供应了很多变态的功能来吸引玩家。
下图是某个站专门破解游戏售卖进行盈利,他们除了有售卖网站,还开了淘宝店。
只要月付150元,就已经超过很多游戏的ARPU值了。
这样破解版的存在会严重影响普通玩家体验,给游戏收入和口碑都造成很大的丢失。

包括GG大玩家、光环助手等等,市情上都有各种破解版售卖。

GG大玩家游戏破解版,上图为修正版列表,下图为修正版功能

光环助手游戏破解版,上图为修正版列表,下图为修正版功能

仿照按键挂

上图便是一个仿照按键挂,虽然只是仿照点击,但是可以做到自动游戏,可以刷各种金币、积分,对游戏平衡也会有比较大的影响。
常见的仿照按键挂包括有触动精灵、触摸精灵、按键精灵、叉叉助手、游戏蜂窝等等。

二、易盾是怎么做的?

网易易盾能够供应Unity mono DLL脚本加密、IL2CPP 加密、Assetbundle加密等加密办理方案,以及反修正器、反加速、反仿照器、反调试等手游通用保护功能和手游风险感知。

Unity mono DLL脚本加密

通过修正或者HOOK mono_image_open_from_data_with_name能够对DLL脚本加解密。
mono_image_open_from_data_with_name是CSharp 脚本的加载函数,如果CSharpDLL脚本做了加密,须要在这个函数实行之前解密。
因此只要在这个函数这里下断点或者HOOK,就可以解密出原始DLL,而不须要逆向加密算法。
须要把稳的是,这里有个memcpy拷贝操作,mono会把解密后的DLL在内存中留存一份拷贝。

Unity mono DLL脚本加密经历了三代的技能演进。

第一代加密直接对DLL文件进行加密,在mono_image_open_from_data_with_name函数开始处解密。
对付这个的破解方法很大略,PE构造的文件,以4d 5a90 00这四个字节为magic head,这可以做为CSharp DLL脚本的特色,只要搜索0x905a4d这个数值就可以了,由于烧饼修正器是利用10进制数值,将其转换成10进制值:9460301。
因此解密门槛很低,只要利用修正器就可以解密。

第二代加密基于第一代加密的明显弱点,针对解密加强了防护。
解密后,把下图所示的PE头抹掉,使得修正器无法定位到脚本位置。
因此解密门槛比较高,须要非常强的逆向开拓能力才能破解。

第三代加密针对Csharp 函数做了加密,也便是方法级加密,需动态解密。

原始未加密dnspy函数解析结果

函数加密后dnspy函数解析报错

IL2CPP 加密

Il2cpp脚本信息以lib2cpp.so形式存在,结合global-metadata.dat文件内的符号信息,即可进行解析,因此须要对libil2cpp.so做so加壳,如下图所示,原始libil2cpp.so用IDA可以看到475个导出函数:

加固后的libil2cpp.so导出函数则为空:

Assetbundle加密

Assetbundle未加密时,Unity Studio可解析出各种资源:

对Assetbundle加密后,Unity Studio就无法解析了:

手游通用保护功能

撤除Unity mono DLL脚本加密、IL2CPP 加密、Assetbundle加密等加密办理方案外,网易易盾也能够供应通用的手游保护功能,包括反修正器、反加速、反仿照器、反调试、反仿照点击、文件校验、防二次打包、存档加密、引擎SO定制化加壳等。
一样平常而言,这些通用功能任何游戏引擎都支持,可以根据游戏需求选择一个或多个。
目前,网易易盾支持的游戏紧张包含Unity3d、COCOS、NEOX和UE4。

反修正器

修正器可以实现很多功能,如无限蓝、技能无CD、无敌、秒杀、倍攻等,是工具党的最爱,也是专业破解者常用的工具之一。
常见的修正器除了常见的烧饼、八门神器、葫芦侠、GG(GameGuardian)以外,还有很多定制修正版。

个中,GG修正器是做的最专业的修正器,专门做了反检测方法(随机化包名、子进程利用系统进程名等),因此常规的进程检测对GG无效。
但是易盾手游保护采取修正行为检测,可以通杀所有修正器,包括所有已知和未知的修正器。
下图是检测效果示例:

反加速

加速器可加速可减速,紧张分为两类:一是Android系统内的加速器,如烧饼加速器、叉叉加速器,一样平常修正器都附带加速功能;二是对仿照器进程加速的加速器,此加速事理跟端游加速相同,本色是对全体仿照器做了加速,Android系统内并没有加速器在运行,比较范例的是每天仿照器附带的每天加速器。

加速器的利用会让个别玩家得到游戏上风,影响游戏平衡。
但是易盾手游保护对以上这2种加速都有检测方案,而且是针对行为的检测方案,不针对特定的某些加速器,通用性更好——对付每天加速器这样的进程加速器,纵然只加速0.1倍也可以检测到。

上图是一个加固过的跑酷游戏,用每天加速器加速生效后,过了一秒钟旁边,即会闪退。

反仿照点击

仿照点击严格上来说不属于造孽外挂,处于灰色地带,因此仿照点击器都是公司化动作,运用很广泛,但是仿照点击脚本供应的功能对游戏平衡也会带来很大的不良影响。
目前比较有名的仿照点击器,有叉叉助手、触动精灵、触摸精灵、按键精灵、游戏蜂窝等。

如下图所示,触动精灵启动后,再启动游戏,保护检测到仿照点击器的存在即会闪退:

但是易盾手游保护利用了进程+行为检测相结合的办法,能够对仿照点击器进行检测。

以上先容的这些手游通用保护功能各有其特点,开拓者可以按实际需求进行选择:

功能

特点

反调试

检测办法暗藏,大大提高动态逆向剖析难度

反仿照器

可以通杀所有已知和未知仿照器

文件校验

兼顾了效率和安全性

防二次打包

利用了更为底层的办法,可以绕过各种过校验插件

存档加密

透明办法接入,不须要开拓做额外接入事情

手游风险感知

网易易盾还能够供应手游风险感知功能,紧张包括包含破解包的检测、跟破解者无感知对抗、恶意用户风险评估以及支持私有化支配。

三、易盾保护方案特点

网易易盾保护方案具有纯Native保护、对引擎SO做加壳、兼容性和稳定性高、性能影响小、支持Windows、Linux、Mac三平台加固等性能特点。

纯Native保护

游戏dex内部都是第三方SDK以及游戏内部不涉及到游戏逻辑的SDK。
如果对DEX加壳的话,一方脸庞易造成Android碎片化,导致dex加壳会降落app的兼容性;其余Android存在Dalvik和Art两种虚拟机,以是dex加壳会为了兼容2种虚拟机而增加处理本钱,从而导致启动耗时增加比较厉害。
阿里和腾讯都有DEX加壳做事,但是支付宝、微信都没做DEX加壳。
支付宝和微信的安全问题该当是所有APP中间最严重的,他们都没做DEX加壳,这很能解释问题,此外所有腾讯的游戏都没有做DEX加壳。
以是如果手游保护须要依赖于DEX加壳的话,兼容性和安全性都是很难担保的。
因此建议游戏不要利用DEX加壳。

下图因此一个第三方游戏为例,利用jeb剖析其dex包含的模块:

网易易盾可以供应纯Native保护,使游戏保护不依赖DEX加壳。
DEX加壳和纯Native保护优缺陷比较如下:

影响项

DEX加壳

纯Native保护

兼容性

Android的碎片化对dex影响很大

Android的碎片化对natvie层没有影响

启动韶光

启动的时候须要对数兆的DEX进行读文件、解密、ota优化,启动韶光影响很大

C代码的内存操作,启动韶光影响很眇小

运行速率

成倍影响运行效率

对运行险些无影响

渠道过审

加壳后影响渠道植入SDK

不影响渠道打包

安全性

对游戏无保护浸染,很多游戏破解版都带着dex壳

完备针对手游量身定制的保护,到各种游戏威胁都有防护

对引擎SO做加壳

基本上所有的破解都依赖于对引擎so的逆向剖析,如果对so进行了加壳保护,会大大增加游戏被破解的门槛。
除了对引擎SO加壳,网易易盾还会对敏感函数代码做校验。

兼容性和稳定性高

兼容强的事理在于所有保护都在SO层,不会对DEX进行修正,有效避免了Android碎片化导致的兼容问题。
网易易盾的兼容性极高,可以兼容从Android 2.3到Android 9.0所有版本系统、所有仿照器以及所有游戏引擎利用的指令集。

手游保护的稳定性,须要遵照如下发布流程:

QA测试:在200台手机上以及各种仿照器上测试;

预线上测试:将安全模块集成到日活1000的APP上线测试2周;

版本发布:前面2轮都测试稳定后,正式发布;

线上回归:先在内部比较小的游戏上线测试,确保稳定性。

性能影响小

易盾保护方案还具有性能影响小的特点,无论是CPU占用、内存占用、启动韶光、电量花费等方面的影响险些都可忽略不计。

性能指标

影响大小

CPU占用

增加0.5%-1%

内存占用

增加1M-3M

启动韶光

增加30ms-150ms

电量花费

增加0.5%-1%

安装包体积

增加1.5M-3M

流量花费

无影响

GPU占用

无影响

支持Windows、Linux、Mac三平台加固

此外,易盾保护方案还支持Windows、Linux、Mac三平台加固,加固工具以jar包形式供应,不仅自带极速署名功能,而且对加固做了全面优化,速率更快。

加固接入的对接过程包括:

确定游戏加固项;

易盾技能支持云端配置好加固项;

获取appkey;

下载加固jar包工具,根据利用解释配置好appkey。

四、易盾的办理方案得到了哪些客户认可?

网易易盾保护方案广泛运用于实际案例中,包括网易公司内部的倩女幽魂、闭幕者2:审判日等手游之中。

在外部,也有游戏公司多个游戏皆采取了易盾手游保护方案。

末了:易盾还在现场举办了安全诊断环节,现场有用户问及加固的流程。
网易客户全工程师李沛然表示,加固流程上,一条命令行即可接入,不会影响开拓流程。

“利用很便捷。
”李沛然强调。

以上由网易企业信息化做事供应商(qiye163.co)湖南领先网络科技整理发布。

网易企业做事,是网易凭借其20年品牌上风与履历在企业邮箱的根本上,为进一步布局企业市场而打造的企业级产品矩阵,致力于供应一站式企业信息化办理方案。
湖南领先网络科技是网易企业产品授权经销商,专业为企业供应网易企业邮箱、网易办公套件等一站式企业信息化专业办理方案。