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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑 ' R* ^1 |* P7 y( ~$ }' V5 V

8 v2 F4 A  d) h2 ?# ]4 o这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
4 ]8 P* }" N$ o. j" q: K# O0 m) o/ P" E# ]; @" t( W7 O2 M' y
dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),6 B2 Q: D* Z7 V9 S; Q4 H
随后下断点。在以下地方断下。
$ B3 P# P- G0 ~5 R: I- s/ Z
0 M9 |' p  I* C( f6 @3 l6 U
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd   b/ R# n5 I; I2 W
  2. 004CE883
复制代码
1 W+ K4 C! B) A
2 N7 v: {# B& C$ `. O4 k
用ida pro查看之后,发现是个底层方法。: D5 u! z- Y- y$ I  j8 q% p
真的显示函数应该是调用它的上层方法。
, k# S" y: b7 b0 k- L. T' K
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)
    # A) {+ h4 W. S; _% r( _4 ]& g3 e( t
复制代码

! @5 o/ E6 d) c+ N
  k/ n- W8 E% z这个方法看着蛮像的,也许就是它,待日后修改代码测试- B1 G7 b9 ], U3 v' K0 h

/ {7 {' y$ Q  {" p
  1. . X5 T# F! ~8 b" F0 N6 |
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    6 h, S6 k9 f+ `- N  s% k" e& O8 |4 Z
  3. {1 C! D4 d- {% M' }- ^: n, m
  4.   unsigned int v4; // edi1 Q$ O+ \. X. D( Q- \! r4 s( U
  5.   char *v5; // esi4 `3 w; u: m; y4 O: w+ x
  6.   void *v6; // eax
    ) X  q0 z0 x( z1 L% \
  7. % r" P3 Y6 R2 V3 q7 Q8 q( d( Z) t
  8.   if ( !a3 )
    * N" i6 o8 M+ j% [" k3 v
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    6 O5 @+ Q* ^: _5 _
  10.   if ( !a2 )  l2 K% j4 F! N- q; X
  11.     unknown_libname_180(-2147024809);
    ! V4 v% b; S- B8 n: t, a. F+ N
  12.   v4 = *(_DWORD *)(*this - 12);9 I! n4 Y/ }/ J# p
  13.   v5 = (char *)a2 - *this;4 @: g. y1 a9 q' E& O* r2 G
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);5 x; k7 o* Z$ f0 j' d  @9 J
  15.   if ( (unsigned int)v5 > v4 )5 Q$ F/ O% o6 `, ^* P: W
  16.     memcpy_0(v6, a2, a3);& b! |1 A% h, k
  17.   else% s% A2 M' Z6 Z' M" f
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    + M! N' E# q+ X" n* ?$ O& m" s: b' g
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);
    . Y: H* g2 n7 H1 Y5 Z& C# W" n# ]
  20. }  N! d/ z7 r* E+ e
复制代码

: V3 i) t9 n4 P; t8 ~" r! h8 [& ]7 |9 X
2 |' [9 I( Y8 U8 B& A
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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