Unity Mono加密解决方案

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游戏加固还提供通用的手游保护功能,包括反内存修改、反变速、反调试、文件完整性校验等多项功能,可有效解决游戏面临的各项安全问题。

相关推荐
Jmyd012316 分钟前
博物馆数字展厅系统架构设计:实景采集到云渲染全链路
unity·系统架构·博物馆·数字展厅·博物馆数字化
福建佰胜张工37 分钟前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
智慧光迅AINOPOL1 小时前
POF光电复合缆多业务承载原理
网络·安全·智能路由器
解决小子1 小时前
【虚幻引擎】【GAS】模块详解
游戏引擎·虚幻·gas
一只小鱼儿吖1 小时前
内网穿透技术全景:原理、安全与实践
网络·安全
电子科技圈2 小时前
芯科科技2026年Tech Talks技术系列讲座再增添全新主题共探无线SoC架构演进与安全合规
科技·嵌入式硬件·mcu·物联网·安全·架构·iot
一只大鸽子2 小时前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot
2301_780789663 小时前
智能汽车的“软肋”:车载系统漏洞分析与安全防护框架初探
网络·安全·车载系统·汽车·ddos
长不大的杨瑞杰4 小时前
OpenCode v2 运行时预热实战:Warming、Prompt Cache、后台服务与成本治理
人工智能·安全·云计算·软件工程·devops
AI_Lab014 小时前
服务器管理工具要在服务器上装 Agent,安全吗?
服务器·安全·github