5.第二个例子——一个小游戏的包文件格式
* k! k; r$ q) y) p
6 R) J( O( u# y' G4 r下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版# C2 h5 Z1 x0 R. A
! k2 w. T p+ ?" D: \' W& P9 _
包文件是安装文件夹中最大的文件Game.dat。 a+ J# t+ ^" X% v5 G
9 v. n4 v! ?' k' V$ ~' k
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
3 V4 u* q6 A' _+ S. M- z Z0 d, e& ]; H' @0 F+ u: E" U
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。& U& T5 Z1 H! [* B. \% |
, w5 J- ~4 m0 C/ _ O3 `图2 Game.dat文件头, W' N- b' ~9 F
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM1 @. I* }5 Y' i
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP 3 M; w/ q' P# K( q7 ~
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
2 }1 [1 F @1 @2 x( W2 x00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
" o* Q. i! X. q2 x00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV " c- P* c# d" H$ C8 P) P! P0 O
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
7 [6 V* f* d* m6 _) N: T00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP 0 A' }. @/ i3 f" i/ v; e9 G* i
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W! \& | g5 `9 v+ W, J( z7 x
00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV : s: d5 `; p. j, e6 L9 s
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP . W! v2 l: p! v7 A
000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
7 w/ o2 q. W9 u* b, }+ H+ ?000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |