【笔记】碧蓝档案资源解包方法【Blue Archive】

23年3月更新: 由于BA官方对解包表明了不支持的态度,特别说明如下:
1. 本文不再更新, 仅作为移动应用安全研究与学习的研究笔记存档;
2. 对于解包得到的任何非公开内容请避免在任何公开场合传播、使用, 其所有权归属于Nexon / Yostar;
3. 私信和评论区不再回答有关解包的问题. 如有相关学习需要请自行研究处理, 本文仅供参考.
(喵了个咪的....)
23年2月更新: 本文写于22年10月,目前部分内容已经过时(尤其是游戏apk文件,已经经历过数次版本更新),仅供参考。
一 准备工作:
一台已经安装了碧蓝档案的手机/模拟器
下载解包脚本extract.py和游戏apk文件: pan.baidu.com/s/1O3xs5Cil_n3cuE1koY78KA
提取: 0721 (23年2月更新: 该APK文件已过时, 可以在Apkpure(需梯子)下载到最新的APK文件: apkpure.com/cn/ブルーアーカイブ/com.YostarJP.BlueArchive/download?utm_content=1008)
安装Python, 自行解决, 请安装Python 3.9以上版本, 并且安装过程中勾选'将Python添加到PATH'.
二 操作方法:
碧蓝档案的媒体资源分为两个部分, isInBuild = true 和 isInBuild = false,
分别对应包含在安装包中的资源文件和进入游戏后才下载的6G资源文件.
下面分别描述如何解包这两部分文件.
第一部分文件:
用WinRAR等压缩文件打开准备工作中下载的游戏apk文件, 进入\Android\obb\com.YostarJP.BlueArchive\ ,
双击main.167311.com.YostarJP.BlueArchive.obb, 进入其中的assets文件夹, 第一部分文件就位于其中, 解压即可.
提示, 第一部分文件包括绝大多数登录界面的'Blue Archive!'角色语音, 位于assets\Audio\VOC_JP\JP_角色名\角色名_Title.ogg .

第二部分文件
以日服为例, 在已经装有碧蓝档案的手机上把 Android\data\com.YostarJP.BlueArchive\files\MediaPatch 这个文件夹复制一份到电脑上.
将 解包脚本extract.py 放入MediaPatch 文件夹, 左上角文件-打开Windows PowerShell-以管理员身份打开Windows Powershell, 输入python extract.py, 回车.
等待解包完成.

三 原理
BA的所有资源下载后都放在MediaPatch文件夹中,
并通过一张JSON表(MediaCatalog.json)记录和维护, 并且没有任何的加密.
根据这张表的信息逐个还原资源原本的路径和名称即可解包,
具体过程可以参考extract.py的代码内容.
(吐槽: 不过这张JSON表记录的是文件CRC而不是HASH, 这年头, CRC可真是个稀罕东西....)

四 引用
红迪上的一位老哥提供的代码:
reddit.com/r/BlueArchive/comments/ufw8v5/i_need_help_extracting_all_audio_files_from_blue/