5.第二个例子——一个小游戏的包文件格式! W6 @+ |7 D0 o7 Z
y3 n1 L \( ^5 e
下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版9 E* T1 B$ P1 w+ o7 e, i7 p6 a
1 W. `5 v; P# ^6 x" w包文件是安装文件夹中最大的文件Game.dat。
- s: F# x) a. l' T1 `5 `' {- H0 J4 [9 o4 m- ?0 A2 f
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。% c6 |4 X. r$ a$ j* C7 S. l
i, f! g" Q; I; S# m7 u打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。
6 T4 E/ J* G" M2 e
5 L$ f; }6 d$ w" V+ R3 m图2 Game.dat文件头4 J4 Z* H8 l5 g8 t
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM) _* `: t5 a' k# s; Q; P+ X5 V# _
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP
0 H5 W. J" f: v( a$ n00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP 2 s5 x$ N: P5 o7 b! w* h5 i
00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?5 x i+ R9 T( T, D' Q' M4 c
00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
; ?$ E2 q8 z3 \00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.* k! ~! D# `* v
00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
Y& ]$ [) {5 v( e1 j9 Q% M00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W
E Z9 g% C, D00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV ' L5 o& F# P/ j0 K1 d
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP ) V8 X- L4 H/ ]+ i
000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
% R$ H; p- S+ F/ _& j( f4 v: Q1 c/ l000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |