发了不少教程,资料,都是转载别人的,这篇是我自己写的。 0 X" m8 w1 N) K. Q7 M+ A
由于时间有限,写得很简明,不懂的欢迎提问。
1 A1 @7 g% S$ g# t, d! K" z+ u
9 p0 ~( H, w. k) @打包文件一般是如下格式 5 Y9 R0 U1 y( C; ~1 \
) T' G5 U1 t7 L2 s. O6 ^9 x3 Z, e文件头
/ \& L2 X& W4 R2 s% u文件名表 8 p3 K9 v- k! J$ W9 G% E
数据块
& R" _, u% b' g& `9 x' _2 y# j6 E* o# w) m
文件名表一般是如下形式
- N, E/ J8 t5 l! w6 M
2 N* V: t7 T* VFilename1+相关的2进制信息
7 |! t, h2 S1 V u" j- m( ?2 ~Filename2+相关的2进制信息 " z9 r" k, m( p' c" `
Filename3+相关的2进制信息 p* p/ j7 ^9 k t" u* t
。。。
3 X; s: R8 y3 ]" t) o! r! X+ I5 x0 w) } S1 z2 H
相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。 $ l u, T# @/ _4 V
. t" F8 N7 b6 A+ s* i9 Y
文件偏移量
0 o6 a4 b$ [' A3 Y6 H& U每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。
+ F9 Y5 A+ b+ m- G: X对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,% L9 p ]% E- g; @1 T/ N2 G
在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。
2 s& K$ D- {+ }注意,偏移量的保存顺序是高低位颠倒的。
' i- H: Z' H4 C7 M. d4 ?' [6 D# W' ]: `6 T' {6 a/ y
文件字节数
( A9 y/ k& J( p! _+ r- U找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。
/ e0 H, l5 \% ]/ ]在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。
( D" i) m$ [( K4 {. D% z/ A4 u& B( d4 ]+ A% \ [, A9 c$ O. H
知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |