UnityCN 加密包检测 — AssetStudioMod 能识别但解不开,怎么办
Unity 官方加密 vs UnityCN 加密
Unity 国际版(Unity Technologies 官方)的 AssetBundle 默认只用 LZMA / LZ4 压缩——这是标准压缩算法,AssetStudio 和 AssetStudioMod 解压后就能读。
Unity 中国发行版(UnityCN,Unity Technologies 和盛大的合资公司)加了一层自定义加密——压缩之前先对 AssetBundle 的文件头和数据做了混淆。米哈游、腾讯、网易这些大厂发行的 Unity 游戏很多用了这个版本。
AssetStudioMod 能做什么
AssetStudioMod 能检测 UnityCN 加密但解不开:
- 加载 AssetBundle 时,如果文件头不是标准 Unity 签名,AssetStudioMod 会弹一个 "Detected encrypted bundle" 的提示框;
- 检测逻辑只做识别,不做解密;
- 目的是让你知道有这回事,不会误以为自己在看真实数据而花半天排查。
原版 AssetStudio 没有加密检测——加载加密的 AssetBundle 时会静默失败(Asset List 里什么都没有),很容易让人以为这个游戏没资源。
遇到加密包怎么办
AssetStudioMod 弹提示后,你的选择:
| 工具 | 开发者 | 能解什么 |
|---|---|---|
| Razmoth Studio | Razmoth | UnityCN 加密 + GFI / LZ4 变种压缩 |
| AnimeStudio | Escartem | UnityCN / GFIC / LZ4 混合加密、二次元游戏专用 |
| SiMaLaoShi Tuanjie 版 | SiMaLaoShi | 团结引擎(非 UnityCN 加密) |
这两个工具不是 AssetStudio 的直接 fork,但功能定位类似——都是专门对付 UnityCN 加密包的。AnimeStudio 对米哈游系游戏有针对性支持。
加密检测逻辑
AssetStudioMod 的检测大致看两点:
- AssetBundle 文件头的 magic number(标准 Unity AssetBundle 以
UnityFS或UnityRaw开头); - 解压后的 TypeTree 是否能正确解析出 Unity 内置类型。
如果文件头不对或者 TypeTree 解析到乱码,就判定为加密。检测结果不影响 AssetStudio 其他功能——它只是弹个提示然后跳过这些 AssetBundle。
不是加密但也打不开的情况
| 现象 | 可能原因 | 怎么确认 |
|---|---|---|
| AssetStudioMod 没弹加密提示但 Asset List 空 | 加载的文件不是 Unity 格式 | 确认文件后缀和路径对不对 |
| AssetBundle 是 Unity 6 打包的但 AssetStudioMod 读不了 | Unity 版本太新 | 换 AssetStudioMod 最新版 + --unity-version 指定 |
| 文件完整但解析到一半报错 | Unity 版本字段不准 | 手动指定 Unity 版本 |
| 原版 AssetStudio 打不开 | 可能 UnityCN 加密但原版没提示 | 换 AssetStudioMod 检测 |