冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】疯人院(汉化分析)(发现字符串显示函数) [打印本页]

作者: shane007    时间: 2009-1-11 15:45
标题: 【汉化资料】疯人院(汉化分析)(发现字符串显示函数)
最近想对疯人院这个游戏进行一些汉化分析。希望能想办法解决这个大家盼望已久的游戏的汉化问猓由于本人对汇编的经验尚浅,不太可能在短时间内解决,不过会不断更新阶段性的成果? 9 e: d' ^' H' |2 j# w* U

$ c& B9 z+ _% S! K. w下面说一下发现字符串显示函数的过程: 9 [( R. y0 H3 H$ X
首先在通用游戏窗口化工具中加入这个游戏的主文件,然后运行游戏,游戏正常运行。
" ]: U- t. I' ]  X& D% L% O* X退出游戏,用OD载入以后,游戏也可以正常运行。
2 I+ y# ]! G9 k% M, E我找了一个比较简单的字符串,比如,New Game,用OD在内存中寻找,很容易就找到了。
- ^3 R+ A0 a% V9 J" K8 P在这个字符串上下内存断点。然后把鼠标放到New Game按钮上,游戏被断下,仔细一看,New Game这个字符串就躺在寄存器ESI里,断下的地方就是字符串显示函数。 % S9 c) H5 ], n+ a, o

* z6 m" j" l/ M; W; A2 W9 q* |% \字符串显示函数如下:
. I4 S$ `* Y; `004357C0 /$ 56 push esi ; 字符串显示函数 ( [4 [. ^5 v/ t' J& L
004357C1 |. 8B7424 08 mov esi, dword ptr [esp+8]
6 s7 a$ ^5 M+ V& p4 O. v0 I004357C5 |. 57 push edi 8 |' C: A3 m4 ^+ f
004357C6 |. 33FF xor edi, edi 2 T2 ^' J* g5 r! p! F( v% y8 }; G
004357C8 |. 85F6 test esi, esi & J8 I/ U# Q$ Q0 o4 T
004357CA |. 74 3E je short 0043580A
7 S' {: b. c8 [( T9 C004357CC |. 8A06 mov al, byte ptr [esi] ------〉在这一行被断下
5 Y; y9 N4 U/ F/ _. E+ j! b( c
004357CE |. 84C0 test al, al
, |$ K+ ?) q& j  z004357D0 |. 74 38 je short 0043580A
. J4 Q5 P# W/ s" F$ c1 x004357D2 |> 25 FF000000 /and eax, 0FF # p' C( |: o7 g' `! s
004357D7 |. 50 |push eax * K; V6 ^9 F5 w
004357D8 |. A1 88764500 |mov eax, dword ptr [457688] ; W" l8 O; [0 }
004357DD |. 50 |push eax 1 M( z) j) y6 Q
004357DE |. E8 3DD0FFFF |call 00432820 ; 4 j  L; h& L8 L
004357E3 |. 33C9 |xor ecx, ecx
* k$ v8 S0 f5 W# f004357E5 |. 33D2 |xor edx, edx
5 _$ _% E6 e; m! R9 o004357E7 |. 66:8B48 08 |mov cx, word ptr [eax+8]
: O$ B2 \8 h0 e* D9 w% o004357EB |. 66:8B50 0E |mov dx, word ptr [eax+E] $ b1 O/ f* g8 `- c! P! ]' C* F
004357EF |. A1 80914500 |mov eax, dword ptr [459180]
' T$ F; B' m2 }1 P- }  K$ ?004357F4 |. 03CA |add ecx, edx 0 q( t# }+ O! F8 k5 Y) W1 {
004357F6 |. 25 FF000000 |and eax, 0FF
+ A) M& Q* f& f" |7 [004357FB |. 83C4 08 |add esp, 8
) ^- C" P% J! H* v! z004357FE |. 2BC8 |sub ecx, eax
7 o; m. X4 G" a+ V) G00435800 |. 8A46 01 |mov al, byte ptr [esi+1] 1 K* j- o8 |$ L
00435803 |. 03F9 |add edi, ecx
. E& i$ O! o4 E0 {00435805 |. 46 |inc esi                                      指向下一个字符 0 ~  }+ e* c0 T% E
00435806 |. 84C0 |test al, al
0 a" s. P: I- [, I00435808 |.^ 75 C8 \jnz short 004357D2      
循环
2 b  ~: o6 z2 b
0043580A |> 8BC7 mov eax, edi
0 S+ A5 b, }7 o/ h* W3 o0043580C |. 5F pop edi
# Q$ g2 M: x# w4 x0043580D |. 5E pop esi
% i. h+ a8 I1 g' H/ u' B0043580E \. C3 retn

6 v8 M; ]0 F# ^4 ^8 J6 G6 B7 q* {& n) p+ L, E
-------------------------------------------------------------------- 5 j1 c. Q5 O. W
2009.1.11 第一次更新 ' W8 |6 ]' ]" O2 u; o
这个游戏的文本在Data\RES.000文件里,老外早就开发好了文本编辑器。 * U8 \) L. [9 d) `' p* Q. U- F
最大的问题是字库问题,游戏中使用的是一种自定义的图片格式字库,还不是点阵的。
, ~! V2 N1 y6 T& Z4 b# g+ m7 ~要自己追加中文图片格式字库几乎不可能。 ; ?1 b. @% V/ i/ Z% l& C7 M2 D
所以要汉化这个游戏的唯一方法就是显示函数的移花接木法了。研究中。
作者: shane007    时间: 2009-1-11 23:14
不知道habit是怎么改的,是不是在这个显示函数处进行跳转的?
# h4 }: N" `" c% B% q. g7 d# X我觉得只要改对地方就能解决这个游戏的汉化问题了.
作者: habit    时间: 2009-1-12 11:02
回头找到了放上来
作者: habit    时间: 2009-1-13 13:08
没找到可用的了, 看看附件有没帮助吧.
作者: shane007    时间: 2009-1-13 21:37
引用第3楼habit于2009-01-13 13:08发表的  :
0 \7 V& R2 _0 M8 A6 `没找到可用的了, 看看附件有没帮助吧.
/ a; M4 Y. L7 ]/ z% d# W* `9 V
谢谢了,能说说你的思路吗?; E$ a0 M; V" f7 Q& X* F: ]" V
可能是装了新的DirectX,疯人院暂时没法启动了。
; N0 r5 P- S0 }2 p6 A% e; Q- HDLL是在exe里调用还是把DLL的汇编代码插到exe里?; _! a+ W+ P  ~: `6 x) D- f
知不知道字幕坐标放在哪里?你的程序能把字显示在原来的地方吗?
作者: habit    时间: 2009-1-14 11:53
是显示在原来的地方,能显示汉字时只改了主程序,没加那个DLL,可能附件中有一个是。
0 D1 J; S- U5 u+ ?5 jDLL是后加的想改闪烁问题,好象需要DrectX5.0,找不到,也没完成。
/ Y* v: M/ G$ C" P我的游戏可能也是DX的原因也运行不了了。
作者: habit    时间: 2009-1-14 13:17
坐标应该在这两个地址:
( F* Q3 S$ }$ [6 ~" g. R! i8 ~* g+ D459148 45914a X Y
作者: 幽魂    时间: 2009-1-14 19:57
我找到一个DX5 SDK的下载地址:" @9 p6 A' z+ K# A  [3 [  H
http://www.xs4all.nl/~m2mxs/dx5sdk.zip; h8 s8 G% J0 B, N& ~. s

9 U. z; C1 h  Z7 N加油啊二位!
作者: shane007    时间: 2009-1-14 21:12
引用第7楼幽魂于2009-01-14 19:57发表的 : 5 ?1 Y6 v- P6 M
我找到一个DX5 SDK的下载地址:
2 i) u; x( w- c: x, N! b, b- J5 c# }http://www.xs4all.nl/~m2mxs/dx5sdk.zip 9 d& w7 w% o) e( u4 j) T& ~3 N- V

0 C7 a3 j* S" H9 ~4 z加油啊二位!

7 ^6 s: \. O8 C# ~5 f% s$ R( Y. h4 c" E. D1 t
谢谢了




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