Unity PC端加密加固方案

来源:fairguard 发布时间:2020-11-05 15:20:04 点击数:

一、背景

Unity3D 是由 Unity Technologies 开发的一款专业游戏引擎,Unity3D 具有跨平台、高效的开发语言和工具、丰富的插件和极易上手等优势,已逐渐成为使用率最高的游戏引擎。Unity3D 程序由 C# 语言开发,采用了 .NET 框架,可以由 mono 运时行解释执行也可以直接编译本地代码il2cpp,不管何种方式,在极大提升了开发效率的同时也带来了一些安全问题。

二、Unity程序面临的风险

2.1 符号文件的提取风险

对于Backend是il2cpp类型的Unity程序,在global-metadata.dat里面会存储程序所有的类名和方法名

如果不加密直接暴露出去,攻击者通过iL2CppDumper等工具的提取后并加以利用,这会非常有效的帮助攻击者进行逆向分析。

2.2 核心代码逻辑极易被反编译或反汇编

对于Backend是Mono类型的Unity程序, 用户编写的代码最终是在核心程序集文件 Assembly-CSharp.dll ,它是标准的 .NET 文件格式,附带了方法名、类名、类型定义等丰富的元数据信息,使用 DnSpy 等工具可以轻易地将其反编译和篡改,代码逻辑、类名和方法名等和看C#源码一样方便。

对于Backend是il2cpp类型的Unity程序,用户编写的代码最终会被编译成本地代码,相对上面的Assembly-CSharp.dll 安全一点,但是对于有经验的逆向分析者来说,只要没进一步加密,通过Ghidra静态分析工具,虽然没有和阅读源码一样方便,但是对于有效的分析是绰绰有余。

2.3 游戏资源易被提取的风险

Unity3D 程序在编译打包阶段会通过 Unity 编辑器将资源加包成 Asset Bundle 文件,Asset Bundle 是一种公开的压缩类文件格式,使用 Asset Studio 等工具可以对其解析、展示和提取。

三、FairGuard应对上述风险

3.1 global-metadata.dat文件的内存动态加解密。

3.2 Mono类型的DLL程序集的整体加解密,单独函数方法的加解密

3.3 Asset Bundle 资源文件的加解密

四、加密前后的对比

4.1 AssetBundle资源保护前后对比:

在使用AssetStudioGUI工具对加密前后的资源分析:

使用AssetStudioGUI工具对加密前后的资源分析


加密前后的字节比较:

加密前后的字节比较

4.2 global-metadata.dat保护前后对比:

使用iL2CppDumper工具在对加密前后的dat文件进行符号提取:

使用iL2CppDumper工具在对加密前后的dat文件进行符号提取

加密后提取文件失败

加密前后的字节比较:

加密前后的字节比较

五、FairGuard加固方式

jar包工具跨平台操作,直接对Windows可执行文件目录一键加固。

FairGuard加固方式


丨结语

FairGuard 专注于游戏加固与反外挂,为 Unity / Cocos / UE 等引擎的游戏提供深度一体化加密保护方案。

目前产品已经被FunPlus、Garena、三七互娱、游族等多家头部公司采用。TapTap排行榜以及买量排行榜上亦有多个游戏使用。

产品咨询联系方式:

QQ:2079128588

微信:fairguard01

技术交流QQ群:1105310296

也可以关注FairGuard微信公众号:

公众号二维码.jpg

即刻体验FairGuard

即刻体验FairGuard

免费试用游戏游戏安全保护, 对接专业技术服务!

免费体验
首 页
产 品
方 案
客 服
帮助