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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑
0 i( f) `& B6 Z! i1 g6 |
' r9 U3 }* W2 t$ d4 i这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
1 i4 c% q/ v% L) H" a6 z) H& l3 b6 |  t1 H2 j7 P0 q
dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
5 W9 ?+ Y  C7 m( n随后下断点。在以下地方断下。
. s) C8 n: L: W/ f9 n* ^  Q6 S
/ V3 F; e/ y; E: s' d0 ]2 Y
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd 1 i. P# c3 ?' ?
  2. 004CE883
复制代码

* S' N' L/ }& [8 I6 z4 p: m  J5 K0 P. v& u1 B
用ida pro查看之后,发现是个底层方法。
# \6 Z' O  G8 W( t9 w( Z' N真的显示函数应该是调用它的上层方法。
) h: z* F7 M& n: K, K
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)0 k9 G, ~8 h4 m0 v4 u  N  D
复制代码

- w8 w4 O! K9 u
$ }, P. @) M& h4 j这个方法看着蛮像的,也许就是它,待日后修改代码测试6 u) o$ \+ f7 F5 z

0 n8 G7 d9 B! h5 z
  1. 3 K7 C; A6 l" [" i
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    % |0 p% X/ D/ c5 l$ G2 b- ]
  3. {
    " o, V3 i0 ^0 a  W5 N: G. P7 S- y
  4.   unsigned int v4; // edi" i3 M! y/ y# N( z8 V7 R
  5.   char *v5; // esi9 ]$ G/ a. l, O. L) R. }! E
  6.   void *v6; // eax
    ) z8 o+ K' e1 X/ {7 |
  7. + d- C1 f4 e% J$ T2 u9 W, V
  8.   if ( !a3 )/ l$ R3 ~6 o* x6 L; C- n
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    * Y9 O+ C3 G9 e
  10.   if ( !a2 )
    & ~2 ]' B; ~; g2 e# z
  11.     unknown_libname_180(-2147024809);
    # r  _. }& I# B+ F1 {
  12.   v4 = *(_DWORD *)(*this - 12);
    ) m* T" r: f6 b5 I6 N5 z- |
  13.   v5 = (char *)a2 - *this;
    - A; n/ F2 z7 g
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);
    3 ]- Q" ^# H# Q- C  O1 w, a$ L' @7 \
  15.   if ( (unsigned int)v5 > v4 )
    7 ~. [: C3 p: l2 o
  16.     memcpy_0(v6, a2, a3);
    + D6 ^4 v; V" I/ d
  17.   else$ O2 K$ x! t: `0 Q5 a" |
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);+ f9 q7 X1 ~+ u. H+ H8 A" x$ m
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);
    : \- X% j6 m0 ]8 p7 F9 W
  20. }9 ]& L' Q0 R: u6 \- G/ v
复制代码
& a% j* u: r% T4 ]
# v1 i8 e6 R# J2 \/ a- C3 B

% z! F) y: A" }; j0 u
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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