碧蓝航线CPK文件解包记录

Article Directory
  1. 0x00
  2. 0x01
  3. 0x02
thumbnail
**本文仅作记录和学习交流使用,阅读本文即视为您已认识到并理解解包游戏文件属于侵权和违法行为,由此产生的一切后果本文、本文作者、本站点不承担任何责任。**

本文不适用于 CC BY-NC-SA 许可,禁止转载。

0x00

因为觉得愚人节的登录背景(即本文封面)挺好看的想摸出来做壁纸,摸索了一会于是有了这篇文章,仅作记录,说不定有人或者未来的自己还能用上。这个文件在游戏资源的原始名称为loginbg_230401.cpk,下文均以此为例。

0x01

cpk文件位于/sdcard/Android/data/com.bilibili.azurlane/files/AssetBundles/originsource/cpk.

cpk文件是 CRIWARE SDK 的封装格式。如果没有CRIWARE SDK,可以使用这个开源工具YACpkTool(当然这只是个方便调用其dll的介面)。
最基本的操作只需要一个参数,即要解包的cpk文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
> YACpktool.exe .\loginbg_230401.cpk
100% extracted...
Status = Complete

Process finished (hopefully) without issues!
> ls .\loginbg_230401\

Directory: E:\AzurLaneL2D\unpacked\burin\loginbg_230401

Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2023/3/29 11:09 9397088 loginbg_230401.bytes

0x02

上一步的结果是一个.bytes文件,这是一个纯二进制文件,光靠猜是猜不出这是个什么玩意的。如果使用file工具,它会说这是个Scaleform video

但是嘛,这个文件还是经过HCA加密的,解码可以使用这个开源工具CRID-usm-Decrypter.

关于HCA的加密密钥,可以通过调试 libcri_ware_unity.socriWareUnity_SetDecryptionKey 函数获取。其值见下面的命令

1
> CRID-umd-Decrypter.exe -a 95356C72 -b 0002354E -o .\loginbg_230401\ .\loginbg_230401\loginbg_230401.bytes

然后就得到了原始的资源文件。

Permalink: http://blog.artiga.top/2023/azur-lane-cpk-unpack/

本文不向任何个人或组织授权,严禁转载。

Comments