冒险解谜游戏中文网 ChinaAVG
标题:
【Opengl游戏汉化 #2】 间谍活动:冬日行动(Undercover: Operation Wintersun)字...
[打印本页]
作者:
shane007
时间:
2023-8-26 18:24
标题:
【Opengl游戏汉化 #2】 间谍活动:冬日行动(Undercover: Operation Wintersun)字...
本帖最后由 shane007 于 2023-8-27 10:49 编辑
( J! R0 l# s3 P7 _6 h3 z0 c
: ^% H1 {; E0 m- x* b
这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
7 Q( P6 t8 A6 u- B! f1 q2 z% p
1 A( a2 H4 ~$ _% ^" h
dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
+ l/ i' K. t3 W- m0 F0 l; ?( d
随后下断点。在以下地方断下。
5 S' k2 a2 g4 n- O+ n$ c
$ S0 {! Z9 T" F; M$ Z/ y
Operation Wintersonne.exe+CE883 - F3 A5 - repe movsd
$ d1 b6 ~5 ]3 Z( `) m/ U% ^
004CE883
复制代码
% n- ^; U5 M" J. F t6 w/ r
- F/ [; r; W- p0 P; ?- u/ u6 K8 W. ]
用ida pro查看之后,发现是个底层方法。
6 Z* l: l4 Z. |) p" K" X$ P
真的显示函数应该是调用它的上层方法。
( n9 f+ W, z( x# J* R0 E8 R6 W& ^
void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)
! t5 V; J5 L2 I. t1 T6 Y' W
复制代码
! c8 ^* p$ z. d' o+ B) K
& I4 e4 s( D" W2 l% ?- A
这个方法看着蛮像的,也许就是它,待日后修改代码测试
; F7 Z9 P+ s6 Y. X3 A/ n" T
8 N- L |2 o/ h% m6 g1 j \" U
) K* Z) [$ a* h9 m- ?7 M( m" n& C
int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
# m; m9 W! B* a, G( O. d
{
7 a: ^! D1 A$ n, ~! j
unsigned int v4; // edi
4 r9 O( l* Y. @2 d1 a$ m" e& } S' f
char *v5; // esi
% v# k0 o+ P9 {8 o8 `* X8 w8 ^
void *v6; // eax
4 C( k9 m) s0 y ]6 D
9 P" K" c r- o7 b3 Y1 q
if ( !a3 )
1 D: x0 p0 ?( ?+ }' Z5 ~* A
return ATL::CSimpleStringT<char,0>::Empty();
$ m6 v, [/ ^9 ]7 R6 }! }! j7 }
if ( !a2 )
1 z }: |: N2 X t# j4 r
unknown_libname_180(-2147024809);
8 y; t1 O) c2 p2 R X4 m6 u2 `
v4 = *(_DWORD *)(*this - 12);
" B+ Y5 ]. C; W% I( I6 Z
v5 = (char *)a2 - *this;
. j& ~" w. Z3 Q" b
v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);
% I7 T, U& p6 h) q0 e: ~
if ( (unsigned int)v5 > v4 )
) ]$ b/ e+ a% g2 O
memcpy_0(v6, a2, a3);
0 s2 |( M+ j" s8 v9 Y5 X0 Q
else
/ B5 p3 \5 Q& e7 U/ |) h! D6 \* N
memcpy(v6, &v5[(_DWORD)v6], a3);
( _- `/ b8 [8 h2 l
return ATL::CSimpleStringT<char,0>::SetLength(a3);
, K' O! N2 n" {6 z+ d0 W9 \
}
7 g' y9 d& c9 O. Y N
复制代码
5 ]! O( ]/ S/ \$ `7 q3 q/ _
: G: x# S$ V/ S0 ]% }
6 g! Z. ?" F! {# W
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2