5.第二个例子——一个小游戏的包文件格式
: Y' G+ p8 e m: z$ u
( Q+ W9 g% p* E6 }- V下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版9 S% q" t1 H0 [5 J) b( j
2 n4 W! \ E) H$ ?" P* t3 o
包文件是安装文件夹中最大的文件Game.dat。
3 e# |7 D% `. f+ k
- H) H+ X& n% F8 x, l4 `这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
, E+ V# A( X% s: o/ y! t7 M/ B* T. D) {3 v
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。- T1 Y8 J" Y* ~- h
- X( ?1 |7 {8 _ u0 \图2 Game.dat文件头
4 o( ]6 U% X. j) R# R: m00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
' y+ k4 s" s& i: Z2 I% j00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP % A4 B* i; _! U" G; ^* a7 d
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
- t/ g# }! d8 C1 f00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
. a+ W6 I8 a* A/ ^00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
' q" I' F: j4 ?8 H00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.3 _ D9 T# m) V. ~0 c- A U
00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
5 v6 S5 o! G5 J, D' A: v1 \7 j00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W- S- n$ s- e: ?* c* F+ O$ M
00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV
$ z' w( g d. t4 g. T& C9 i00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
* S4 H, j0 y$ J# ]000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
3 N6 l+ [. E2 K7 E8 d000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |