网站运营的含义,淘宝客app开发,弥勒网站开发,wordpress关站Unity Mono 是 Unity 引擎默认的脚本运行时环境#xff0c;在游戏开发中扮演着重要的角色。Mono 由跨平台的开源 .NET 框架实现#xff0c;它允许开发者使用 C# 等编程语言编写游戏逻辑。凭借简单易用的开发环境和高效的脚本编译速度#xff0c;得到了众多游戏的青睐。
在 …Unity Mono 是 Unity 引擎默认的脚本运行时环境在游戏开发中扮演着重要的角色。Mono 由跨平台的开源 .NET 框架实现它允许开发者使用 C# 等编程语言编写游戏逻辑。凭借简单易用的开发环境和高效的脚本编译速度得到了众多游戏的青睐。
在 Mono 模式下游戏 C# 代码被编译为 IL (中间代码) 并生成 DLL 文件然后将 DLL 打进游戏包文件。 Mono模式下脚本的编译运行 但由于 IL 非常容易被 ILSpy / .NET Reflector 等专业反编译软件分析逆向所以在无保护情况下破解者改包和竞品分析的难度非常低游戏的安全性极差如何有效对 Unity Mono 加密成了行业痛点。 使用工具 .NET Reflector 几乎可以还原出 C# 文件 针对DLL的加密方案经历了三代技术演进首先是第一代加密方式—— DLL整体加密。
其原理是修改 Mono 源码中的 mono_image_open_from_data_with_name 函数从而对DLL脚本进行整体加密。 这种加密方式缺点比较明显会在加载前进行一次性解密游戏运行过程中内存中存在解密后完整的DLL使用一些工具就可以从内存中获取DLL文件。
如使用 GameGuardian 修改器搜索 9460301 即PE文件Dos头的特征码 (0x4D 5A 90 00) 的十进制表示方式即可获取DLL信息。 使用修改器搜索DLL的魔法字 第二代DLL加密方式—— DLL函数加密这种加密方式的优点在于只有使用方法才会进行解密而一般游戏运行过程中不会用到所有方法这样内存中就不会存在一个完整的DLL。方法解密的效果如下图所示 原始未加密dnspy函数解析结果 函数加密后dnspy函数解析报错 而第二代DLL加固方案仍有缺点使用解析工具可以看到函数名及部分函数存在一定的安全隐患。
FairGuard研发了第三代DLL加固方案—— DLL结构虚拟化。可对DLL的文件结构进行自定义重构并对文件结构数据进行高强度加密。
处理完后所有的工具都无法再解析出任何数据哪怕是专业的破解分析人员要解密出里面的结构数据难度也是非常大。
DLL脚本使用的数据结构跟 Windows 下的可执行文件一样都是PE结构DLL未做结构虚拟化时使用 010Editor 可以解析出正常的PE结构。而使用DLL结构虚拟化后010Editor 无法正常解析效果如下图 虚拟化后的DLL结构010 Editor无法正常解析 FairGuard游戏加固研发了一套成熟完善的对抗方案可针对 Unity 引擎中的 mono DLL / global-metadata.dat / libil2cpp.so 等文件进行高强度加密还研发了三端通用的 Unity Assetbundle 资源加密方案。
此外FairGuard游戏加固还提供通用的手游保护功能包括反内存修改、反变速、反调试、文件完整性校验等多项功能可有效解决游戏面临的各项安全问题。