冒险解谜游戏中文网 ChinaAVG
标题:
文件头+数据块(zlib)+文件名表 的资源文件
[打印本页]
作者:
mckay
时间:
2010-7-16 15:57
标题:
文件头+数据块(zlib)+文件名表 的资源文件
最近研究资源文件发现好几个游戏的文件都喜欢用这样的格式
% P( B7 R# ?7 _9 d/ L' ]
9 h5 e/ _) E+ E+ e( P' u2 O& o
文件头
& p7 m' T$ e( K3 W( V3 h7 |
数据块(zlib)
5 w. ]5 u5 ~7 g5 g
文件名表
' b5 [! T" z& |9 A
% d' |! }/ A; d3 @2 z8 \ n0 l9 `4 i, Z
其中文件头格式为
; J& p- S0 R3 ^* Q
5 ^+ m$ ^$ l/ }9 S! j4 o3 \
IDSTRING(P1)+资源文件版本号packver(4)+文件数量files(4)+文件名表地址指针RES_START(4)+NULL(P2)
6 X& F6 y( w) L
1 h0 l K) [# S' M9 C4 y% A+ X1 b
文件名表格式为
4 _7 H) u" L+ l
0 P( ~, V R* |4 h# j4 r" T) H5 x2 q
文件名NAME(F1)+文件压缩大小ZSIZE(4)+文件解压大小SIZE(4)+文件在资源文件长度FSIZE(4)+文件数据地址偏移OFFSET(4)+filever文件版本号(4)+NULL(F2)
' }" @4 H" T B8 M3 A
7 P D8 k; {+ ]8 M0 F2 }
一般情况下,文件压缩大小ZSIZE=文件在资源文件长度FSIZE,但是有时候后者较长,可能是预留空间用于更新维护。
0 b; [4 b: z: T. f+ D( `7 r
# |" r1 b/ P o" `
这种格式的好处是,当资源文件很大的时候更新维护都比较方便,把新的文件压缩后插入数据块的末尾,然后只要在文件名表后加上更新文件的文件名表就行,然后修正文件数量,其他数据基本可以不动。
* A6 N( t% Y8 ~. k" `2 l
( P9 y4 B( a! c/ V
所以这种文件解包方法都可以这样,略有不同的可以稍微修改下
5 e m+ o ^, ^5 n
getdstring IDSTRING 0xP1
2 i/ L$ `, F4 {& F% p
get packver long
; V: b# b3 D, W+ \
get FILES long
; O! Z b' q+ b W. h
get RES_START long
+ T( p: ?( }: U1 ?5 d, ]4 r) m; w
getdstring NULL 0xP2
$ J, o& M {# u7 o, b+ a0 ]" j
) Z0 C+ C4 K' a- g+ L
goto RES_START
" T0 k" e: Q' ]0 K; t+ `- C7 `
for i = 0 < FILES
6 R, p" n- r3 q3 x) [' p
getdstring NAME 0xF1
: ` u" B) Q2 u& V9 A
get ZSIZE long
: H. r" o1 E8 c4 ~) {+ U
get SIZE long
1 \0 G1 P) p; C" a
get FSIZE long
z) G+ m( b2 t, X. O! T9 W
get OFFSET long
: A# B/ n8 L, w
get filever long
5 Y8 w: R% Y0 f; ?7 }: v- k
getdstring NULL1 0xF2
$ R5 ^3 @$ a; I: i! [4 q6 _1 q% w. ]
clog NAME OFFSET ZSIZE SIZE
+ r2 j3 J; T( l0 I
next i
% ] R* f% m t
) S. s. Y' N) J- f, k- y! W$ p
现在,想求高人设计个通用的打包工具,命令行或GUI都可以
5 K- [* k" V$ ~( o
其中变量IDSTRING P1 P2 F1 F2键盘获取,其他变量根据待打包文件修正。
& `/ q8 T1 Z# T; q7 |# e
文件版本号Packver、Filever通过读取文件录入,没有没有该文件直接置NULL,FSIZE直接等于SIZE方便处理。
作者:
shane007
时间:
2010-7-16 17:06
能报几个具体游戏名吗?
, O9 }; E% I1 M9 O* b/ o. z! E
有的游戏支持不打包的,试过没有?
: b! n- N9 m9 h1 O" m3 M: D4 H4 ~
还可以问问老外
9 W) ~0 F. W) | A. i/ ]9 i! V
http://forum.xentax.com/
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2