尽管有关文件来源的一些线索可能有用,但格式似乎非常简单,因此可以从示例中推断出来。它不是一个成熟的文件系统,而是一个简单的存档/包。
首先,文件的标题:
struct Header
{
uint32 signature; // 0xFA77FA77
uint32 data_start; // offset of the start of file's data
uint32 timestamp; // possibly file's creation time.649953358 corresponds to August 6, 1990 2:35:58 PM
uint32 data_end; // offset of the end of file's data
uint32 checksum; // possibly checksum (CRC-32?)
uint32 num_files; // number of file entries following the header (52)
uint32 field_18; // unknown (0)
uint32 field_1C; // unknown (0xFFFF)
};
其后num_files
是文件记录,每个记录 0x100 字节:
struct FileRecord
{
char name[224]; //file path (0-padded)
uint32 offset; // offset to data(from header.data_start)
uint32 size; // size of data
uint32 field_E8; // unknown (0); possibly high half of 64-bit size
uint32 checksum; // possibly checksum (CRC-32?)
uint32 field_F0; // unknown (0)
uint32 field_F4; // unknown (0)
uint32 field_F8; // unknown (1)
uint32 field_FC; // unknown (2)
};
基于此,创建提取器应该是微不足道的。