冒险解谜游戏中文网 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 编辑
4 F; i( q7 |% ~- y( S7 Z
& x. Y* y! F' t% ~
我用代理dll的方式,让这个游戏窗口化了。
; F* d9 _: e, w$ {, @
随后用cheat engine(用其他工具老是出异常,无法正常调试)在内存中检索一句字幕,下内存方位断点。
; ]7 M) E4 n. E, n# {6 c0 r
在以下地方断下。
% r7 o$ O, ]- A0 S* E+ O
( w+ o7 B6 S' z4 {7 M5 N" H% {
CaptainMorgane.exe+96F5 - 83 C0 01 - add eax,01
/ D" G6 S1 G7 z6 D$ k
地址004096F5
复制代码
3 F& H- J* G3 U2 \; r
& U- L, y w- I
随后,在ida pro中查看伪代码,感觉这是一个字符串长度的check函数,
4 S+ S/ k& e; f3 q' s" u
真正的字幕显示函数需要追到上一层,后续再继续分析
t5 d4 a0 z; \9 B6 T2 Q
5 t0 [! i3 I% [9 G' l
0 r# U+ a, D) Q1 P
void __usercall sub_409670(char a1@<dil>, const char *a2@<esi>)
. g5 h L g( \) ]! D% t
{
0 N& G" i/ H5 B8 a
_DWORD *v2; // eax
+ i, i0 s# I/ N$ R5 V1 O1 i: S. B
) r+ P1 y$ h6 j2 h8 G
if ( !dword_5D9B50 )
; x9 Y- e: ?* @* e4 P
{
9 Y- j' H5 f) G; l& I e2 B; h, Z& t
if ( !a2 )
. n( Q1 l' ~/ l0 g$ Z
goto LABEL_7;
) y/ k' l$ q) u9 |8 |; k1 x6 b
if ( strlen(a2) >= 0x80 )
% M7 c+ H7 I- e8 l: K$ R
{
/ D8 N% c/ N# L
sub_51AEC6("ASSERT\n", a1);
3 {2 I2 k) E1 F6 P8 o5 \( o- `+ ^
sub_51AEC6("file: %s(%d)\n", (unsigned int)"..\\..\\Source\\Dialogs\\Common\\DialogInterface.cpp");
B8 V, U o6 R
sub_51AEC6("function: %s\n", (unsigned int)"DialogInterface::SetCaptionDisplayed");
( h* l# ~8 E/ t4 D# B
sub_51AEC6("condition: %s\n", (unsigned int)"sCaption==NULL || strlen(sCaption)< NB_CHAR_MAX");
0 |# F5 V& }3 O% R _! g
}
' T- `( `& u O9 ~1 d) c/ b$ c
}
* B* H/ M& g& X+ F& I
if ( a2 )
' U* Z% f' x. a
{
: R* z: Y4 Z d r' n2 Z0 f
strcpy((char *)&unk_5D3370, a2);
( J3 d6 e2 J& j% j) \
v2 = (_DWORD *)dword_5D3E6C;
) |" U+ M5 K1 A$ @) }
byte_5D33F0 = 1;
8 d% [$ d- E7 [3 p) M1 m% T
*(_BYTE *)(dword_5D3E6C + 4) = 1;
' C8 e! U- B" W: q1 }
v2[2] = 0;
2 J4 {* _! p! u6 y. Z
v2[4] = 0x100000;
6 D& _" d# ^. q+ k* w3 j
v2[3] = 0;
I5 v& Q- L* R" |9 v# a
v2[5] = 786432;
) y) b5 G4 t1 c6 C) K4 _
return;
6 a) C$ o1 |4 X& C5 T
}
/ }$ \6 C5 n+ h- I* }; f- L* @" }
LABEL_7:
4 ?' F5 v5 m% j6 V
byte_5D33F0 = 0;
, X0 M' I1 W. B, h
}
复制代码
.text:004096EB ; ---------------------------------------------------------------------------
; G2 h8 P! X. w
.text:004096ED align 10h
0 Y5 R; W1 r- k5 N' S8 b; X
.text:004096F0
! {( X: {/ P6 e7 F3 Y \9 n
.text:004096F0 loc_4096F0: ; CODE XREF: sub_409670+7B↑j
/ R+ ]$ l/ f. }0 h4 P) K
.text:004096F0 ; sub_409670+8A↓j
& I9 u. g& j5 Z; j. C8 G
.text:004096F0 mov cl, [eax]
2 X* o% y! R# H) T1 v
.text:004096F2 mov [edx+eax], cl
1 {6 u; K8 G0 s5 K- `
.text:004096F5 add eax, 1
; Q# f( V) j3 c- Y- K. X6 p9 l
.text:004096F8 test cl, cl
& r" p; [" n0 K
.text:004096FA jnz short loc_4096F0
; M& }' D- t1 H0 R0 {" I3 c' }
.text:004096FC mov eax, dword_5D3E6C
, V! }, n; h1 K9 u3 h3 _* G' M
.text:00409701 mov byte_5D33F0, 1
- e' H2 a% H- l) N/ }
.text:00409708 mov byte ptr [eax+4], 1
: I' B' \$ I# W3 G1 ]
.text:0040970C mov dword ptr [eax+8], 0
/ k8 h) `1 Q# e! B6 r. p8 ^$ Z
.text:00409713 mov dword ptr [eax+10h], 100000h
3 J- @+ u( |- h$ ]% }. Z
.text:0040971A mov dword ptr [eax+0Ch], 0
* f6 {4 B; Z/ g; b/ D
.text:00409721 mov dword ptr [eax+14h], 0C0000h
9 N0 \! v: Q) c% l) n8 j
.text:00409728 retn
9 E' O t/ ^. f2 w/ T' j2 Q3 J6 g
.text:00409729 ; ---------------------------------------------------------------------------
复制代码
$ s7 E6 M% l% ]5 b5 w# n& Z
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2