冒险解谜游戏中文网 ChinaAVG
标题:
静物2 汉化分析专用贴
[打印本页]
作者:
shane007
时间:
2009-4-3 07:55
标题:
静物2 汉化分析专用贴
老外放出了一个静物2数据文件样本。
0 [6 T! o R% v; }9 L* P, D! |
http://rs706.rapidshare.com/files/216482719/Sl2data.zip
7 t5 P% m- y4 H- I
有巳さ呐笥芽梢匝芯恳幌隆?
3 b7 i8 F2 H; @+ r2 R% w9 s
2 S- \" W% g- A/ [
--------------------------------------------------
2 A) F4 }& ^% w
2009.4.4 第1次更新
+ B# S. h0 I# S5 a
老外放出了静物2包文件的异或key,据说解密以后文件的格式很简单。
9 Z6 D* N" b0 e& g- |/ Y4 f% y3 `9 h
2923BE84E16CD6AE529049F1F1BBE9EB
7 X5 d( z# }* F% M1 o
+ V6 F+ u, W1 D
--------------------------------------------------
; `: A; A5 N3 a- X# b
2009.4.4 第2次更新
. S( r! [1 ~1 w4 v1 c+ a+ \
测试了一下上面的异或key,结果正确。解密后的文件为不压缩的简单格式包文件。
5 d: I- E# n3 A2 M. o. G
放上异或解密工具,在工具包里有一个例子,异或key就在key.txt中。
1 G+ S2 ?5 j0 E6 C
$ A/ h7 o7 Y+ Y0 ]" @$ r* G
--------------------------------------------------
$ A* v# k: ^; q7 o
2009.4.4 第3次更新
6 l# R' x3 Z0 C( S. L
静物2采用wild-dna公司开发的3D引擎。网址如下。
# K) W4 b) |( ]2 ?/ f% j
http://www.wild-dna.com/main.html
" \+ u7 ?! z+ d4 G( J
http://www.gamecostudios.com/xcengine.html
( q4 d! k- S; f4 B* g
5 Z5 u$ x; a& X2 |
--------------------------------------------------
% b6 b6 ~, G7 l& S( C' P
2009.4.8 更新
" ~ s0 u/ H3 L1 c0 K/ U8 H# i
老外公布了静物2包文件的格式。
+ S+ I2 O5 g5 B$ r& _+ Z _5 |
0x04 //"GMGB"
5 v; S# _& s7 p* e) R
0x04 //Number of files
' w* X9 [- J7 j. u
: V! G! |& c: l/ p! C% x
for each file {
( o, S5 w+ J$ s) t' ^
% z/ r/ L5 m8 e7 U6 Y
0xX path and filename
4 S) a# i0 k0 F* v
0x01 0x00
6 o" x! ^& E9 r8 L0 G; C
0x04 file length
) t$ Y/ v$ l7 n$ y
0x01 0x00
2 d% V/ u; @( c1 R2 S, Z+ N
}
# L) I* p, K# k- `
" B0 l. i; y8 K) |6 g9 p" f; X
--------------------------------------------------
2 S& Z! p. u5 h) ~3 J* k
2009.4.17 更新
0 r6 k4 }$ y6 z3 i
老外动作很快,通用解包器quickbms发布以后很快发布了静物2的解包脚本。
! H) }* l3 I+ N
用法如下
8 c H$ E$ T( x0 s( ~1 S
quickbms.exe stillife2.bms c:\Sl2data.dat c:\folder
# g* J. h2 T5 @; g2 G
' g6 J5 s) A) P- ~7 ^
--------------------------------------------------
5 f/ ~& y; `- A
2009.5.16 更新
1 K$ u6 s( J1 V5 `2 I
最近又有一些细小但是可能比较重要的发现。
1 g/ i* B6 n$ N
用filemon跟踪了一下发现这个游戏支持读取解包后的字体文件Sl2fnt.dat。
1 l. y. N3 l. l3 |1 J+ a
第2个发现可能很重要,我把Sl2fnt.dat改名后发现游戏竟然能正常运行,此时使用了一种奇怪的字体。此种字体和原来的字体明显不同,并且显示有些不正常。我怀疑是某种系统的TTF字体被强制用不正确的参数显示而导致的。如果真是这样的话,我们无疑看到了一丝汉化的曙光。
1 _& [/ z, f4 X9 [+ e0 e: F
弄清楚这谜一般的字体来源是接下去要研究的课题。
3 C# f" t; B: v* u# m1 B6 T
下面是此字体画面抓图。
0 w) U3 w# X$ I/ {6 n [1 U7 t u
[attach]13069[/attach]
. `- A) V* m" [# _& M8 N0 S3 z8 g
! v4 U% D& j3 x+ ]! c
--------------------------------------------------
% Q+ @; g: ^+ G s* Y2 e
2009.6.26 更新
* R! Z' t. z% \
经过老外的分析,把Sl2fnt.dat文件删除以后,游戏会自动寻找系统字体arial.tff。
" ? @4 b- \3 m ?
老外还放上了清晰的抓图。就是说我们目前已经可以把静物2转化为一个使用TTF字库的游戏,如果有办法HOOK显示函数的话,也许可以用比较简单的方法实现汉化。
7 F+ U: d" M$ l, h, F
放上抓图
1 S+ [) Q" G; q* S9 D
[attach]13482[/attach]
$ |1 x0 [/ i$ Y/ G- H
- W6 Y. P9 |. C" O. o
--------------------------------------------------
- w M5 t1 ^6 b+ r% \0 x
2009.6.27 更新
6 K0 H$ A$ Y7 O: Z* T$ q
我在另一台电脑上试验了一下,可以显示出正常的英文。
& L; u, L( p; D$ b( s% Q* ^
我用上面的异或工具解密了字幕文件Sl2data.dat,然后写入一个中文字,再用异或工具异或一次。发现只有这个字的低字节被显示出来,高字节被过滤了。
" F6 ?2 ^: P( @
我觉得分析到这里基本可以知道实现汉化的方法了,就是用OD分析一下,找到那个过滤点,使游戏一下子读取2个字节,这样游戏应该就能显示出中文。
; i6 f1 E9 q1 R) X/ a% b
肥牛如果有时间的话,希望能尝试一下。拜托了。
5 f9 U9 P4 Z2 \. s0 j5 O
需要修改的可能是xcEngine.dll这个文件。
. |' A% _7 l! {$ U2 r7 N8 c
" _, t1 T/ o9 W, s+ o s, c/ {
抓图如下,显示出来的是 汉 这个字的低字节部分
" A- L* H( v2 P6 A$ B% ]
[attach]13499[/attach]
+ y2 |" c- \+ l/ @ c8 w; m
( R E5 E. t3 a6 I+ u4 X4 e! [; y C6 e4 D
--------------------------------------------------
/ `7 ?, P" P; Q. |
2010.2.2 更新
6 i8 R$ E$ ?; K+ o' ]
我电脑上的静物2,在一开场2人打完电话以后,就会崩溃。
9 s# x/ W6 T0 Z
研究了一段时间,发现可能是我显卡较老,只有128M显存的缘故。
/ {# z7 C8 u& P) H% I
把option的Shadow Quality改为low以后,解决了上述的崩溃问题。
作者:
shane007
时间:
2009-4-4 07:00
2009.4.4 更新
作者:
shane007
时间:
2009-4-8 11:35
2009.4.8 更新
作者:
firendless
时间:
2009-4-15 20:07
又来异或...还是数组操作吧,没有用IDE...007老大检查咯
r3 p- m& k' f0 W7 p
那个提取的方法还是和之前那个riper一样就可以了吧
# o0 @) R( W. W" g6 J( N
Private Const cKey As String = "2923BE84E16CD6AE529049F1F1BBE9EB"
Private Sub cmdCommand1_Click()
Dim lngFileNum As Long, lngLength As Long, strFilePath As String, bData() As Byte
strFilePath = App.Path & "\\1.dat"
lngLength = FileLen(strFilePath)
lngFileNum = FreeFile
If lngFileNum = 0 Then Exit Sub
ReDim bData(lngLength)
Open strFilePath For Binary As #lngFileNum
Get #lngFileNum, 1, bData()
Close #lngFileNum
Dim lngIndex As Long, lngUbound As Long
lngUbound = UBound(bData())
Dim lngIndexB As Long, lngKey As Long
For lngIndexB = 1 To 32
lngKey = CHex2Dec(Mid$(cKey, lngIndexB, 1))
For lngIndex = 0 To lngUbound
bData(lngIndex) = bData(lngIndex) Xor lngKey
Next
Next
strFilePath = App.Path & "\\2.dat"
lngFileNum = FreeFile
Open strFilePath For Binary As #lngFileNum
Put #lngFileNum, 1, bData()
Close #lngFileNum
End
End Sub
Private Function CHex2Dec(strHex As String) As Long
Select Case strHex
Case "A": CHex2Dec = 10
Case "B": CHex2Dec = 11
Case "C": CHex2Dec = 12
Case "D": CHex2Dec = 13
Case "E": CHex2Dec = 14
Case "F": CHex2Dec = 15
Case Else: CHex2Dec = CLng(strHex)
End Select
End Function
复制代码
作者:
shane007
时间:
2009-4-15 20:15
你能上传exe和源码吗?
7 }; x* i2 \3 V9 B7 j/ n4 @" {
论坛有防拷贝,光贴代码非法用啊
作者:
firendless
时间:
2009-4-15 20:20
啊....我在记事本里打的....
: L' C* a R% b
' j/ Z5 W$ y2 O9 X% G- W
我给枫叶传过一个去防拷贝的插件...现在这台机器没有...我叫她mail你
作者:
慕容枫叶
时间:
2009-4-15 22:26
我复制了。。。
* b; V. z: a' ?9 `6 H+ x
其实在线转帖类型的也可以。
作者:
shane007
时间:
2009-4-17 22:52
2009.4.17 更新
作者:
田横
时间:
2009-4-18 01:22
vista下用解包器解包时会出现“程序停止工作”错误。
作者:
shane007
时间:
2009-4-18 08:03
我试过了,XP上没问题。
作者:
shane007
时间:
2009-5-16 11:02
2009.5.16 更新
作者:
shane007
时间:
2009-6-26 11:50
2009.6.26 更新
作者:
shane007
时间:
2009-6-27 16:57
2009.6.27 更新
作者:
肥牛
时间:
2009-6-27 19:06
这个难度很大,只能说试试,没有什么把握。先下载游戏,可能周二才会有进度汇报了。
作者:
shane007
时间:
2009-6-27 19:35
引用第13楼肥牛于2009-06-27 19:06发表的 :
5 o- Q9 o( v, ? p7 ~/ t2 ]
这个难度很大,只能说试试,没有什么把握。先下载游戏,可能周二才会有进度汇报了。
+ k/ T6 f4 v& \# j. ]1 O
的确难度很大,不过难度越大,一旦有突破成就感也越大。
% J, d+ g, V% W% a
要修改的地方也可能在EXE里,以下的几个函数比较可疑。
) m4 B! S f3 e# V# X) v( K
xcEngine.xccFrameText::AddText
/ c: W# n0 B# Z | O
xcEngine.xccFrameText::GetCharPosition
" k) C' B# I4 t" P0 L% V3 N4 N+ R
xcEngine.xccFrameText::GetDrawnCharCount
* E* N; V& ^. b! B$ G" P3 J- ]! W
xcEngine.xccFrameText::RemoveText
: _+ m3 g+ e4 D [/ `. G3 u& G
xcEngine.xccFrameText::SetTextString
% [8 _9 Q+ k1 B
& \0 C2 l0 X4 o9 f; ?+ |
你慢慢试试看吧。
作者:
肥牛
时间:
2009-7-1 18:40
今天上午游戏下载完成,初步试了一下,在我的电脑上连第一个字节都不显示,汉字部分完全不显示。
# s% m8 Q0 X/ h5 w# z$ f, V# r
反编译了xcEngine.dll文件,我判断在GetDrawnCharCount函数里应该处理一下,但是没有在相关的代码中发现有价值的东西。明天再继续看看吧,不过这个游戏是运行在DX9下面的,可能用OD调试比较困难,我现在用的是IDA直接反编译查看源代码的方式。
作者:
shane007
时间:
2009-7-1 21:36
用通用窗口化工具窗口化之后就可以用OD调试了。
# s: G; H8 ]3 @1 C- t
我觉得还是动态调试比较好。
& _2 P: d+ z6 I) {* ^2 t
汉字部分完全不显示?奇怪了,有抓图吗?
6 v2 |, g+ D) E. ]! A
是直接过滤了还是中间空了一块?
作者:
shane007
时间:
2009-8-14 23:58
把这个帖子顶上来。
2 K% Q' e0 \/ s9 ~, p- s6 T& N
希望某高手能够帮我们解决关键技术问题。
作者:
shane007
时间:
2010-2-2 23:09
2010.2.2 更新
作者:
虫尾巴
时间:
2010-2-2 23:19
期待2代技术的解决!
作者:
shane007
时间:
2010-9-14 22:49
顶上来备用
作者:
shane007
时间:
2010-9-18 21:46
再次顶上来
作者:
哲学人生
时间:
2011-11-5 13:04
[s:74]静物2还是没出汉化
作者:
applel
时间:
2011-12-2 21:45
都等两年了 唉 这么经典的游戏 喜欢的人怎么那么少[s:84]
作者:
leonliu12
时间:
2012-2-6 23:04
2012年了,顶起来,一直没玩静物2,就等汉化了,可惜也不能帮上什么忙。
作者:
rorozhy
时间:
2012-9-30 04:47
[s:89]顶上来,我是做电视包装的,就是logo演绎之类的,对三维软件什么都比较熟悉,主流的三维软件都很熟,如果说能汉化这款游戏的话,虽然平时很忙,但是我一定会帮忙的~!
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2