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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑
# |4 r$ G' v$ A+ R' a  K! m
8 ~9 o/ k) ]) j这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
, s+ V/ c, y- z9 Y$ j. B3 M. f$ j8 j& V& q, K  n
dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
3 G) w) ]% c: o: z* {! k+ p/ m随后下断点。在以下地方断下。! O, X: O5 Q9 u
; ?. w2 \6 C# t7 s' f* C
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd
    0 J. ~9 @- J$ s) ^- [* f
  2. 004CE883
复制代码

9 a6 O- L8 Z! W: H' w1 H* o, e% j( W6 a+ W1 M
用ida pro查看之后,发现是个底层方法。
2 K) x. @+ Q; [. t7 q真的显示函数应该是调用它的上层方法。$ B) o$ G7 ^$ D& x' D7 v
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)
    / o; x2 f- g# H) K
复制代码
9 ?! U$ x4 A9 I

0 |3 ^2 S+ P6 b7 U2 m4 ^这个方法看着蛮像的,也许就是它,待日后修改代码测试
8 r  I/ `) n& `) }! |% _( q  D; d8 }
  1. : s3 B2 C' A) D# E; C
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    ( a. i3 n& t" G  ~, n$ R
  3. {1 J. J+ x' O, {' }) Y
  4.   unsigned int v4; // edi
    + ~# P: W$ j* o# C7 I
  5.   char *v5; // esi& N1 m1 e+ i5 r' g" `& X9 R$ J6 b8 a1 G
  6.   void *v6; // eax
    0 d% {6 e, ]+ S+ @2 i
  7. 7 a- y! h; M( j% e7 ~
  8.   if ( !a3 )2 e4 l8 \( y: F, l8 C& x! n; L/ ]
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    7 t# G3 I8 d' A" h4 n- p5 h' [# h7 y$ v
  10.   if ( !a2 )
    3 Y( D$ L% D+ Y$ h' P3 N/ k
  11.     unknown_libname_180(-2147024809);( L8 b/ `3 k9 m% s1 z( R) l1 y
  12.   v4 = *(_DWORD *)(*this - 12);' T( U( `. k( T3 m, c) w
  13.   v5 = (char *)a2 - *this;$ s; k2 L- E5 n5 {; w  V1 _$ \; W, }
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);- s( h- k/ `* A5 Q" n2 }
  15.   if ( (unsigned int)v5 > v4 ), q1 U- M, K1 I+ z. K" h7 |
  16.     memcpy_0(v6, a2, a3);3 i: e0 T$ J/ ~# h  _
  17.   else
    & Y: V% B# S) `9 D" {; X" y8 l  M
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    * l9 M( `8 |' A. L
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);$ g4 t& i8 i: Q! a$ V1 f3 {
  20. }
    . j" G- c7 U0 |7 B
复制代码

/ a  C: ^7 T1 a2 T% F8 m) ?8 m6 G4 X. {% w

( @8 `1 d3 K% e0 K+ O1 G! J
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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