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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-27 10:49 编辑
4 P* I! O' W5 N8 W
; x3 ?8 W# y7 J这个游戏是opengl引擎的,对opengl的初始化主要是在vision71.dll里做的。经过grep文字检索之后,确定这个游戏没有调用 glGenLists和glCallList这2个函数来用于字幕显示。
6 J$ @4 h! i1 p6 t
- g' X$ [; u$ |% A# s# `; u5 rdxwnd窗口化之后,用cheatengine 检索内存字符串(注意,有的字符串在内存有2份,对后1份下断点才有用),
5 g; S. r; H7 q随后下断点。在以下地方断下。9 n, I2 M( Y+ n. O
, S/ Q; ~3 U  B1 I* O" x' q  x
  1. Operation Wintersonne.exe+CE883 - F3 A5                 - repe movsd + M, x4 h# {& U6 c3 D% \, T
  2. 004CE883
复制代码
4 ^0 C0 w2 o/ |; Y

* ]" m: h: a1 m( G: n) R用ida pro查看之后,发现是个底层方法。' m! V+ v- M' R7 Z7 R
真的显示函数应该是调用它的上层方法。+ n" k# |- U1 }8 P- f
  1. void *__cdecl memcpy_0(void *a1, const void *a2, size_t a3)( M4 t* P( ]! Q; V1 U- x
复制代码

" H, B+ M) M# m8 @/ [2 Z( n
% F! y5 v8 q6 H- r2 |这个方法看着蛮像的,也许就是它,待日后修改代码测试
3 o2 e3 P- V8 w6 ^
9 Y# p1 c8 I' |1 V/ ~5 e# N
  1. : M. u: E4 T% X
  2. int __thiscall ATL::CSimpleStringT<char,0>::SetString(_DWORD *this, void *a2, size_t a3)
    # e/ D: l/ u! }5 |  Z5 U
  3. {9 Z) G6 b$ L8 x0 m  b
  4.   unsigned int v4; // edi3 t4 G/ k! y" B& C- R+ G+ F# s3 p! r
  5.   char *v5; // esi- ~5 @- C6 s" p0 ?, U3 V
  6.   void *v6; // eax
    ( O. ~" P2 v+ Z

  7. ! @& `9 f9 a0 ?6 P
  8.   if ( !a3 )
    . w3 f5 g: b! M( n: j- F/ c
  9.     return ATL::CSimpleStringT<char,0>::Empty();
    8 A  s$ K$ @- J7 ~( m
  10.   if ( !a2 )
    9 J, J5 M! f" D  R8 a1 o* |% k
  11.     unknown_libname_180(-2147024809);; l; b; D1 S% h& ?; W
  12.   v4 = *(_DWORD *)(*this - 12);
    6 g  i/ A) s% G
  13.   v5 = (char *)a2 - *this;
    " i: V, U6 }9 h& W* K2 k! k8 d
  14.   v6 = (void *)ATL::CSimpleStringT<char,0>::PrepareWrite(a3);9 m. W3 @6 P0 m' g
  15.   if ( (unsigned int)v5 > v4 )
    , r0 I$ N& l3 A9 z
  16.     memcpy_0(v6, a2, a3);+ r" G) H/ v' \/ j$ R
  17.   else/ t" j7 G! p; I$ r+ c  N3 G
  18.     memcpy(v6, &v5[(_DWORD)v6], a3);
    , R7 J7 O: D) a3 Y3 w# `2 Q
  19.   return ATL::CSimpleStringT<char,0>::SetLength(a3);. T% g* L* j% ^7 [" `% u
  20. }9 }6 e% I5 ^, }! V
复制代码
6 N. P, W/ x+ a1 y) e% T

" F$ H  i4 L$ T, X. l( J5 ^
" p- O  o; i$ g5 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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