2014-11-1 13:07 /
老版本的封包和新版的封包格式直接目测出来。
不过无论是BGI1还是BGI2的封包,文件名的长度都要很大的限制。
嘛、这个我不吐槽。每家公司都有各自的想法。

这个是Pck Header,一个signature和一个count,这个不需要追,直接目测出来。
ver1.0和ver2.0都是这个格式

typedef struct
{
        char magic[12]; // "PackFile    "
        unsigned long count;
}ArchieveHeader;


先来看ver1.0的文件记录表项:

//0x10 * 2
typedef struct
{
        char name[16];//文件名的长度如此可怜
        unsigned long offset;
        unsigned long length;
        unsigned long reserved1;
        unsigned long reserved2;
}ArchieveEntry;

需要说明的是,
而ver1.0和ver2.0的offset都是相对offset,要减去PckHeader的长度和count和Archieve的长度。

typedef struct
{
        char name[6*0x10];//这个长度够用了
        unsigned long offset;//这个offset是一个相对值
        unsigned long length;
        unsigned long reserved1;//位置,也许在未来的发展中会记录说那个加密的数据
        unsigned long reserved2;
        unsigned long reserved3;
        unsigned long reserved4;
        unsigned long reserved5;
        unsigned long reserved6;
}ArchieveEntryNew;


解析到此完毕
后面开始研究图形的解析。目测会比较麻烦