5.第二个例子——一个小游戏的包文件格式' V& I" X7 T+ ^; F4 Z- a
$ |+ s) x* F( y1 ~9 R6 ?* W下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版 E, J5 n4 }8 j# F. n
1 ` E" h! Z( D包文件是安装文件夹中最大的文件Game.dat。
+ h% E6 E+ ^( M0 V3 j* {: ~. x
" {$ T$ Y+ X2 M) e1 f/ x这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。4 c, s: x/ U4 r' z% P) @$ ^
o5 |$ a+ b1 x( v9 x打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。8 c0 T6 m9 u0 P7 X I& g6 [
R7 m) w/ o m( K+ }6 g" |+ d" c
图2 Game.dat文件头" \6 d0 z( {7 n. _7 t: k
00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM
3 a* X2 ]& {8 {' ?" W00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP & ]: J: f( P( S7 P" L, D
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
6 z. {/ I3 b" |/ x00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
) \1 T0 _: j! e00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV
' |4 G! [2 _% s7 E% s5 S [6 ]00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.+ ]/ v4 e' N, H3 J. R$ s) K* B0 i5 I
00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP
+ _7 Z+ n5 r B00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W9 I, J# W$ A5 V" q! d
00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV : d. _9 N' a7 s0 h- s1 i
00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
) D; Q' E4 C! S. Q( t% E7 b |000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?." q* W1 Q' O% I; @0 [) K. L% F
000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |