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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑
( ^# k. M& N& l1 p/ a) p1 o
6 s  `' W+ ~( W) N" g( C这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。6 Z9 }" M, l& u' `6 T

8 f' j9 x- S) h1 `dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
, N* _; i( ^/ u随后下断点。在以下地方断下。
/ Z4 j& x6 g$ {! ^' L' H- O+ H2 I4 J
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd
    2 r( `7 q% o8 O5 i/ G
  2. 004CE883
复制代码

9 I" x7 Y* m$ m  r
! w; D+ ~# X+ j3 |用ida pro查看之后,发现是个底层方法。3 G- ^3 M9 k9 P$ E) [: i6 E% C, h7 d# b
真的显示函数应该是调用它的上层方法。
- K' a" U: S1 A. n5 o
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)
    : B- _; n" v2 G3 u
复制代码

- v; N1 d1 o# Q/ b$ `; e, E( A- y6 s7 G& k9 j6 ]
这个方法看着蛮像的,也许就是它,待日后修改代码测试5 O! O: ~0 W, j; [
/ L2 z; c+ e% N9 }

  1. ' Q7 D* Q# W. ~" o
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)2 D# a; o8 m( B# f
  3. {
    5 `& u3 m% I( G, _' c
  4.   unsigned int v4; // edi. ]9 U7 m/ z3 ?  A# U$ o6 {
  5.   char *v5; // esi4 r/ }: q, v: ^' l5 j, W; Z
  6.   void *v6; // eax4 c* m0 \( N& t& V+ S6 e/ U

  7. / v  U+ h  l) O4 a/ P" g' p, D
  8.   if ( !a3 )8 K5 \( H4 L/ x, Y' L, N) x- D0 g; y
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    ' O* L: I, y+ }5 G! c: S4 v+ V9 N6 V
  10.   if ( !a2 )
    4 `. b) ?/ s1 N* l/ G, f5 x: j
  11.     unknown_libname_180(-2147024809);
    % K8 H; V1 J# e7 ], H% d" M6 P
  12.   v4 = *(_DWORD *)(*this - 12);
    : }. q9 x* q* v$ M- Y7 X( ^$ q
  13.   v5 = (char *)a2 - *this;
    - k: j$ G& {( X1 H% d& V& K
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);: O' Y# O4 D3 O% ~/ l9 R; f5 L
  15.   if ( (unsigned int)v5 > v4 )  v  I9 B9 Z4 p  B3 r$ B1 `
  16.     memcpy_0(v6, a2, a3);
    0 |2 s1 t9 C: L
  17.   else, m3 W4 z  p+ u, _! _2 ^3 _
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    2 V; V% j0 U& z; [/ ~0 x( O  Q
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);' N' Z; d) s- q& _% u
  20. }
    3 e0 b. N3 ~0 r  E* l9 D
复制代码

. ~2 c" ^" t# }9 U% L/ y7 F/ Q
+ z- W, J# |2 B) d& w- e9 K' f% j1 ]; c( V6 n- c) F, o* `. n
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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