感谢大家继续收看。
v3d.dat 的格式分析
文件开头同样是一个
typedef struct {
unsigned long flag; // 'v3dd'
unsigned long version; // 版本号 0x10005 等
} v3dd_file_header;
接着就是一帧一帧的图片数据,可以根据 v3dh 中的 dat_offset_list[] 来定位。
下面对定位后的一帧数据进行分析。
unsigned short Size; // 此帧数据的大小,不包含这2字节
typedef struct {
long keyx; // 很常见的一个结构,不多废话
long keyy;
long width;
long height;
} v3dd_frame_header;
接下来,可能存在一个512字节的16位调色板,也可能不存在,这完全取决于xyqsvc.exe渲染图片时是否正确加载了mypal.wdf里的调色板。
然后是每一行数据的偏移地址,这一点与was图片格式一样,因为它要支持边解压边绘制。此外,数据的压缩格式与was图片也是一样的。
判断是否存在512字节内置调色板的方法是,判断帧数据开始16字节处(也就是height后面)的4字节数据的值是否为图片高度的4倍再加16,如果为真,那么基本可以确定不包含内置调色板。
至此,缓存文件分析完毕。
根据以上分析,我写了一个提取工具,如图:
拿提取的图片做了个gif小动画:
还凑合吧,哈哈。