老外放出了一个静物2数据文件样本。 9 @9 R; |1 `) U9 n1 x, d
http://rs706.rapidshare.com/files/216482719/Sl2data.zip ! c. Z: r* a4 \7 y2 Y6 u. p0 `8 Q
有巳さ呐笥芽梢匝芯恳幌隆?
0 s+ ~" W @" s8 K& f8 h. @! H1 n( y+ {3 o6 r1 P0 @ B- ?7 W
-------------------------------------------------- - N* z1 L8 H8 E8 }1 i8 |
2009.4.4 第1次更新 r* `3 c) e1 M) d5 K
老外放出了静物2包文件的异或key,据说解密以后文件的格式很简单。
u2 f. {1 u v' G( R9 [( o2923BE84E16CD6AE529049F1F1BBE9EB
" E: Y C7 D. V7 F( T* N6 q/ k3 a; Y' _3 _ l
-------------------------------------------------- * \+ \+ ~7 ?9 B8 V C5 d: ^! V
2009.4.4 第2次更新 ( x. D% W9 Q2 B& ~% l
测试了一下上面的异或key,结果正确。解密后的文件为不压缩的简单格式包文件。
/ C7 o2 v# ~! W) m, z) x+ x: _7 W放上异或解密工具,在工具包里有一个例子,异或key就在key.txt中。
_2 i" y' p$ i7 D# f* x3 R
. C# ]+ \; J: v, B% E--------------------------------------------------
- S, K; A3 h- @5 [. R j2 D; G2009.4.4 第3次更新 1 r: M9 s( p# A" h5 x1 e4 u3 b9 j
静物2采用wild-dna公司开发的3D引擎。网址如下。 $ N) I0 m! a, D
http://www.wild-dna.com/main.html
& e% U' C8 t( t6 c2 Xhttp://www.gamecostudios.com/xcengine.html . n) q. T1 m6 c4 e- h% h8 |
0 f* i0 Q1 X3 _2 I--------------------------------------------------
# U7 O) K; v( g1 L+ v2009.4.8 更新
& h6 D4 X, Q$ Z, U P4 A老外公布了静物2包文件的格式。
) t& q3 ^$ M& \0x04 //"GMGB"
$ \$ X3 ` }4 s0x04 //Number of files B2 O8 x9 |. y" C1 }
6 a1 ]+ }% c# }% f2 D/ E$ K- `for each file { : a. F5 Z2 m4 H8 f: q
$ Y/ J6 c- T$ \
0xX path and filename ' [9 n; i1 K8 a
0x01 0x00
8 |5 x/ z% B& ~0x04 file length
6 B! {. {0 ^- j9 l! [5 v0 Z0x01 0x00 2 }4 c' k+ t% T, D! i* u
} % j0 i6 ]7 y# S
; B) B" L/ ^# } C
-------------------------------------------------- + B( ~# R S; |8 H5 O( S9 O
2009.4.17 更新 6 b- s+ C$ t, w$ o' Z% }- s; G9 w
老外动作很快,通用解包器quickbms发布以后很快发布了静物2的解包脚本。 - w4 D( m g. Z2 i+ N' x
用法如下
. r ^! f) z4 mquickbms.exe stillife2.bms c:\Sl2data.dat c:\folder 7 X9 K" m7 ]7 T
2 x+ I: v3 B1 H--------------------------------------------------
6 L$ B( A6 g" Z. r% G+ G2009.5.16 更新 ' L' y9 p1 P# M6 K B0 \. Z6 l
最近又有一些细小但是可能比较重要的发现。
5 B/ y2 X* e1 b: @* I o Z4 n. z用filemon跟踪了一下发现这个游戏支持读取解包后的字体文件Sl2fnt.dat。 0 {% i: \9 G+ j4 t7 W9 g$ t
第2个发现可能很重要,我把Sl2fnt.dat改名后发现游戏竟然能正常运行,此时使用了一种奇怪的字体。此种字体和原来的字体明显不同,并且显示有些不正常。我怀疑是某种系统的TTF字体被强制用不正确的参数显示而导致的。如果真是这样的话,我们无疑看到了一丝汉化的曙光。 % i. \1 v# O" {
弄清楚这谜一般的字体来源是接下去要研究的课题。
$ O; ]. F! d1 A7 }+ }0 c下面是此字体画面抓图。 . O5 ?: E; B1 N+ Z4 d* \8 z
- {7 W7 k8 L$ T9 r9 G( |7 I5 }
, `, s7 I% Y0 _! P+ g-------------------------------------------------- # J- ]. m2 A3 R& t) [, Q
2009.6.26 更新
/ m2 G U" x6 M/ E- d9 C经过老外的分析,把Sl2fnt.dat文件删除以后,游戏会自动寻找系统字体arial.tff。 ' u" }. B9 V) N+ x) W3 B; {
老外还放上了清晰的抓图。就是说我们目前已经可以把静物2转化为一个使用TTF字库的游戏,如果有办法HOOK显示函数的话,也许可以用比较简单的方法实现汉化。 N) P" E0 H5 N
放上抓图
& F3 W/ y. W9 q( p8 q& X
# `/ C* O+ |( w2 p; Z1 m8 X% y, O, w
& V1 n$ ?" L4 x' W6 c" A--------------------------------------------------
* |: n8 g3 V& i8 j, e2009.6.27 更新
6 Z5 m1 n% ~, e) s% X2 w4 d我在另一台电脑上试验了一下,可以显示出正常的英文。
* X3 Z7 h g) b" B# N; l我用上面的异或工具解密了字幕文件Sl2data.dat,然后写入一个中文字,再用异或工具异或一次。发现只有这个字的低字节被显示出来,高字节被过滤了。 ! |7 _' m4 e H1 R
我觉得分析到这里基本可以知道实现汉化的方法了,就是用OD分析一下,找到那个过滤点,使游戏一下子读取2个字节,这样游戏应该就能显示出中文。 ' |, E4 } M! _# N3 w* J
肥牛如果有时间的话,希望能尝试一下。拜托了。 ) j1 l4 p2 g2 e0 P$ T' \+ D
需要修改的可能是xcEngine.dll这个文件。
: Z' L/ ]- A) N; T+ p
* T2 Y# N5 o: i( J. ]抓图如下,显示出来的是 汉 这个字的低字节部分 " Y9 E s) ~# X- v9 o
5 |. s9 M' V/ D9 N" s6 [7 {0 m& w( D1 u- v8 @4 z. D X; r
-------------------------------------------------- 5 d5 Y5 O+ R. T. u* n% o
2010.2.2 更新 / s! Z6 u/ }3 q) F% N( t; v
我电脑上的静物2,在一开场2人打完电话以后,就会崩溃。( J$ h1 t7 z/ G7 ?
研究了一段时间,发现可能是我显卡较老,只有128M显存的缘故。# C" D5 W& i" D1 i9 ?0 o, N
把option的Shadow Quality改为low以后,解决了上述的崩溃问题。 |