冒险解谜游戏中文网 ChinaAVG

标题: 文件头+数据块(zlib)+文件名表 的资源文件 [打印本页]

作者: mckay    时间: 2010-7-16 15:57
标题: 文件头+数据块(zlib)+文件名表 的资源文件
最近研究资源文件发现好几个游戏的文件都喜欢用这样的格式
. y7 E9 O% R& J" W% V0 ^+ z; [& X6 o" \; `1 F6 H" n+ i/ X: u
文件头
. K  d) X9 w9 h- C1 ^数据块(zlib)
. r- C  z" o; D! }/ A; v文件名表2 {/ s6 c9 y; U6 b! Q0 |% f9 E

( U$ \8 `* e3 Z$ H( A! A! s其中文件头格式为, f6 b9 ]7 W9 h

" Y6 N: J; p, h( g: m4 _! o8 FIDSTRING(P1)+资源文件版本号packver(4)+文件数量files(4)+文件名表地址指针RES_START(4)+NULL(P2); i5 v2 a( U) i" P9 S9 B5 e7 f

) L3 S( n" B5 c文件名表格式为$ J+ U8 A/ k5 F, g' o
& }( S5 }+ @$ ]! S( N1 i
文件名NAME(F1)+文件压缩大小ZSIZE(4)+文件解压大小SIZE(4)+文件在资源文件长度FSIZE(4)+文件数据地址偏移OFFSET(4)+filever文件版本号(4)+NULL(F2)2 n+ B" }! }' n& M
' K( [: o$ P/ W) a5 V
一般情况下,文件压缩大小ZSIZE=文件在资源文件长度FSIZE,但是有时候后者较长,可能是预留空间用于更新维护。/ `3 T6 S8 }3 g0 e! ~$ i( \" \

$ I% M& c- a& q- g* R& u" W4 e这种格式的好处是,当资源文件很大的时候更新维护都比较方便,把新的文件压缩后插入数据块的末尾,然后只要在文件名表后加上更新文件的文件名表就行,然后修正文件数量,其他数据基本可以不动。
, a$ T1 a3 U* B. {- y/ A: m- Z7 B2 e' e7 r8 r' t2 c
所以这种文件解包方法都可以这样,略有不同的可以稍微修改下6 u3 I3 u( A; P! F, @
getdstring IDSTRING 0xP12 R& h* [3 h& W, ?# N
get packver long
* E* C; k. V' P3 ]: Z$ u! Wget FILES long
! r% W" q2 C0 Q; u$ a. D& X- uget RES_START long
! H( i; \# I( [. H/ o+ Cgetdstring NULL 0xP2
+ e. n: c+ s3 Z1 E6 ^+ W' u+ Q- D7 z" ]6 m2 R% {# F
goto RES_START" F$ M# g% B  A1 z/ T) R
for i = 0 < FILES
! }3 C" ?; H. G. j$ o8 @. tgetdstring NAME 0xF13 A& {9 X  m( c) c. I3 m# I* b
get ZSIZE long, W+ _+ L1 ?. ^' J
get SIZE long
. u( M. ?' j9 p$ P. G, i7 Uget FSIZE long- S8 }" |' S- z# H# |' u
get OFFSET long7 C# @) U. T+ s/ [  {
get filever long, I3 w# t5 c, n0 w
getdstring NULL1 0xF23 w2 ~* F4 B% j* y0 H
clog NAME OFFSET ZSIZE SIZE
% m9 M# f% P: U1 Q6 Enext i" v. I/ M1 d% q& u: m
+ Q& w0 b- o: m3 ^5 m
现在,想求高人设计个通用的打包工具,命令行或GUI都可以
2 ~3 @+ f+ m" _其中变量IDSTRING P1 P2 F1 F2键盘获取,其他变量根据待打包文件修正。9 w" e3 s# m2 O/ Z
文件版本号Packver、Filever通过读取文件录入,没有没有该文件直接置NULL,FSIZE直接等于SIZE方便处理。
作者: shane007    时间: 2010-7-16 17:06
能报几个具体游戏名吗?
- e# |. X$ A( c# B9 T有的游戏支持不打包的,试过没有?4 Q) K7 T/ b  x# |! J! G& a
还可以问问老外8 @% e. \7 @# Q1 v
http://forum.xentax.com/




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2