陈十六网易云易盾手游安全技术专家
1、Unity手游面临的风险
据统计,2017年我国活跃手游APP约9000个,大部分存在破解、恶意代码插入、广告插入、外挂、二次打包等安全问题。这些安全问题给企业带来了隐患,包括研发难度增加、研发成本增加、玩家付费意愿降低、游戏公平性丧失、玩家流失、收入直接损失等。因此,消除Unity手游的风险对于开发者来说非常重要。重要的。
常见的Unity手游风险主要包括破解风险和外挂工具。
开裂风险
主要破解风险包括Unity mono脚本解密、Unity il2cpp脚本分析、Assetbundle资源篡改等。
Unity单声道脚本解密
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 Big Player 附带免ROOT 修改器
游戏加速器
加速器有两种,一种是手机加速器,如烧饼加速器、GG加速器;另一种是手机加速器,如烧饼加速器、GG加速器等。另一种是模拟器加速器,如天天加速器。油门除了加速之外,还可以减速。如下图所示,使用烧饼加速器,背景速度会随着加速系数的增大而增大。
游戏破解版
破解版提供了很多变态的功能来吸引玩家。下图是一个专门破解游戏并出售牟利的网站。除了销售网站外,他们还开设了淘宝店。每月只要支付150元,就已经超过了很多游戏的ARPU值。这样的破解版本的存在将严重影响普通玩家的体验,对游戏收入和声誉造成巨大损失。
包括GG大播放器、光环助手等,市面上有各种破解版本。
GG大玩家游戏破解版,上图为修改版本列表,下图为修改版本功能
光环助手游戏破解版,上图为修改版本列表,下图为修改版本功能
模拟按钮挂起
上图是模拟纽扣挂钩。虽然只是模拟点击,但是可以自动玩游戏,赚取各种金币和积分。对游戏平衡也会产生比较大的影响。常见的模拟按键挂有触摸精灵、触摸精灵、按键精灵、叉子助手、游戏蜂巢等。
2、易盾是怎么做到的?
网易易盾可提供Unity mono DLL脚本加密、IL2CPP加密、Assetbundle加密等加密解决方案,以及防修改、防加速、防模拟器、防调试等通用手游保护功能作为手机游戏的风险意识。
Unity单声道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这四个字节作为魔头。这可以用作CSharp DLL 脚本的一个功能。只需搜索值0x905a4d 即可。由于烧饼修改器是使用十进制值,将其转换为十进制值:9460301。因此,解密门槛很低,只要使用修改器就可以解密。
第二代加密针对第一代加密的明显弱点,加强了防解密保护。解密后,擦除下图所示的PE头,使修改者无法定位到脚本位置。因此解密门槛比较高,需要非常强的逆向开发能力才能破解。
第三代加密针对Csharp函数进行加密,属于方法级加密,需要动态解密。
原始未加密的dnspy函数解析结果
函数加密后dnspy函数解析错误
IL2CPP 加密
Il2cpp脚本信息以lib2cpp.so的形式存在。结合global-metadata.dat文件中的符号信息即可解析。因此,libil2cpp.so需要如此打包,如下图所示。原始的libil2cpp.so可以与IDA一起使用参见475个导出函数:
加固后的libil2cpp.so导出的函数为空:
资产包加密
当Assetbundle未加密时,Unity Studio可以解析出各种资源:
加密Assetbundle后,Unity Studio无法解析它:
手机游戏通用保护功能
除了Unity mono DLL脚本加密、IL2CPP加密、Assetbundle加密等加密方案外,网易易盾还可以提供通用手游防护功能,包括防修改、防加速、防模拟器、防调试、防盗版等。模拟点击、文件验证、防二次打包、存档加密、引擎SO定制打包等。一般来说,这些常用功能任何游戏引擎都支持,可以根据游戏需求选择一项或多项。目前网易易盾支持的游戏主要有Unity3d、COCOS、NEOX、UE4等。
反修饰符
该修改器可以实现无限法力、技能无CD、无敌、秒杀、双重攻击等多种功能,是工具党的最爱,也是专业破解者常用的工具之一。除了烧饼、八门神器、葫芦侠、GG(游戏守护者)等常见修改器外,还有很多定制化的修改版本。
其中GG修饰符是最专业的修饰符,并且专门实施了反检测措施(随机包名、子进程使用系统进程名等),因此常规的进程检测对GG无效。但亿盾手游防护采用修改行为检测,可以查杀所有修改器,包括所有已知和未知的修改器。下图是检测效果示例:
抗加速
加速器可以加速也可以减速,主要分为两类:一类是Android系统中的加速器,如烧饼加速器、茶茶加速器等。一般修改器都带有加速功能;另一个是加速模拟器进程的加速器。加速原理与加速器相同。 PC游戏的加速也是一样。本质是加速整个模拟器。 Android系统中没有运行加速器。比较典型的就是天天模拟器自带的天天加速器。
加速器的使用会让个体玩家获得游戏优势,影响游戏平衡。不过,易盾手游防护对于以上两类加速都有检测方案,而且是针对行为的检测方案,而不是针对某些加速器,通用性更强。 —— 对于天天加速器等进程加速器,即使只加速0.1倍也能检测到。
上图是一款强化跑酷游戏。使用天天加速器加速游戏后,大约一秒后就会崩溃。
防模拟点击
严格来说,模拟点击并不属于非法插件,属于灰色地带。因此,模拟点击器是企业行为并且被广泛使用。但模拟点击脚本提供的功能也会对游戏平衡产生很大的负面影响。目前比较知名的模拟答题器有Fork Assistant、Touch Wizard、Touch Wizard、Button Wizard、Game Honeycomb等。
如下图,启动触摸向导后,再启动游戏,检测到模拟点击器的存在后,防护会崩溃:
而亿盾手游防护则采用流程+行为检测相结合的方式来检测模拟点击者。
以上介绍的手游通用防护功能各有特点,开发者可以根据实际需求进行选择:
功能
特征
反调试
检测方法隐蔽,大大增加了动态逆向分析的难度。
反仿真器
可以杀死所有已知和未知的模拟器
文件验证
兼顾效率与安全
防止二次包装
使用较低级别的方法来绕过各种验证插件。
档案加密
透明接入,无需额外开发工作
移动游戏风险感知
网易易盾还可以提供手游风险感知功能,主要包括破解包检测、与破解者潜移默化对抗、恶意用户风险评估、支持私有化部署等。
三、亿盾防护方案特点
网易易信防护方案具有纯Native防护、引擎SO封装、兼容性和稳定性高、性能影响小、支持Windows、Linux、Mac平台加固等性能特点。
纯原生保护
游戏dex内部是第三方SDK以及游戏内不涉及游戏逻辑的SDK。如果DEX加壳,一方面很容易造成Android碎片,导致dex加壳降低app的兼容性;另外,Android有两个虚拟机,Dalvik和Art,所以会添加dex打包来兼容这两个虚拟机。处理成本,导致启动时间大幅增加。阿里巴巴和腾讯都有DEX打包服务,但支付宝和微信都没有做DEX打包。支付宝和微信的安全问题应该是所有App中最严重的。他们还没有实现DEX 打包,这很能说明问题。此外,腾讯所有游戏均未实现DEX打包。因此,如果手游保护依赖于DEX封装,兼容性和安全性将难以保证。因此,建议游戏不要使用DEX打包。
下图以某第三方游戏为例,使用jeb分析其dex包含的模块:
网易易盾可以提供纯Native的保护,让游戏保护不依赖DEX打包。 DEX加壳和纯Native保护的优缺点对比如下:
影响项目
德克斯包装
纯原生保护
兼容性
Android碎片对dex影响很大
Android碎片对natvie层没有影响
开始时间
启动时需要读文件、解密、ota优化多兆的DEX,对启动时间影响很大。
C代码的内存操作对启动时间影响很小
运行速度
对运营效率的双重影响
对操作几乎没有影响
渠道获批
打包后影响力渠道植入SDK
不影响渠道包装
安全
它对游戏没有任何保护。许多破解版的游戏都带有dex shell。
完全为手机游戏量身定制防护,抵御各种游戏威胁
包装发动机SO
基本上所有的破解都是靠发动机的逆向分析所以。如果对so进行加壳保护,将会大大提高游戏被破解的门槛。除了对引擎SO进行打包外,网易易盾还会对敏感功能代码进行验证。
高兼容性和稳定性
强兼容性的原则是所有保护都在SO层,DEX不会被修改,有效避免Android碎片带来的兼容性问题。网易易盾具有极高的兼容性,兼容从Android 2.3到Android 9.0的所有版本系统、所有模拟器、以及游戏引擎使用的所有指令集。
手游保护稳定性需要遵循以下发布流程:
QA测试:在200部手机和各种模拟器上进行测试;
上线前测试:将安全模块集成到日活跃1000次的APP中,上线测试2周;
版本发布:前两轮测试稳定后,正式发布;
线上回归:先启动小游戏内测,保证稳定性。
性能影响很小
亿盾防护方案还具有对性能影响较小的特点。对CPU使用率、内存使用率、启动时间、功耗等的影响几乎可以忽略不计。
绩效指标
效应大小
CPU使用率
增加0.5%-1%
内存使用情况
增加1M-3M
开始时间
增加30ms-150ms
功耗
增加0.5%-1%
安装包尺寸
增加1.5M-3M
流量消耗
无影响
GPU使用率
无影响
支持Windows、Linux和Mac平台加固
此外,亿盾防护方案还支持Windows、Linux、Mac三种平台加固。加固工具以jar包的形式提供。它们不仅具有非常快的签名功能,而且还充分优化了加固,使其速度更快。
硬化接入的对接流程包括:
确定游戏增强项目;
亿盾技术支持云端配置加固项;
获取应用密钥;
下载加固jar包工具,按照说明配置appkey。
4. 哪些客户认可了易盾的解决方案?
网易易盾防护方案在实际案例中得到广泛应用,包括《倩女幽魂》、《终结者2:审判日》等网易内部手游。
对外,也有游戏公司针对多款游戏采用了易盾手游防护解决方案。
最后:易盾现场还举办了安全诊断会,有用户询问加固流程。网易客户工程师李沛然表示,加固过程可以通过命令行访问,不会影响开发进程。
“用起来很方便。”李沛然强调道。
以上由湖南领先的网络技术提供商网易企业信息服务商(qiye163.co)整理发布。
标签:
用户评论
哇,这篇文章太实用了! Unity手游开发风险大,但学会了这些应对策略,我就更有信心了。
有17位网友表示赞同!
游戏开发风险确实不少,不过这篇文章提到的Unity手游风险应对方法,让我看到了希望的曙光。
有5位网友表示赞同!
Unity手游开发风险重重,但只要我们掌握了这些知识,就能从容应对。赞一个!
有17位网友表示赞同!
看了这篇文章,我终于明白了Unity手游开发中的风险所在,以后开发起来更有针对性了。
有11位网友表示赞同!
作为Unity手游开发者,这篇文章让我感到心里有底了,风险应对策略太重要了。
有9位网友表示赞同!
Unity手游开发风险太大,这篇文章提到的学习路径让我看到了提升自己的希望。
有6位网友表示赞同!
这篇文章让我对Unity手游的风险有了全新的认识,学到了很多实用的知识。
有13位网友表示赞同!
Unity手游开发风险高,但只要我们不断学习,就能从容应对。这篇文章给了我很大的鼓舞。
有6位网友表示赞同!
Unity手游开发过程中风险不少,这篇文章提到的应对方法让我受益匪浅。
有8位网友表示赞同!
知识源于学习,这篇文章让我对Unity手游的风险有了更深入的理解。谢谢作者分享!
有6位网友表示赞同!
Unity手游开发确实有风险,但只要我们掌握了应对技巧,就能游刃有余。这篇文章给了我很大的帮助。
有20位网友表示赞同!
这篇文章让我对Unity手游的风险有了全新的认识,学到了很多实用的经验。
有10位网友表示赞同!
Unity手游开发过程中,风险无处不在。这篇文章提到的学习方法和应对策略,让我感到安心。
有11位网友表示赞同!
知识源于学习,这篇文章让我对Unity手游的风险有了更全面的了解。太感谢了!
有13位网友表示赞同!
Unity手游开发风险重重,但只要我们不断学习,就能从容面对。这篇文章给了我很大的启示。
有9位网友表示赞同!
这篇文章让我对Unity手游的风险有了深刻的认识,学到了很多实战技巧。
有10位网友表示赞同!
Unity手游开发风险大,但有了这篇文章的帮助,我相信自己能更好地应对挑战。
有5位网友表示赞同!
知识源于学习,这篇文章让我对Unity手游的风险有了全新的认识,受益匪浅。
有8位网友表示赞同!