5.第二个例子——一个小游戏的包文件格式3 g. ?$ m, Y \) U
3 ]; L7 E* V( _: O! V下载地址:http://www.lanqie.net.cn/html/benzhanzuopin/20070604/43.html AAAKK版* n# r7 S J6 v' p! c
4 T5 e6 P7 U: J2 P; J4 y; f1 }
包文件是安装文件夹中最大的文件Game.dat。
4 Y! _) i4 w$ I2 d3 ^% Q* F: A! ~9 c! h; q: e; c
这个格式用到了简单的异或加密,但是文件索引表非常简单,因为没有文件夹格式。
' {5 W0 u' r" Z ~1 }' b. D# F% M8 s6 y% |
打开文件,发现有一些文件名(1.BMP,1.WAV),而且每两个文件名的开头间隔一样,说明文件索引长度固定,为28。可以看到文件名占20字节,文件名的空白用空格(0x20)来填充。每两个文件名之间还有8个字节,即两个Int32。可以估计其中一个是文件位置,另一个是文件长度。+ ]% F% E7 |# d1 h% v
% c/ C) f1 n: Y! U2 p7 C1 y& X
图2 Game.dat文件头
2 i& Y8 Q7 U! l00000000h: 52 45 53 59 00 C2 09 00 00 88 47 03 00 4E 55 4D ; RESY.?..圙..NUM/ |! O2 l _, a4 a( K
00000010h: 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 20 20 ; .BMP & N/ E% |: ~; q3 }' M$ a
00000020h: 20 4B 51 03 00 C2 58 01 00 31 2E 42 4D 50 20 20 ; KQ..耎..1.BMP
$ f7 k; V5 i' V5 |& x00000030h: 20 20 20 20 20 20 20 20 20 20 20 20 20 0E AA 04 ; .?
# Z7 l8 Y* M+ h# T* X# L/ I00000040h: 00 2A 20 00 00 31 2E 57 41 56 20 20 20 20 20 20 ; .* ..1.WAV ! H. Y. o' O7 S
00000050h: 20 20 20 20 20 20 20 20 20 39 CA 04 00 C0 58 01 ; 9?.繶.
& N+ g7 R) b+ J# h c' P6 x0 e% y00000060h: 00 32 2E 42 4D 50 20 20 20 20 20 20 20 20 20 20 ; .2.BMP . f# I/ J9 K9 [" N
00000070h: 20 20 20 20 20 FA 22 06 00 D8 AF 02 00 32 2E 57 ; ?..丿..2.W4 v# b0 V8 M0 M" }/ A
00000080h: 41 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; AV
" M. e7 A' T( d5 J; {. ^00000090h: 20 D3 D2 08 00 C0 58 01 00 33 2E 42 4D 50 20 20 ; 右..繶..3.BMP
! Q" z4 T( n3 Y+ H6 n$ ?8 Q7 ]000000a0h: 20 20 20 20 20 20 20 20 20 20 20 20 20 94 2B 0A ; ?.
* T' j; G) A Z3 m& ?2 P( z000000b0h: 00 1E 80 00 00 33 2E 57 41 56 20 20 20 20 20 20 ; .. |