5.第二个例子——一个小游戏的包文件格式+ t% e$ y2 m- M% x) H9 g2 m
|/ B- v! P' H+ E
下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版
# V- Y; i+ u0 y9 l9 n! v( ~- {9 C. v- t i" J3 T% P
包文件是安装文件夹中最大的文件Game.dat。7 R5 k% e1 e4 Z9 O6 B* ]5 o
0 D8 G% C/ J. I( m5 A; h: n9 d这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
1 R! C) V! W( l" X& O: X' Q: X! @ e
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。7 d) }4 R! s; v) r, b& @% l
6 f" r% p0 ^6 O ]# |图2 Game.dat文件头
" k5 a- a8 S+ {% b00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
! w) o2 N) w, P% T3 H3 o7 c00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP
' {0 Q1 n* _( }: U& } Y00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
: [( L* e' z2 G3 p00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
. V& s2 ?* Z( A3 v1 ^9 X00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
$ [: S( F. g( F6 j+ H8 o00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
% v8 i) j7 h- T; l2 _" l" ~& C00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
- y! W& Z7 T) Z! H00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
2 r$ i, I: R9 u: ^& R00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV + H1 Q" `# o' X$ e, b
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
9 g) K/ v& g8 ~: W; l V T000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
1 Z- q7 P7 Y' t" v+ g6 Q000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |