发了不少教程,资料,都是转载别人的,这篇是我自己写的。 6 ?4 H; B4 h3 B- `. T# E) H9 q/ u; A& _
由于时间有限,写得很简明,不懂的欢迎提问。
0 l i" p0 p- E% }# E+ M# W/ Y5 c$ P/ B# G
打包文件一般是如下格式 ) p# J, s: s( C7 K8 ]
2 [0 f2 P* Z: P
文件头 & x% n# }, }: F, E7 }
文件名表
2 W- y9 ~. K5 ]7 j数据块 : u$ U% y' x# {& r
! m) y# X, V) ]# n: I; F. t
文件名表一般是如下形式 7 ]/ [+ w" F+ r& P
0 M0 w6 e. v p0 h& Y: x' q
Filename1+相关的2进制信息
1 a6 X+ o, u& H5 gFilename2+相关的2进制信息 - T! @6 ^. u4 m# H9 C
Filename3+相关的2进制信息
4 Y2 r I2 z6 B5 \! F: P。。。 $ ?; D- a4 n2 E- S% f
* E5 B z5 c( N7 ~相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。 6 Y5 w, c: M) J% M; j5 ]
: V4 o' `; Q# ?" a8 b3 i文件偏移量
/ Q- m# l7 ~* a2 ~* f) z2 |* l每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。
L& _1 \6 {; D1 X8 R! Z对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,. } b! {4 T8 `, j( ^" j0 z& v/ U6 b
在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。
! ?" X3 F7 q! e0 s注意,偏移量的保存顺序是高低位颠倒的。# r8 E" P* `9 t- d- b6 C) y8 H9 k7 I
2 x+ \3 H0 q* |6 e文件字节数
' g+ E3 Q3 A1 d( I" W' V4 Y找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。. }7 U" z. m: J. w! W8 X3 {
在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。/ v8 @: ]4 f3 G$ p, N2 ?2 T7 L/ a
: B9 m+ B u+ R- j# L' x知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |