5.第二个例子——一个小游戏的包文件格式
& x# `: u! S% b
! ]$ b$ O- }* G, e" K5 c% Z" X下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版
4 }3 v1 [% U+ F0 p/ e. Q# d" Z% X( e; \; E: G) Y, k; _& v* D
包文件是安装文件夹中最大的文件Game.dat。* y0 k$ F* `- s( u2 N
2 |/ P7 B& i* v$ ?/ V* f
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
+ R7 {! w& p8 G- w8 X [0 g5 o% T- f Q5 y m4 z
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。6 z) Z& i S9 w, c5 C" P
$ k" E; N1 d2 J) k5 r图2 Game.dat文件头, A. [+ ]; Z6 i O& s
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
7 o- Z) a1 K3 ^; M( J5 v! R00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP 0 M/ Z; f [* D
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
6 `1 N# g: t7 Z4 M* P00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
% Z8 v9 h5 z6 q9 ?9 {" e00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
6 y* f7 ], h9 D6 N( [# }00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
_/ F/ j, G) d( g00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
* z; G1 O" P' q( m S3 f00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W9 ^. p" @: D' t: l3 ^( H4 P$ l
00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV
2 v2 R! q& m+ e( Y1 x' ]00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
) F8 [3 R: z- ~( L& q! A000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
, {2 q9 L( o6 l% V" G' |# @; D4 r M0 i000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |