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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑 ' z# T! m( }) T. T
" G% J2 n" f, L  w
这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。: }  ^( I0 Z' \( y, p) P

6 n, g8 O$ ^: q' T/ `' [. f  T* Xdxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),- q# D! `! [' v+ }- G# v
随后下断点。在以下地方断下。
5 w/ r4 V- G& G. t( K( b3 \) _+ v( O, K
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd - f( w6 z5 E- X& u) {6 N- x" J
  2. 004CE883
复制代码

0 L4 d9 `/ L; H% G. w# g
. w3 }: |1 _4 L, r5 ]用ida pro查看之后,发现是个底层方法。
, R" Y% e. B- [. L9 |1 C/ i真的显示函数应该是调用它的上层方法。& e! g7 ~" A9 S4 ~* z) }
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)% V: \; _( a) o
复制代码
1 e* Z; L3 N; u% Q9 E/ ]3 ^- R
6 \4 g4 B9 g9 h+ M' ?, P
这个方法看着蛮像的,也许就是它,待日后修改代码测试" z8 ?3 M, W; E5 F: F

& c! K& n4 |; {
  1. / z( n5 z' w3 E# E
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    9 U2 n# b9 f8 B1 r" K  O% p: T
  3. {. i0 h' A$ B% m- R" j% z1 R/ w, R
  4.   unsigned int v4; // edi
    % V8 Y- Y: m8 C
  5.   char *v5; // esi
    & ~. K9 l$ a; {& J+ s
  6.   void *v6; // eax. b/ x$ n$ f- D0 j
  7. ' Y, _: N' g( n( u" Q
  8.   if ( !a3 )
      I; A7 r) ^- e0 Y9 q" |2 B
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    # W; {+ i! s0 F- e
  10.   if ( !a2 )' C& u4 J5 {9 d! `. G1 b4 {. M4 I/ F
  11.     unknown_libname_180(-2147024809);6 I' K$ W7 b3 w1 y
  12.   v4 = *(_DWORD *)(*this - 12);: }1 F( c3 l1 J! \4 ?+ p
  13.   v5 = (char *)a2 - *this;: x5 }* L8 g5 X
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);- `0 W# m: ^5 X1 T9 \  T
  15.   if ( (unsigned int)v5 > v4 )( ~5 C8 [/ N. e6 S  q8 ^
  16.     memcpy_0(v6, a2, a3);
    7 Z& j( b5 E4 }3 u+ d2 H, ?8 E$ U/ l
  17.   else
    + C8 h) x$ I( h5 z& }
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    . h, o2 a+ F  z- P; M! C5 m7 D
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);
    1 ]7 V/ w- L- [1 m+ T% R' [% E
  20. }/ j' k: f  K; {
复制代码
0 R4 I  @- u- R; n1 c9 l. v1 M$ X5 t

" w/ X8 O  w1 D! @# m& y/ F+ j) A. x7 d/ c
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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