发了不少教程,资料,都是转载别人的,这篇是我自己写的。
* }7 k' `. L F0 ?- k0 I7 X由于时间有限,写得很简明,不懂的欢迎提问。 & h" o+ D6 v2 g8 O% G9 S
; k5 ~. T/ S9 J# I( N8 G/ S, G0 m打包文件一般是如下格式 / P4 D8 x1 J6 t9 D0 g# ?
1 W# t: |2 C8 P. S
文件头 7 M" p2 b/ |* e4 L' P; E
文件名表 - F7 ]9 R! B; x4 F' r
数据块 $ t6 K( g1 O+ N$ [; U
5 i5 `: g) i7 Z; F' o& n l0 E文件名表一般是如下形式 2 M; p2 J3 O7 F5 G5 [. Q& E
; E3 G, d7 S# X. CFilename1+相关的2进制信息 ! t. k1 M! d5 f' o6 f2 M# J8 p% q
Filename2+相关的2进制信息
0 x* { L; ?2 H w, I# nFilename3+相关的2进制信息
) C- J9 V8 _8 ]; l( D2 Z7 b) r# O。。。 : _" `$ t5 K# I4 X/ v# n2 K
' E$ D3 c' j$ ?& c! b* |' z相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。
' `3 o8 U5 I8 \& G% U9 o6 o9 V* i* P4 V: ~5 k
文件偏移量
& I8 a2 S4 x# h% Y4 y8 C0 j每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。6 @: E6 b# `7 Q
对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,8 C |6 V) v9 ?( w' o' I
在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。. h3 V0 O( r% M
注意,偏移量的保存顺序是高低位颠倒的。2 ?7 f S' `, T( @) n) {& L2 r! t" [4 z
* t `7 A9 d+ e# G) R: i
文件字节数% Z0 a: Q6 @. ^: {1 ~, S
找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。
8 _1 ~+ V* k+ a: j% J在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。8 h3 Z5 j/ A* B
I# T5 R8 C" r4 l0 A3 `1 }知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |