发了不少教程,资料,都是转载别人的,这篇是我自己写的。
5 d6 |0 P, f/ r8 y) F( |由于时间有限,写得很简明,不懂的欢迎提问。 5 X- c) G, j/ k4 v
# g, r! F4 I1 }6 F7 T. I
打包文件一般是如下格式
( x2 n5 Q4 z9 x) P. M) D: |
9 G1 P( q2 @) |' e& ~文件头
8 f( s: h. |- e文件名表 6 D" B! B/ p* k3 V! n
数据块 # [ S5 W! F( Y, Q. T! Y
4 b) n% q+ S. ~: k/ x
文件名表一般是如下形式
; M6 s3 ]4 U& @. K
1 d6 [" I( z8 n- m' P7 p3 z3 Y# wFilename1+相关的2进制信息 8 _! K+ H3 s( r/ T' Q; o
Filename2+相关的2进制信息 ' E5 j7 o5 X% v5 v2 B$ d
Filename3+相关的2进制信息
; {% ?: Y" |: e6 w。。。 1 R6 W2 }7 I3 ?: K. L2 o: n! M3 o1 L% _ Q
9 A" ^; n" l) s Q- _
相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。 - a( G4 G5 x% L" A; h! u
9 n! y3 b" K8 P! s$ H0 Y. `
文件偏移量 ! j3 q" Y8 c, e' s
每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。! Y) Q [1 g4 R/ P; T- ?3 j& C, s
对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,
5 G; L' E" f0 w8 ]在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。
9 ]' L& H- M# d1 w0 q/ I( i注意,偏移量的保存顺序是高低位颠倒的。' v! \2 R" C$ T. F# C R
3 n& D1 R+ M8 L2 _5 z3 J0 h/ D文件字节数
- \ R( d& C/ U9 N! u& ?找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。
8 F1 V" n1 }8 Q在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。7 u* L9 A6 i; w+ ?
* { P7 i! U5 r& k' B
知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |