冒险解谜游戏中文网 ChinaAVG

标题: 教你如何写汉化分析(第一篇 包文件) [打印本页]

作者: shane007    时间: 2010-4-4 10:40
标题: 教你如何写汉化分析(第一篇 包文件)
我们在研究汉化的时候,也许并不能一下子就实现某个游戏的汉化。 $ C4 }8 F+ x6 l5 x
所以,我们有必要把已经研究出来的东西写下来,这就是汉化分析。 & w: e8 k: `  G" U0 j# r- u! z
换句话说,汉化分析是一个中间研究成果。
! z8 U& n8 [4 ]把这些东西写出来,好处有很多,对自己可以起到备忘的作用,可以给新手留下很好的学习材料,
* @- Z: _5 C9 F% o1 V同时还有可能获得高手的帮助。
( X) }# _4 R" r3 s6 ?- B6 \4 i/ e/ Y, q下面就具体说一下,如何写一篇高质量的汉化分析。
" M7 p* l1 E$ `0 S: h( x8 u
+ e( V, ^+ a. o' L2 `% {4 [1.包文件 - X( g6 N- g# }. j
  游戏里一些比较大的文件一般就是包文件了。对于包文件,我们需要写清楚以下这些东西。
9 U, ~/ n) _! D, j0 Q3 G% G
( o# j8 _% B+ D* z; c: I* }7 N+ ma.包文件的存放目录及文件后缀名
& I; V& `3 e/ A+ _# D/ t. X  如果只有1个包文件的话,可以写上这个文件的全名。 , @3 O0 {8 @, q% d, ?) _4 i
  不过,到游戏安装目录为止的部分都可以略去。 * s* s' v& t8 J& \2 H
  * H* P/ J. G+ \8 t/ R1 |9 \7 H
b.压缩试验结果
5 g4 M, {; e. i" |' D  用winrar压缩一下包文件,写出压缩前后大小,单位到M即可。 . H: C6 t: K( j" G4 h
  如果压缩前后大小相差约一半,说明包文件没有经过压缩。 . H) L6 a. W7 C3 i3 t  N
  如果压缩前后大小相差很小,说明包文件经过了某种方式的压缩,比如经典的ZLIB。 ' p: s0 }$ y  s1 n

/ ?5 U5 ]( j) Q6 W# d+ E- k: K+ sc.ZLIB试验结果 ; ?* ~5 q' D' }
  如果经过压缩试验,证实包文件是经过了某种方式的压缩的话,我们首先可以来测试一下它是否是ZLIB压缩的。 ' n' J5 Y/ D4 F
  有一个工具,叫offzip,用它就可以很容易地检测并解压ZLIB压缩的数  据。
+ w1 j* w; f  Z8 U7 V: J4 @https://www.chinaavg.com/read.php?tid=215721 A5 X, z1 z- A
4 L! A4 F. Q$ }5 a
d.XOR试验结果
5 z" A2 H0 y& z: j3 P& ~8 r; }  如果一个包文件,经压缩试验证明没有经过压缩,但是用hexworkshop看文件的头部和尾部都没有发现文件名表的话, 4 X) a2 P+ Z  u8 W) \. b
  那么这个文件有可能是经过逐字节XOR加密的。 * r& O* [0 k0 L0 f) f, I* s
  请用以下的工具尝试XOR加密破解,如果能发现文件头部或尾部的文件名表的话,请写出XOR key。 # x8 ~6 y& _4 |, \" d$ n
  这个工具仅能暴力破解单字节XOR加密的文件,如果XOR key 是一个串的话,就需要用OD调试exe文件来寻找了。 # X$ Y  Z- T& M' ^
  https://www.chinaavg.com/read.php?tid=21025 1 Y# p# W2 U! U
" k8 ]6 }  o/ k
e.尝试分析简单的包文件格式
3 W* m9 A( Q; Z; u3 x3 ~/ l3 y  如果用hexworkshop在文件的头部或尾部发现文件名表的话,说明这个包文件是简单格式的。
0 y4 q% a. _+ s/ d; D4 ~' {9 d  我们可以尝试分析它的格式,并用quickbms写出解包器。相关的帖子在论坛上已经有好多了,这里就不展开了。 ( j# [/ V% R1 Y8 @' O1 ]+ R
  对了,在自己分析之前,最好先找找是否已经有了现成的解包器,如果有的话,直接使用就行了。  9 S5 E* Q+ A( F1 Z3 _- D4 A
  % o7 M! ^% i3 A5 r
f.免打包试验结果
. Y  _4 c' ~6 g; A% R" C% V  F9 ]
  有的游戏是支持免打包的,就是说把解包后的文件按照一定的方式存放,游戏就会优先读取的解包后的文件。 8 o  b: V$ ^1 L0 O" {9 a5 m; ?) f
  而原来的包文件就可以删除了。   G" b0 M6 x' p7 p; |
  
4 d4 Y' `$ M+ f! @3 b9 |* z  比如说,游戏的包文件是data.pak。我们可以在游戏目录下建立一个data目录,
& I* c2 w  z8 h0 ?* s  把data.pak解包后的文件都放进去,然后把data.pak移走(注意是移走,不要改名,有时候文件改名后还是会被游戏读取的), . b1 l2 m2 W0 |, e* V0 F- g
  如果游戏还能正常运行的话,那我们就说游戏是支持免打包的。 4 s: t2 @2 c2 N/ [2 u9 L( _$ d
  / q! d3 D) y# ~( m! J+ w
  有时候,我们需要建立的目录是和堡文件同名的,比如包文件是data.res。
& @# M. A4 C, S) x  我们需要在游戏目录下建立一个data.res目录而不是data目录,只有建了data.res目录把文件拷贝进去才有效。
2 n& r0 z* e8 _" r5 e( I  总之,多试试看就行了。   x1 P2 P1 K- |; S" Q
  还有,有的游戏对资源文件的管理是通过一个xml文件来进行的,里面指定了哪些是从目录中读取,哪些是从包文件里读取,
2 f; S2 l4 H. c1 `- a: y6 r  我们做相应的修改就能实现免打包。
- v& k! O" H1 Y6 q4 p  新出的游戏有一大半都是支持免打包的。当你研究出免打包的方法之后,请把具体的操作方法写出来。 : x3 T# f' W2 w( _
3 p4 W0 {% I7 \: b$ U. v- ^
g.包文件的文件列表
  L# k7 v$ H* `* X, Z2 ~  为了便于以后的分析,以及便于别人帮助你分析。 # V8 c2 r% @5 V0 j; B+ I7 S3 G) U
  请用 dir *.* /s >list.txt 命令把包文件里的文件列表输出到一个文件,压缩后放到帖子的附件里。 1 Y+ L( h4 q/ k2 ]/ ^
  不要直接贴在帖子里,这样帖子会看不清楚的。
0 \) s: i5 Y  T1 K+ w: e. Q  待续。。。
作者: naptid    时间: 2010-4-4 16:13
等后续
  a, V% @- M( C: I建议写完后加入置顶索引贴




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