据游戏工委数据报告显示,2026年上半年,国内小游戏市场实际销售收入达到316.57亿元,同比增长36.01%,继续保持较高增幅。

随着小游戏向精品化、中重度和长线运营发展,越来越多Unity游戏被移植到小游戏平台。游戏品质和内容体量提升后,代码逻辑和美术资源也更容易成为分析目标。
对于Unity小游戏来说,常见的两个安全问题,一个来自记录代码结构信息的global-metadata.dat,另一个来自承载游戏资源的AssetBundle。两者涉及的内容不同,需要分别分析。
Wasm与global-metadata.dat为什么需要一起保护
小游戏既要提升画面和玩法表现,又要控制性能消耗,满足即点即玩的特点。为了更好地将Unity游戏移植到小游戏平台,Unity引入了WebGL和WebAssembly技术。
WebGL是一种JavaScript API,可以在浏览器中实现3D图形渲染。WebAssembly简称Wasm,是一种可以在浏览器沙箱环境中运行的代码格式,能够安全、快速地运行编译后的高性能代码。

相比直接使用JavaScript,Wasm更适合承载对性能要求较高的游戏逻辑,可以更好地还原Unity游戏的画面表现,同时降低对启动和运行效率的影响。
在Unity WebGL方案中,项目中的C#代码会先通过IL2CPP转换为C++,再进一步编译成Wasm代码,最终在小游戏环境中运行:
text
C#代码 → IL2CPP → C++ → Wasm → 小游戏环境运行
经过这一过程,游戏逻辑已经不再以原始C#代码的形式存在。不过,IL2CPP运行过程中仍然需要支持GC、反射等部分C#语言特性。为此,C#代码中的类名、方法名、属性名和字符串等信息会被记录在global-metadata.dat中,IL2CPP启动时再从该文件中读取所需信息。

攻击者可以通过解析小游戏数据文件提取global-metadata.dat,再对其中的信息进行分析。部分工具还可以生成dump.cs文件,用于查看类、方法和字段等代码结构,并结合Wasm代码进一步定位游戏逻辑。

相关信息可能被用于抄袭游戏代码、复制竞品,也可能为篡改游戏逻辑和制作外挂提供线索。因此,Unity小游戏的代码保护不能只停留在JavaScript代码混淆上,还需要同时考虑Wasm代码和global-metadata.dat。
AssetBundle资源为什么容易被提取
除了代码,小游戏中的美术资源也是常见的分析目标。
目前已经出现了不少小游戏包体提取工具,如unpackminiapp、wxapkg等。攻击者可以先从指定目录中找到小游戏包体,再使用工具完成拆包并定位其中的AssetBundle文件。

如果AssetBundle没有经过额外保护,还可以继续使用Unity资源分析工具,提取其中的图片、视频和音频等游戏资源。大致过程如下:
text
定位小游戏包体 → 使用工具拆包 → 查找AssetBundle → 提取图片、视频和音频
这些资源可能被用于竞品分析,也可能被直接盗用。提取出的美术和音视频素材经过重新组合后,就可能被用于制作换皮产品,对正版产品造成冲击。

AssetBundle加密还需要处理包体和性能问题。如果加密后产生较大的冗余包体,或者解密过程消耗过高,都可能影响小游戏的加载速度和运行体验。
因此,AssetBundle保护既要考虑加密强度,也要控制包体变化和解密消耗,加密方案不能给游戏带来明显的性能负担。
FairGuard对Unity代码和AssetBundle的保护
global-metadata.dat和AssetBundle对应着不同的暴露面,只保护其中一部分,另一部分仍可能成为分析入口。针对这两类风险,FairGuard小游戏加固方案同时提供Unity代码和AssetBundle资源保护。
代码侧保护
FairGuard兼容Unity Wasm代码,针对小游戏中的global-metadata.dat提供加密保护,并配合代码混淆、反调试和防篡改等功能,提高元数据解析及Wasm代码分析的难度。
相关保护功能采用二进制、非脚本方式实现,不只在JavaScript层进行代码混淆,可以兼顾保护强度与运行效率。
资源侧保护
FairGuard采用与游戏引擎高度耦合的加密方式,对AssetBundle中的核心关键位置进行处理,降低图片、视频和音频等资源被直接提取的风险。
加密算法还会经过高强度自定义混淆,在增加分析复杂度的同时控制运行开销。核心文件块很小,不随整个资源文件大小而变化。据测试,使用主流手机一次性解密300个资源文件,额外增加的解密时间不到10ms。
除了Unity代码和AssetBundle资源加密,FairGuard小游戏加固方案还支持反调试、防篡改、通讯协议保护、上下行数据校验和图片水印隐写等功能,覆盖代码分析、数据篡改、资源盗用及侵权取证等问题。
方案采用极速接入模式,无需接入SDK,也不需要复杂配置。开发者只需设置gamekey并运行一条命令行,即可在30秒内完成加固。
总结
Unity小游戏中的Wasm代码、global-metadata.dat和AssetBundle分别关系到游戏逻辑、代码结构信息和资源内容。代码侧只处理JavaScript混淆,或者资源侧只对文件进行简单隐藏,都难以覆盖完整的分析入口。
小游戏加密还需要兼顾包体大小、资源加载和运行效率。将Unity代码、global-metadata.dat和AssetBundle放进同一套保护方案中,才能在提高分析与提取难度的同时,尽量控制加固对游戏运行体验的影响。