发了不少教程,资料,都是转载别人的,这篇是我自己写的。 " q1 y6 c2 ]% ?3 Q. F1 O( O
由于时间有限,写得很简明,不懂的欢迎提问。 & K; Z' n2 ]: Y
% |, t. e' t# x& O9 r2 G( V打包文件一般是如下格式
. a: [8 p1 n0 w" j* S& I- {7 h% B! N8 u* J
文件头
' }& ^: \$ v! a# W' B文件名表 5 L+ N( U9 ^0 v
数据块
0 S5 x' {5 a0 r9 I& Y
2 Z$ q1 d- ~4 Q' U' O文件名表一般是如下形式
4 B2 ?% L! w6 ~' P7 W% K! T' N! z) k6 q, k
Filename1+相关的2进制信息
! b k8 i$ `& `Filename2+相关的2进制信息 6 d; @) q' h _! f$ ^
Filename3+相关的2进制信息 + c+ q( i' M5 h5 m* V; @( |8 Q
。。。 # T m) Z) I A- F' {/ ~8 [9 `, \+ G
% d% B# H" {2 @4 g9 C相关的2进制信息里一般会有文件偏移量和文件字节数。但是如何知道相关的2进制信息中哪些是文件偏移量和文件字节数呢?其实很简单。
& @- q* b8 |5 j1 q7 a' @, ?/ `. E2 Q) t3 [6 C% P& |
文件偏移量 7 o; }, a$ D# o0 U8 w$ x
每个文件名表项的长度是一样的,那么最后一个文件名表项结束以后是什么呢。
" G" j& a! ?7 [" Z( ?5 [1 n对了,是第一个文件。在2进制编辑器里看一下这个偏移量,比如0002F4D2 ,
/ u4 Z2 }, m* x1 V6 B在第一个文件名表项中寻找D2F40200,就能找到文件偏移量的保存位置。0 f0 |) L8 w$ S5 {
注意,偏移量的保存顺序是高低位颠倒的。
# C% Y+ m8 H$ U2 i* S; F3 V
2 }, \! N I" S2 @1 G文件字节数
1 i& A; H* {+ Y& x找到了文件偏移量的保存位置后,把第1个和第2个文件偏移量相减,得出第一个文件的字节数。) J9 A* q9 r( p9 O: d4 y0 L1 D5 K
在第1个文件名表项中寻找这个字节数的2进制值,注意,保存顺序也是高低位颠倒的。也就找到了文件字节数的保存位置。5 w2 s8 b5 H! S
6 y$ K/ h$ x4 N
知道了每个文件的文件偏移量,文件字节数,制作打包器,解包器自然就很容易了。 |