【解包教程】下江小春也能看懂的碧藍(lán)檔案輕松解包思路【游戲資源提取相關(guān)】

使用最近版本的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
(國(guó)際服)如果把一堆東西拖進(jìn)去,AssetStudio頻繁報(bào)錯(cuò),注意檢查是不是把zip文件也拖進(jìn)去了。
日服的報(bào)錯(cuò)主要集中在shader等這些用不著的資源(有可能是AssetStudio沒(méi)適配更新或者其他奇怪的問(wèn)題,但不像是故意加密),Debug選單取消勾選Show error message。如果執(zhí)行效率不高(我也一樣),可以用Python和UnityPy只提取TextAsset Texture2D Sprite,或者選擇性解包(文件名有spinecharacters是角色立繪,spinelobbies是紀(jì)念大廳,spinebackground是UI背景的Spine動(dòng)畫)。
AssetStudio不能打開BA的zip資源文件。
如果AssetStudio崩潰了,檢查設(shè)備配置,這一般不太可能發(fā)生。
BA的zip(TableBundles)解壓密碼是:
- 將文件名編碼為 UTF-8 字節(jié)串
- 使用 xxh32_intdigest 函數(shù)計(jì)算出文件名 UTF-8 字節(jié)串的哈希值,作為 Mersenne Twister 算法的種子
- 使用 Mersenne Twister 算法生成一個(gè)長(zhǎng)度為 3*20/4 的隨機(jī)字節(jié)串(其中 20 是 Base64 編碼后輸出的字符串長(zhǎng)度)
- 將生成的隨機(jī)字節(jié)串使用 Base64 編碼,編碼后的結(jié)果為壓縮包密碼
解壓后,JSON 文件大部分都是明文(小部分AES加密,具體方法不明確),bytes 是用 FlatBuffers(https://google.github.io/flatbuffers/) 保存的序列化數(shù)據(jù),scheme 可能在il2cppdumper的結(jié)果里。沒(méi)有特別完善的讀取方法。
(參考了幾個(gè)GitHub項(xiàng)目,如果我有遺漏,萬(wàn)望不吝賜教)