对于Bangdream的资源拆解差不多还是去年这时候的事情了。当时手游内开始实装MV,录屏实在是不够pro的选择
,碰巧遇到朋友需要其中的资源,那就顺便拿来试着拆了一下。
※这里仅仅作为ガルパ音乐的解包流程记录,使用的都是现有的轮子。其它部分例如MV可以使用类似的方法进行处理。
预先准备
需要一些关于 unity
/ criware
资源提取相关的工具。
- AssetStudio,一款用于提取Unity资源包的工具, Github项目地址。
- AFS2展开工具 Github
- HCA解密&编码转换 Github
获取源数据包
首先需要从手机缓存中找到对应的源数据包。
Android下的路径:/storage/emulated/0/Android/data/jp.co.craftegg.band/files/data/
因为数据包名称没有特征(没有花心思去研究数据包名称和内容的对应列表),建议依靠下载时间以及数据包大小来判断是什么数据。例如游戏内音乐大约在3-5M左右,而MV会达到数十M,在游戏内刚好读条的内容一定是最近修改云云。
这里使用以下数据包举例:
1 | 名称:296adb1ba4e3e6b6f2c4b67614ba4f3b2ac65dc94a923a777d39893c2379af91 |
解出.acb文件并合并
.acb是criware压缩媒体的中间件。这里使用AssetStudio工具进行提取,获取unity资源包内的.acb文件。
使用AssetStudio或者其它unity解包工具打开,File→Load file→选择文件
打开后如下图所示:
Bgm050被拆分成了36个分段
选中所有的.acb片段,Export→Selected assets→选择文件夹 将全部分段解出。
打开TextAsset文件夹,是一串txt文件。
新建一个空文件1.bin,在该文件夹下打开命令提示符,输入【for %a in (*.txt) do copy /b 1.bin+%a 1.bin】并回车,将分段合并到1.bin内。合并后的1.bin文件大小3.42MB
获取加密的.hca
.hca是criware压缩的音频文件,包含在中间件内。
使用AFS2展开工具,将1.bin拖到【先頭をカットして展開.bat】上,跳出来的命令行窗口关闭即可。会新建一个文件夹,里面是00000.hca。
.hca解密至wav
hca媒体是否加密完全看开发方的心情。好在作为大热门的手游Bangdream已经有现成的密钥可以使用。可以看到在[HCA解密&编码转换]项目中也已经提供了一些其它手游的密钥;
1 | //復号鍵リスト.txt |
如果有独自研究其他游戏密钥的想法,或许可以参考这篇文章 → MLTD 逆向实录:提取 HCA 密钥
先打开復号化.bat
,修改开头的默认密钥
将rem set X_K=CF222F1FE0748978
修改为rem set X_K=00000000000022CE
1 | rem ******************************************************************************** |
保存后,将00000.hca
拖到復号化.bat
上。
因为默认密钥就是bangdream的,不用输入,直接回车
此时.hca已经解密,将00000.hca
拖到hca.exe
上,即可获得.wav。