设为首页收藏本站官方微博

建议 【Opengl游戏汉化 #2】 间谍活动:冬日行动(Undercover: Operation Wintersun)字...

[复制链接]
查看: 459|回复: 0
打印 上一主题 下一主题

[建议] 【Opengl游戏汉化 #2】 间谍活动:冬日行动(Undercover: Operation Wintersun)字...

跳转到指定楼层
楼主
发表于 2023-8-26 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【Opengl游戏汉化 #2】 间谍活动:冬日行动(Undercover: Operation Wintersun)字...

本帖最后由 shane007 于 2023-8-27 10:49 编辑
* l. `6 y! n% T+ f, ?
, _7 c( K1 c# H; I/ n  q这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。! y% B, B: ]  n2 m2 h8 i

3 i0 P9 B4 A& g8 fdxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
. T$ Z1 Y7 N- N4 R9 ?随后下断点。在以下地方断下。, T8 ~: \7 v, X$ U7 W

. T& ]+ x& _! \; y
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd ! a+ k% Z) S$ q) n
  2. 004CE883
复制代码
0 {4 Y6 I) ~) w" s! T" r
  `2 Z% C. y, [5 L! b/ C
用ida pro查看之后,发现是个底层方法。+ O( z; x3 a: H! D! ^' U. p5 ^. r
真的显示函数应该是调用它的上层方法。
' I, b) D3 S) u2 i: w" L. J
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)' A  a/ J2 E( D9 [) X
复制代码

% Q' B4 |( J5 l9 E8 w1 ^  h$ f$ J* Q% ~# W
这个方法看着蛮像的,也许就是它,待日后修改代码测试
4 O6 `9 e& a8 n; ?! _* _9 n" S* v# w) o9 d4 k" s. ]+ Z

  1. 6 I  H9 c9 h" o4 r. M
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
      K6 O8 v/ t; K* P3 I3 x0 L
  3. {2 g9 u$ p7 t, t2 i1 P# o! e; I0 }5 g
  4.   unsigned int v4; // edi" D! C# ?# G7 {3 e+ S
  5.   char *v5; // esi
    / `! x( D! w0 S8 @& M6 ~, T5 S
  6.   void *v6; // eax# d. O6 D& v5 m. [: D: i! t, [* G" f* G

  7. " W) O0 V' b3 x5 P
  8.   if ( !a3 )3 e) n2 g/ W  a. V$ R9 ^
  9.     return ATL::CSimpleStringT<char,0>::Empty();- P. i  c: Z# |: U. h
  10.   if ( !a2 )
    / h0 f' i/ Q8 W! ~& C' D7 V8 i  A
  11.     unknown_libname_180(-2147024809);: g3 F! u6 _5 E% t; k$ ^, q
  12.   v4 = *(_DWORD *)(*this - 12);+ ]( h! @, J; O2 @# J# ?" ?
  13.   v5 = (char *)a2 - *this;
    ) w7 Q/ ]: G% }
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);! g1 C# R4 t7 P. D& k( A; A
  15.   if ( (unsigned int)v5 > v4 )  \9 a1 k. P- ~0 O+ ?
  16.     memcpy_0(v6, a2, a3);
    - d2 w% i  j$ \. Z/ Y
  17.   else
    ( Q# K/ g' c& ], q
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);% G7 z1 F6 R+ c; T: ]/ X
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);
    / P$ _- G4 y; F6 E/ B
  20. }
    1 P6 u, Y' q& n& @; X2 L" U
复制代码

% E: i& H  k. W/ F
6 }" x  M1 f* Z
( T6 G( D8 h! W9 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表