5.第二个例子——一个小游戏的包文件格式
2 v) \( d; X* e4 F% Q8 P
0 a: H9 B5 W2 o1 V; r* F, E- w下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版# G6 H2 V! O6 V: t4 [+ b& Y
0 y5 S8 P8 R* q& W: b3 O包文件是安装文件夹中最大的文件Game.dat。
, Z4 F7 b8 }5 d# S6 {4 J) M# x7 i- R5 a/ b# c; L
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
% y. R J# g8 b- M0 v$ |) F, m, E5 ], p5 I% U
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。+ _; j; d5 X# x' H) q) L
" @6 i- }3 D! n图2 Game.dat文件头
8 ~3 D' T# M P% T% k' Z3 w9 M00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM' j% }7 b; Q( \( g* g( w
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP & P; j4 w7 @' Y3 b1 m7 _
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
9 w# ~! {, T+ |00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
) K% t$ g* u7 I+ U' |00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
; U s9 D {8 S- O2 R. P00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
7 _: F7 a5 b, i& Z. i6 R& G00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP 5 h, w7 x% Z" L. F' b- I
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
. T0 I) {9 D9 @/ o* N+ b. o1 R" E00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV
3 t! H* [3 H0 h0 d' R' |5 [- C00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
6 t* G$ ?/ S. L7 s/ \! s1 X000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.4 Q2 U3 Y6 l6 {" H0 t; I+ E8 `
000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |