设为首页收藏本站官方微博

汉化资料 CSI:NY包文件格式初步分析

[复制链接]
查看: 3444|回复: 8
打印 上一主题 下一主题

[汉化资料] CSI:NY包文件格式初步分析

跳转到指定楼层
楼主
发表于 2010-2-27 17:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

CSI:NY包文件格式初步分析

要制作打包器,先得分析包文件格式,对CSI:NY的包文件格式初步分析如下:
0 V# W! K+ }& c2 g3 A4 C" |2 N2 A, _
' o4 I9 \' w) [! N, J6 C5 w# k包文件,可以分成三部分:
! ^* H/ \1 e6 j% Q+ F1、文件头,0x00~0x0B,12个字节0 d8 X( `" K& E1 H0 D- p+ H
0x00~0x08  头部标识,8字节,为475246050146524700719CAA ,“GRF  FRG”
+ e1 J  u# o5 i! o- Y/ ?0x08~0x0B 文件名表偏移量 4字节
( \3 d+ o: S6 U% _* z6 F0 W9 U3 C& O) y- K# b5 `" Y3 z- ?+ `
2、数据块. t3 }2 R2 m+ E/ a$ u4 [
N个zlib压缩的数据块,依次存放* O, n8 H. Y% q1 d) Y
7 A* T$ [7 T- t7 C
3、zlib压缩过的文件名表
* _2 K: x/ g5 v* Y' @* N( b
- ^  w, B5 n" O2 x5 v5 w——————————————————" W% F4 I' @9 r$ R( v9 O& K
对于解压后的文件名表,可以分成两部分:
, d- m6 U5 I: `2 o& I9 F9 @1 h1、文件头,0x00~0x0A  10个字节, o4 x$ \* }' R$ \  H# j
0x01~0x06 头部标识,6字节,为05000174734C,“   tsL”1 T, z. p" f' k6 Q' ^3 z  W
0x06~0x0A 文件数量,4字节+ h9 M; m6 ~! V/ v! I! W) b) U7 a
" w5 T5 r2 h1 T; G
2、文件数据
) C+ U9 Y7 R: I3 ^  H每一个文件的数据又如下& B2 K9 r/ X6 ~+ z! b- R' x: i
0x01~0x05 未知,估计可能是序号之类 5字节
1 R- J: r5 S, n- Y* v0x06~0x0E 标识符,8字节,为0145495201727453,“ EIR rts”. E7 Z% b( \+ K% s
0x0F~0x13 文件名长度N 4字节
) [. G# [; d" U! Y+ ?" ~# @N字节 文件名9 R: ?5 h1 ]8 R# H0 I
4字节 偏移量,即该文件压缩后的zlib块在包文件中的位置# E- |$ H7 g1 q. W2 m
4字节 文件大小(压缩前,即原始大小)
; K3 k$ e# l5 F5 s4 W% v1字节,结束符 0x01" Q- C9 r9 b. f3 g: ^0 T% Y

" J7 g5 \6 s. j$ Z; I7 S——————————————————0 D9 D& c  i# X9 O/ X" Z; @/ F
那么,如果替换包文件中的文件,已知需要修改的地方有:
! ]& o  }( X! T7 E! f+ D3 n) ?' m; o包文件头的文件名表偏移量;文件名表中偏移量、文件大小。7 L# m9 P6 r9 O! G; v  j; ~6 w

2 r2 c* [$ o$ U# m基于以上分析,我手工制作了一个新的包文件,用一个中文字体ttf文件替换掉包里的一个ttf文件,同时修改以上部分。修改后的包文件用老外的解包工具解包后就可以得到原来的资源文件和那一个替换后的ttf,所以上述几个部分的修改应该没有问题。' m8 o) b7 c4 }8 e

2 l, @0 j: b' z. W( i: y7 J$ [3 L但是将这个包文件替换到游戏里,游戏无法运行。所以猜测包文件中还有地方需要修改,根据以上分析,最有可能就是文件名表每一个文件的头5个未知字节。1 ?. t( X7 C' p  ]' U
! j% d, P& O* G# R6 ^
按顺序提取一些文件的这5个字节,同时计算其数值差,如下:4 `$ B6 f0 ]/ W% R7 m% A  ~
003AD140.temp —390— 003AD4D0.png —20—
: M4 x+ v; L1 x7 o* U 003AD4F0.png —50— 003AD540.emi —50—1 M' l4 B7 Y7 ^4 t0 i$ Q
003AD590.png —80— 003AD610.png —68—) |6 V8 m9 _9 N( C$ c5 V% \
003AD678.ttf —68— 003AD6E0.ttf —68— ; A! Z& W$ _9 c% j. ~( G4 n
003AD748.png —50— 003AD798.anim2 i! F. T5 X3 g& f7 {: X0 {
4 [- |$ H4 j) \3 d( O/ E' U
00547718.png —68— 00547780.jpg —68—
/ j) Z4 y6 r0 F: f8 s/ t/ O 005477E8.png —68— 00547850.jpg —68—: Q1 q$ u7 i9 Q1 ~' |7 c. Y
005478B8.png —80— 00547938.theme
. G  f5 t- y' x' X0 d) L6 ?  J' k: q# k! `+ Y, o
可以观察到,这些数值之差几乎都是几个恒定的值,0x80、0x68等  K1 T! x4 t9 m' @) K' z
本来猜测是根据文件格式不同而产生不同值,但注上格式后查看似乎和文件格式没什么关系
1 }+ ^1 @7 r& n——————————————————————————————————————————0 |* t' x5 ?* X. H
目前的分析就到这儿,先写出来,各位高手如有相关心得,万望不吝赐教
. s2 z# t4 W0 I' o4 `% i. V# l) V& ~
另外写了个根据修改后的文件改写文件名表中各数据的小程序,不过手工都还没成功,暂时先搁着吧....8 H; G6 H5 B# e/ H+ M2 ^5 a7 U1 ]5 I
4 i* P' B9 ?3 y  z; D3 s. k
——————————————————————————————————————————9 s; Z& e* A4 o  J$ \
10.02.28更新:
3 \0 F) X/ |7 x3 L1 \" ^今天用filemon(现在叫ProcessMonitor了)监视了一下,发现是自己粗心,在修改文件名表的时候漏了一个,改完后可以显示中文。那么上述那5个字节就可以暂时不考虑了。: @" L4 @! E5 s. }# c! c5 O
汉化抓图见帖:https://www.chinaavg.com/read.php?tid=20946

评分

参与人数 1威望 +2 收起 理由
慕容枫叶 + 2 分析

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

9#
发表于 2011-4-6 08:45 | 只看该作者
再顶上来 2
回复 支持 反对

使用道具 举报

8#
发表于 2010-11-29 22:30 | 只看该作者
再顶上来 1
回复 支持 反对

使用道具 举报

7#
发表于 2010-9-28 07:52 | 只看该作者
再顶上来
回复 支持 反对

使用道具 举报

6#
发表于 2010-5-5 12:16 | 只看该作者
顶上来
回复 支持 反对

使用道具 举报

5#
发表于 2010-2-28 14:49 | 只看该作者
恭喜了!
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-2-28 14:21 | 只看该作者
2010.02.28更新
回复 支持 反对

使用道具 举报

板凳
发表于 2010-2-27 20:28 | 只看该作者
TO 枫叶2 B7 N/ Q( O2 R8 f. s0 F

' u) B! o7 _/ G6 z" f0 C7 S我觉得写得这么好这么详细的汉化分析文章以后也应该要加威望。
回复 支持 反对

使用道具 举报

沙发
发表于 2010-2-27 20:26 | 只看该作者
收到,我觉得你这篇分析写得非常地好,结构十分清晰,可以说是一个可以给以后来的新人学习的样板。
& S- q: P" S* K3 c2 @) |7 S7 t& c
; N$ D& T, M0 ^3 f) k# P$ i; z回到主题,我也觉得那5个字节十分可疑。
% p% p# ^/ L; G) ^1 h, c* M7 m; C估计老外的那个解包器没有用到那5个字节,所以解包完全没问题。
2 |' J1 f3 e$ `4 T2 t; y- u但是游戏可能用了,所以导致游戏无法运行。* Z) F; p7 K1 X/ s/ g
如果是这样的话,请你做一个试验,用原版的包文件,挑选文件名表里的一个文件,在那5个字节里,每次修改1个字节,把值增大或减小一点点。测试游戏是否能运行,换不同的位置测试多次。9 U! k& w- ]) W, ^5 H/ p
如果每次都出错的话说明游戏的确是要用到那5个字节。. ~/ M+ x" ^# `: S+ \$ d

$ v& ~1 w% L1 F* ^对了,也许还可以用filemon看看,看看游戏出错的时候,游戏最后读取的偏移量是哪里。
2 n% i0 b6 p" B# Q3 j: A. B$ J& z: x" W& H
你的差值测试法我没看明白。
- _& Q8 D) u' @* w1 u& x是前后2个文件的这5个字节的数字差还是什么?
2 N4 M9 Y7 @. A2 l比如下面的390和20各代表什么意思?
& |0 c* y3 o' O3 l003AD140.temp —390— 003AD4D0.png —20—
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表