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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑 5 I6 V: t$ M' B9 x2 d" T5 e

3 U2 A4 s* c% Y这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。9 V% Q* B2 ~2 {5 u9 g5 ~# o' R

' D3 U8 y& [# d1 a% Q! ~  L0 Tdxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),5 j' n& D& s: Q* h" E
随后下断点。在以下地方断下。' F1 S" x7 j  \# t0 y& Q' |

' P3 u; h$ b% x' V$ C3 e0 Q# {7 O
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd
    . j* a  y0 M+ m  V$ I! u
  2. 004CE883
复制代码
& V7 G9 @/ i9 S& K
" r1 E7 f0 C& }
用ida pro查看之后,发现是个底层方法。
9 H2 H7 I8 d* {% Q5 H5 u6 o1 E真的显示函数应该是调用它的上层方法。; k* [1 |0 l' W% g5 q" G% n
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)
    % Z  \" _% d. Z% s- O
复制代码

! p" `! C/ ~: ^  |7 `
0 x! Z3 Q. d- V. n/ n. k这个方法看着蛮像的,也许就是它,待日后修改代码测试1 G/ e- k2 @. W0 b5 y& T* Y

8 p: f5 E5 L- ]( ^0 v! s; E

  1. : b! h9 U( U" `0 u
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)8 a7 l$ g6 w: T+ N! r! \3 \
  3. {  d, ~& B5 B. ^: u& D
  4.   unsigned int v4; // edi
    7 E7 t0 G3 f( R+ F8 w
  5.   char *v5; // esi6 x" I  C, s+ c/ q
  6.   void *v6; // eax- |! R; D/ o" W: v

  7. & g, i* Y, \+ p7 z/ e* ^
  8.   if ( !a3 )0 y2 Y0 T" `  Z1 h8 t
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    ) P1 _/ N& i) b' [
  10.   if ( !a2 )
    / E3 Z) Y% v9 E
  11.     unknown_libname_180(-2147024809);3 ^7 l9 V; ~3 ]" ]; ^; e
  12.   v4 = *(_DWORD *)(*this - 12);# v4 A4 P: x2 v1 |$ K8 I
  13.   v5 = (char *)a2 - *this;
    / E8 T3 s1 H5 }5 E
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);0 l7 K9 s0 ^) D6 u* `- z
  15.   if ( (unsigned int)v5 > v4 )
    - v  V! ^# \3 m' W+ w" h
  16.     memcpy_0(v6, a2, a3);
    : o& X5 ]) M& a: p" t
  17.   else9 b* }% S" S8 b. y+ J9 [
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    2 A9 ~, W% B8 v2 v3 {( }
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);+ z/ W  x& e" `% K/ @* f- {
  20. }
    * T1 [$ s4 `# p* Y
复制代码
/ K. ?3 ]8 S' H) Z

9 b, _2 @: W, _+ p# ]# f" b
& k$ l* B+ t. K: j" Q8 y; L
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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