本系列将和大家一起探索PS2游戏——J联盟创造球会04(J.League Pro Soccer Club o Tsukurou! 04)的逆向研究。本文先解析一下游戏存档。

存档文件目录

将游戏存档导出后,文件目录如下:

1
2
3
4
5
6
7
BISLPM-65530Saka_G03
├── BISLPM-65530Saka_G03
├── head.dat
├── icon.sys
├── mc_main_1.ico
├── mc_main_2.ico
└── mc_main_3.ico

目录名为BISLPM-65530Saka_G后面跟一个数字,如果在同一个记忆卡上有多条记录,后面的数字会从01开始递增。

BISLPM-65530Saka_G03文件是主存档文件,保存着所有游戏数据。它使用Bit-Packing技术进行压缩,再使用BlowFish算法进行加密。

head.dat保存着一些简单的游戏信息,比如球会名、游戏中的日期等。它并没有经过任何的压缩和加密。

icon.sys和三个mc_main_x.ico文件是存档的3D图标,这在我以前的文章里介绍过。链接

文件结构

BISLPM-65530Saka_G03head.dat有着相同的文件结构,如下图:

可以看到每个文件都分为4部分,HeaderData Block1CRCData Block2

文件的前4个字节是Header,从中可以提取出Data Block的总大小。根据该大小,就可以推算出Data Block1CRCData Block2的具体位置。最后,将Data Block1Data Block2拼接后即可。

head.dat为例:

图中深色标出的分别是HeaderCRC,白色的两块分别是Data Block1Data Block2