5.第二个例子——一个小游戏的包文件格式
- W8 z3 ^* O; U7 H* z
w$ }5 F7 C6 p8 p+ {1 w* Z i下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版
S4 W/ d/ w. H
" C2 F# T/ z. s; g5 O包文件是安装文件夹中最大的文件Game.dat。) q2 s( v5 Q# H- r
: X( R& h+ ^" {3 P# `: N1 M3 p% {% e这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。3 r1 R7 h8 Y% t" u, Z0 k
9 T2 r# y1 L7 K
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。
?: o g. U& Q2 s$ u8 L
! h/ J5 U+ `3 }* i8 a! j* Z图2 Game.dat文件头& e2 f- J- q/ d- X4 w1 `
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
2 C! {, V7 W8 \+ C" ?$ [, |00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP 6 h# O5 d4 m8 v {9 k+ K3 f
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
4 _2 f* m) k5 |) c, z00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?7 `% y- o2 B& B- R( ?6 X- S
00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV , J0 C! c7 W; ?: d
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
4 z3 A8 h! ~9 X4 ^2 v! {00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP & l; t# @9 Y3 {8 I1 u. {# f" j
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
( x0 F7 p; b: m% a& A7 G00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV 7 t0 `+ ~ n- V- S& k
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP & I0 A% f$ B) P+ t$ W ]
000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
1 f. _2 Q: N! K# A000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |