【解包教程】下江小春也能看懂的碧蓝档案轻松解包思路【游戏资源提取相关】

使用最近版本的AssetStudio(https://github.com/Perfare/AssetStudio/releases/tag/v0.16.47)可以打开最近更新中的的AssetBundles,
例如以下资源:
https://prod-clientpatch.bluearchiveyostar.com/r53_1_29_k9al0rwmplkqmj9cn3ap/Android/assets-_mx-spinecharacters-np0040_spr-_mxdependency-2023-03-03_assets_all_1292436859.bundle
(国际服)如果把一堆东西拖进去,AssetStudio频繁报错,注意检查是不是把zip文件也拖进去了。
日服的报错主要集中在shader等这些用不着的资源(有可能是AssetStudio没适配更新或者其他奇怪的问题,但不像是故意加密),Debug选单取消勾选Show error message。如果执行效率不高(我也一样),可以用Python和UnityPy只提取TextAsset Texture2D Sprite,或者选择性解包(文件名有spinecharacters是角色立绘,spinelobbies是纪念大厅,spinebackground是UI背景的Spine动画)。
AssetStudio不能打开BA的zip资源文件。
如果AssetStudio崩溃了,检查设备配置,这一般不太可能发生。
BA的zip(TableBundles)解压密码是:
- 将文件名编码为 UTF-8 字节串
- 使用 xxh32_intdigest 函数计算出文件名 UTF-8 字节串的哈希值,作为 Mersenne Twister 算法的种子
- 使用 Mersenne Twister 算法生成一个长度为 3*20/4 的随机字节串(其中 20 是 Base64 编码后输出的字符串长度)
- 将生成的随机字节串使用 Base64 编码,编码后的结果为压缩包密码
解压后,JSON 文件大部分都是明文(小部分AES加密,具体方法不明确),bytes 是用 FlatBuffers(https://google.github.io/flatbuffers/) 保存的序列化数据,scheme 可能在il2cppdumper的结果里。没有特别完善的读取方法。
(参考了几个GitHub项目,如果我有遗漏,万望不吝赐教)