5.第二个例子——一个小游戏的包文件格式+ a7 Y; K4 M- o8 x: b; a, y. L
) w2 p/ {$ _3 {下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版
% j" c. l& m: `1 C9 |3 K
& D7 k: [2 f4 B. p/ u包文件是安装文件夹中最大的文件Game.dat。
2 T+ ]( {& ~$ G1 T1 W( x( u* ]% i
) a4 F9 S1 q6 e这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。( ?! h. Q6 p( m8 C
" Y7 n# I' D0 K/ v打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。
: u# k ]% J' G$ q p" `( d* o# J- ` A7 m8 Q4 @
图2 Game.dat文件头
# ^! H3 n! d7 Z( E" P Y5 B' u2 ^00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM3 X2 c8 V' e6 t7 _7 M
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP
7 T( [) H D/ Z00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP " ] G. `. v0 y
00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
5 z% d: Q3 R6 u6 w2 j00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV 2 u' e* q, I/ I; W$ h% H c
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
8 | A$ v$ w' v- j6 m00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
. H' q1 O0 y! K6 j# d! f: M00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
: s& h' Y, P/ G2 Z) B D00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV & [: E, W: }1 p$ P7 n* E x
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
X( K Z" |6 i' H9 @000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.8 F' ]& M( {9 {' i; `& Z* L
000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |