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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑
  U& l" T7 p! {6 c
; l. @' H! M5 p3 ?) V. M这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
2 c" Y6 P8 f0 m. T* D: p3 e7 w: Z" a. U+ O5 d
dxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
) Y1 H3 f$ U3 {$ h3 o" I. [# q) I随后下断点。在以下地方断下。) p9 n- z: G: y! H  H

" K# u8 |# W9 h1 W
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd $ s1 Y3 w$ F6 u# q# p
  2. 004CE883
复制代码

; |3 Y* S: T3 ]) W. `
' b" e/ c5 r/ y+ o5 C用ida pro查看之后,发现是个底层方法。8 M! T$ |: f1 w3 e* M; ?' G
真的显示函数应该是调用它的上层方法。' J- C) z6 B  i' w7 C1 M
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)% i2 V' T* A, h  Q
复制代码

! P4 R/ B9 ]1 [. _4 R7 j0 h: I& l, f1 t' c* w# ?
这个方法看着蛮像的,也许就是它,待日后修改代码测试
& Y$ u3 s+ _! C* C: G2 r% S; i4 B) v6 x$ n$ p4 k

  1. ; _# q5 U+ e4 W3 ], c* |
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    ' E& l8 z( R6 h/ B7 h% r' V# ^
  3. {) g7 b! f; t( D2 a  f+ F
  4.   unsigned int v4; // edi. ~0 @  @2 a; Y& S5 O0 \
  5.   char *v5; // esi4 D$ o; ]! ^4 p- O/ k- i8 o: @
  6.   void *v6; // eax
    0 S1 J# k% M1 Y$ f& q, G+ m
  7. " u4 N9 y' |5 F+ }; \5 E( ~- L" n
  8.   if ( !a3 )
    7 g: h, N0 L! C6 b  A
  9.     return ATL::CSimpleStringT<char,0>::Empty();7 m4 k) e$ h" P2 R# k
  10.   if ( !a2 )
    4 f1 F, ]* K0 H  Z8 P3 q, ?9 Y% E
  11.     unknown_libname_180(-2147024809);0 Q. A* ~# v3 e( |+ a
  12.   v4 = *(_DWORD *)(*this - 12);$ y: g$ P& s+ }+ [1 y
  13.   v5 = (char *)a2 - *this;
    * X( F: A) A' R# r( H) y
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);& @! |4 ?2 _# Y) @3 p1 k' e/ ^
  15.   if ( (unsigned int)v5 > v4 )' k7 \- M6 e7 [4 Q) l
  16.     memcpy_0(v6, a2, a3);; i2 D$ V* }/ x) v& }' j
  17.   else7 y1 x, {( y) q' R* M
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    0 O% \' l* d$ B+ z: M
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);
    ) p3 a8 N5 i- K; y! w0 P  G+ \
  20. }+ j" O$ Q; b9 {8 S* N' O
复制代码

& p- [1 U7 v1 _; N. O% q2 i* U& u& c7 K, q  F
6 ~9 @# i. l( @% e. Z7 ^) M
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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