知物由学|游戏开发者如何从容应对Unity手游风险?(2)

栏目: 编程语言 · 发布时间: 7年前

内容简介:网易易盾能够提供Unity mono DLL脚本加密、IL2CPP 加密、Assetbundle加密等加密解决方案,以及反修改器、反加速、反模拟器、反调试等手游通用保护功能和手游风险感知。通过修改或者HOOK mono_image_open_from_data_with_name能够对DLL脚本加解密。mono_image_open_from_data_with_name是CSharp 脚本的加载函数,如果CSharpDLL脚本做了加密,需要在这个函数执行之前解密。因此只要在这个函数这里下断点或者HOOK

欢迎访问 网易云社区 ,了解更多网易技术产品运营经验。

二、易盾是怎么做的?

网易易盾能够提供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手游风险?(2)

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

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

原始未加密dnspy函数解析结果 知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

IL2CPP 加密

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

加固后的libil2cpp.so导出函数则为空: 知物由学|游戏开发者如何从容应对Unity手游风险?(2) Assetbundle加密

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

对Assetbundle加密后,Unity Studio就无法解析了: 知物由学|游戏开发者如何从容应对Unity手游风险?(2) 手游通用保护功能

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

  • 反修改器

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

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

知物由学|游戏开发者如何从容应对Unity手游风险?(2)

  • 反加速
  • 加速器可加速可减速,主要分为两类:一是Android系统内的加速器,如烧饼加速器、叉叉加速器,一般修改器都附带加速功能;二是对模拟器进程加速的加速器,此加速原理跟端游加速相同,实质是对整个模拟器做了加速,Android系统内并没有加速器在运行,比较典型的是天天模拟器附带的天天加速器。

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

    • 反模拟点击

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

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

    但是易盾手游保护使用了进程+行为检测相结合的方式,能够对模拟点击器进行检测。

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

    手游风险感知

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

    三、易盾保护方案特点

    网易易盾保护方案具有纯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包含的模块:

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

    对引擎SO做加壳

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

    兼容性和稳定性高

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

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

    1. QA测试:在200台手机上以及各种模拟器上测试;
    2. 预线上测试:将安全模块集成到日活1000的APP上线测试2周;
    3. 版本发布:前面2轮都测试稳定后,正式发布;
    4. 线上回归:先在内部比较小的游戏上线测试,确保稳定性。

    性能影响小

    易盾保护方案还具有性能影响小的特点,无论是CPU占用、内存占用、启动时间、电量消耗等方面的影响几乎都可忽略不计。

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

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

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

    加固接入的对接过程包括: 知物由学|游戏开发者如何从容应对Unity手游风险?(2)
    1. 确定游戏加固项;
    2. 易盾技术支持云端配置好加固项;
    3. 获取appkey;
    4. 下载加固jar包工具,根据使用说明配置好appkey。

    四、易盾的解决方案获得了哪些客户认可?

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

    知物由学|游戏开发者如何从容应对Unity手游风险?(2)

    在外部,也有游戏公司多个游戏皆采用了易盾手游保护方案。 知物由学|游戏开发者如何从容应对Unity手游风险?(2) 最后:

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

    “使用很便捷。”李沛然强调。 点击这里可免费试用易盾加固

    知物由学第三期:知物由学 | 一文读懂互联网内容审核机制

    知物由学第四期 | 干货!一文了解安卓APP逆向分析与保护机制

    知物由学第五期 | 这些企业大佬如何看待2018年的安全形势?


    以上所述就是小编给大家介绍的《知物由学|游戏开发者如何从容应对Unity手游风险?(2)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

    查看所有标签

    猜你喜欢:

    本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

    Learning JavaScript

    Learning JavaScript

    Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

    As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

    在线进制转换器
    在线进制转换器

    各进制数互转换器

    SHA 加密
    SHA 加密

    SHA 加密工具