冒险解谜游戏中文网 ChinaAVG
标题:
【Directx9游戏汉化 #7】莫嘉娜船长与金海龟(Captain Morgane and the Golden Turt...
[打印本页]
作者:
shane007
时间:
2023-8-26 16:09
标题:
【Directx9游戏汉化 #7】莫嘉娜船长与金海龟(Captain Morgane and the Golden Turt...
本帖最后由 shane007 于 2023-8-26 16:14 编辑
+ d/ ^! j7 w# ~, z
) s9 G& r/ Y9 ?2 c
我用代理dll的方式,让这个游戏窗口化了。
+ r; y8 x3 a/ i7 |# @
随后用cheat engine(用其他工具老是出异常,无法正常调试)在内存中检索一句字幕,下内存方位断点。
% z& c- L! ]7 K4 U/ R
在以下地方断下。
8 n3 U& [" i! x" z
5 V$ a( E6 P* H- r, `
CaptainMorgane.exe+96F5 - 83 C0 01 - add eax,01
, e9 I4 D1 z4 F+ `7 N9 |" j
地址004096F5
复制代码
& C1 V! w4 w1 z9 A/ d5 B: k
/ T: `+ a% e, m# V+ ^
随后,在ida pro中查看伪代码,感觉这是一个字符串长度的check函数,
/ b4 D" Q* v5 X x+ U7 Y
真正的字幕显示函数需要追到上一层,后续再继续分析
* y7 C" \" }0 s2 ^" c* w
, F, N. ~& l |* V- U. r
* h+ l9 @# M4 C0 e
void __usercall sub_409670(char a1@<dil>, const char *a2@<esi>)
. T p l: E3 F# n! o5 R
{
! P# G, x1 h' k: D0 d+ L$ R
_DWORD *v2; // eax
( t" Z# g& Q% `/ |5 j: L
2 E7 D- J5 u% l' e. [# \2 o
if ( !dword_5D9B50 )
* b: f$ i; V4 w9 Y i9 L- C$ M+ i
{
6 {8 Q2 l- d c! \0 Z1 T
if ( !a2 )
D1 {$ i y$ H* T
goto LABEL_7;
) R+ Y& `, H1 v; O4 w0 r9 W
if ( strlen(a2) >= 0x80 )
& j. Q1 R$ q8 ?; n4 _$ U
{
" e: t0 {6 V: z1 Z: o( s
sub_51AEC6("ASSERT\n", a1);
) Z/ }# V& f5 [7 x0 x
sub_51AEC6("file: %s(%d)\n", (unsigned int)"..\\..\\Source\\Dialogs\\Common\\DialogInterface.cpp");
5 P1 H" k% D8 _4 S
sub_51AEC6("function: %s\n", (unsigned int)"DialogInterface::SetCaptionDisplayed");
; f) e) ]# R% `! G3 g; ^! D/ ^
sub_51AEC6("condition: %s\n", (unsigned int)"sCaption==NULL || strlen(sCaption)< NB_CHAR_MAX");
% v' v. ]8 H% ]) h! Q
}
8 p( o: Q1 S' _7 m {6 G
}
' o+ J9 Z' p, s7 o: S. O
if ( a2 )
, Q- q0 _6 U# I: N6 m( A3 k
{
' V' R4 W/ c" k) L# w, A( j
strcpy((char *)&unk_5D3370, a2);
. }- H" l- C7 o- c4 @; e% d5 a6 D
v2 = (_DWORD *)dword_5D3E6C;
5 r4 H3 v. x9 x; B
byte_5D33F0 = 1;
" R& r) c, a) y, `7 ?1 X
*(_BYTE *)(dword_5D3E6C + 4) = 1;
5 j+ e0 U& i/ U/ Y1 C
v2[2] = 0;
2 A, v& m- T/ [- W3 }
v2[4] = 0x100000;
! q* I! M' c. z5 W" I- k3 O! j" Y
v2[3] = 0;
3 ?' g6 E4 h: c Q% i2 c6 a
v2[5] = 786432;
, R/ A3 V& A# O s' {5 D! U8 n0 d# ]
return;
1 E: O2 ~% k+ r& n( A
}
0 u! |, ^; Z1 ^0 R
LABEL_7:
& v) V% F: R2 h1 I8 u
byte_5D33F0 = 0;
- F2 B1 `( k- a& _7 U
}
复制代码
.text:004096EB ; ---------------------------------------------------------------------------
6 u7 J; R z- i* I
.text:004096ED align 10h
# s' O, p1 J0 E. Q6 U% \1 v
.text:004096F0
B. u7 a; U- \4 p ^$ N
.text:004096F0 loc_4096F0: ; CODE XREF: sub_409670+7B↑j
0 u& ]# ^$ Z: J
.text:004096F0 ; sub_409670+8A↓j
; y4 M. T" M) R$ d
.text:004096F0 mov cl, [eax]
+ a, { {: y5 J: ^7 a
.text:004096F2 mov [edx+eax], cl
, T$ ^) j% r! C) q8 S- a
.text:004096F5 add eax, 1
( r4 z! G& M' i* B, x
.text:004096F8 test cl, cl
4 n5 }, g! X8 k( U& `: K" v
.text:004096FA jnz short loc_4096F0
# c' I9 L" q* U# h, k$ \6 x
.text:004096FC mov eax, dword_5D3E6C
5 V* @3 ~% C z0 B w
.text:00409701 mov byte_5D33F0, 1
; k! Y9 z" [: I$ d5 ?
.text:00409708 mov byte ptr [eax+4], 1
; E2 X i/ K( z6 x# Y& F1 q
.text:0040970C mov dword ptr [eax+8], 0
7 e/ B. R0 D+ g+ X" A) k Q8 t
.text:00409713 mov dword ptr [eax+10h], 100000h
! K/ v9 w& @9 p5 \. J3 l
.text:0040971A mov dword ptr [eax+0Ch], 0
* C" z- O6 a9 f
.text:00409721 mov dword ptr [eax+14h], 0C0000h
6 v4 J. W7 B4 p* Y6 I
.text:00409728 retn
( c/ [. \+ c, q+ P2 ]
.text:00409729 ; ---------------------------------------------------------------------------
复制代码
6 p7 I$ G, D2 W( K1 V$ h, V
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2