5.第二个例子——一个小游戏的包文件格式
7 m7 q: j& G$ R3 u7 D+ _8 J3 b( E
9 u, ^+ T* Z+ G! I! T下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版
* X$ b/ D9 [/ A. Q
+ Z2 R* C. h& y5 e* R" e包文件是安装文件夹中最大的文件Game.dat。
# O; L( W1 f6 L$ U. A
6 R! N g& p7 \9 ?1 U这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。) F' y- d8 _5 Y3 S) `& Y6 G
# e$ F# i6 j8 o3 v* M; g) S8 T3 r
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。9 A- X0 L$ x- D! \4 H% F
3 f, H6 D) |' D$ a图2 Game.dat文件头2 z# O+ d* Y H4 @' Q& c
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM' R, I( S; s) ]$ f2 h3 e+ M. z+ n
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP ) J: x3 @6 n5 G
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP : x, Y" q& P! y' f/ Y
00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
" [8 N' f; h Q; k& A00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV 1 o* j5 A( J( d
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.- V5 a, f) a9 P
00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP G' _* L! e$ ?, O$ t0 [" \
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
, v- ^ \, B6 y- e00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV * i+ D) g) N* z, y: `8 n
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP : G% @% M! l) e( E, J, c2 r
000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.4 r0 i# [7 R. [ z |1 v
000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |