发了不少教程,资料,都是转载别人的,这篇是我自己写的。 ' u! q& m% u7 i! m+ \
由于时间有限,写得很简明,不懂的欢迎提问。 ( X" G! k# F2 A
% k" m/ O n+ a; i8 |) r打包文件一般是如下格式 ; ]6 d2 C* B) ?, F, R8 O
5 k+ D `. D n7 Y D文件头 ( a; R: f% O5 B6 o
文件名表 ) L8 }' y8 ]' i5 O
数据块 % t7 C8 L% ?% @" E( d4 C! C0 K& A
1 T* e' n7 h' O& [/ @2 |, F
文件名表一般是如下形式 & y \( y& b9 ?9 h
5 G9 }3 [- i$ s
Filename1+相关的2进制信息 6 {8 y* y d& ]# l; s2 l
Filename2+相关的2进制信息
7 J) t% O* h+ g: Z+ I' u' v& z0 r7 vFilename3+相关的2进制信息 " U0 {/ g, H6 l: ]1 n7 N' J* q
。。。
/ d. e9 O& O5 m$ y+ M! N* K. ~5 u% ^0 M# f/ P& L
相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。
9 C2 x0 @ r9 H
* h6 A( ~4 U, ~/ n文件偏移量
1 r) R8 r7 M/ I7 {每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。
4 g+ K8 c: ]6 I: p/ K. y) Q/ s" _对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,; H/ b8 I9 a+ l1 L) `5 P+ p: t- K
在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。
9 E- H6 L& D! s7 h* Z1 {注意,偏移量的保存顺序是高低位颠倒的。* t7 q- w$ L6 y. @" p
, l8 I6 w; g t( C+ A% Y" j文件字节数) q) y% I9 d0 `" ]
找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。
) E/ n( P0 C$ Z7 b( {/ g, R在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。
5 _# ]) G5 V: y& }/ {. |* B3 o5 m0 c( Y1 c, H, g0 h7 W
知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |