防止Unity3D代码被反编译是手游安全中常见的破解风险。Unity的破解风险主要体现在Unity mono脚本解密、Unity il2cpp脚本解析、Assetbundle资源篡改三项。mono脚本文件的二进制形式及源码转换图示,展示了如何对mono脚本进行解密。
根本的解决办法是:先对DLL加密,然后在Unity的源码中加载程序DLL之前进行解密。这就需要通过逆向工程获得相应的Unity源码或者是直接向Unity购买Source Code License。
进行代码混淆,增加反编译代码解析难度。混淆工具: Dotfuscator、xeoncode、foxit 本人试验过Dotfuscator、xeoncode 前者混淆较为简单,后者混淆效果比较不错。前者是微软开发的,有很多功能,筛选混淆代码较简单,后者成都高,但是感觉工具不完善,很多东西都需要手动操作。
通过设置,可以对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加破解反编译难度。此外,还可以修改图片、资源、配置等文件的名称和md5值。在使用混淆器后,还需要进行加固以防止反编译。