发了不少教程,资料,都是转载别人的,这篇是我自己写的。
7 \" ]6 w' g7 Y由于时间有限,写得很简明,不懂的欢迎提问。
3 {% k8 }4 w% @6 s8 Z0 j9 ?: Q* O# s4 r. ?( S
打包文件一般是如下格式
- V0 ?4 t! {5 {/ y. e/ ~. N7 v5 l4 `/ ~
文件头
% E) V" |( K/ f文件名表
: Z* o2 q! _( j1 y* v# [3 E& D数据块 8 R$ f0 X l: g7 H7 Q" J5 Q. R0 ^* d
: R5 T1 Z: F1 a4 \) _ n8 t1 F文件名表一般是如下形式 1 P# |! T% X7 G0 T
* F3 A1 a4 P" E9 c3 e9 HFilename1+相关的2进制信息 ' d2 ^! i `. K8 J1 A7 k
Filename2+相关的2进制信息
5 |8 ], Y( F( O }Filename3+相关的2进制信息
9 w$ x% K. ]2 y5 p" Y" }。。。 3 d/ C H4 Q' Z; o( K) Q" l
; j, l6 _8 a, ?; \4 A+ i( y
相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。 4 q _$ e. z" q( w7 I1 B
a8 A) v( c$ t. L- G: ~1 T
文件偏移量
; H/ a* x0 \+ Z6 ^+ y) P% g* _每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。4 F& t7 N1 M1 h% A! X: h
对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,
7 u% b5 e0 P2 p在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。" ^4 k3 U" Z C
注意,偏移量的保存顺序是高低位颠倒的。
8 @, ^/ Z! z) n9 ~) Z
* g0 p9 h z' D8 A文件字节数( E, V# W, q7 {% s( F* a. W- Z8 s
找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。; W) s+ y# h a2 Q- W9 m
在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。
3 @( \1 f( C! w: W5 A
# m. B2 ?- A* o; ~5 l& O知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |