5.第二个例子——一个小游戏的包文件格式
) X% U6 N: Q! T5 C+ H9 R) x# p- Y1 S2 T
下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版0 u7 U2 L7 d% }0 B, q* ?
8 I5 N7 M6 L: f2 v1 Y9 S
包文件是安装文件夹中最大的文件Game.dat。$ y$ ~5 E7 ^* e6 d
, F* J/ g8 R8 ^6 ?/ N
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
. [" i1 k6 V3 v/ O- ?; z7 n. P- Q" G% ]$ |9 q
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。
3 X- i+ d0 H3 E: h" q' r1 U! t# y$ l
( y W8 f( t3 n7 C$ P; r+ o图2 Game.dat文件头. T/ ]: ]5 S. Z9 X& y
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
" m7 p* v6 ? i2 m00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP 8 W# e# i% `+ } Y* ?1 L+ D
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
2 R3 b5 m+ {2 K* a00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
& |" Q8 i6 [+ [2 ~00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV % S3 V5 @2 C3 A5 d2 ]! C; d
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.8 A5 J$ R0 D2 K
00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP * f$ y8 \3 ^, }' X# I, p7 {) p* B
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
1 T# ?+ { z! s/ r00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV
5 h) u! | T* o* h( i9 D00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
7 k( F+ V) z0 f7 V2 c% [* G9 p* V2 d000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.: _9 {: D- L* I: C# x
000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |