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

建议 【Directx9游戏汉化 #3】 金发美女(So Blonde) 寻找CreateDevice

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

[建议] 【Directx9游戏汉化 #3】 金发美女(So Blonde) 寻找CreateDevice

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

【Directx9游戏汉化 #3】 金发美女(So Blonde) 寻找CreateDevice

本帖最后由 shane007 于 2023-8-25 15:49 编辑 5 j* Q3 C+ m. w7 }9 T; K
, r! O+ `( _$ i0 q0 x8 U0 W7 c- j
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,5 a9 b6 ?3 s) {9 S7 K0 }7 A4 S) j
而是在RenderSystem_Direct3D9.dll里完成的。
/ `# H% P8 q+ b6 q9 ?0 F由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
& I/ ?! P6 l: S要修改窗口化,就要寻找调用CreateDevice的地方。
0 f/ Y8 m8 m$ ~# M' x- u
% [' P2 _/ d' ?& l因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,% d& Z1 {, ~" Z6 R' p
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
  u/ q" t  r( J2 o  P0 W5 K
  1. call    dword ptr [eax+40h]9 \1 q. o9 A) A% ~. B4 h
  2. call    dword ptr [ebx+40h]
    % G# Z/ g5 e9 E0 h: ^* Q0 L) g
  3. call    dword ptr [ecx+40h]7 E6 N! e: B# p, z
  4. call    dword ptr [edx+40h]
    / {8 c. a; W* i
复制代码

( T# a5 l& x& e6 |! |2 o. l% M3 j6 P( N; \5 F$ W0 H5 G7 g
搜寻结果如下
4 f3 I4 z0 P3 \/ n; ~( a8 P
  1. call    dword ptr [eax+40h]  2处 OK6 s) m+ N, t* M# X. P8 V$ a* S2 T5 }
  2. call    dword ptr [ebx+40h]  没有# `) N; j+ ?& x: a
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    % {" n9 ?* B# t: d
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
& I) m0 Z7 b$ `; g
' p* H: L: [7 t  V
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。, R% q9 m0 f/ h0 ^8 I- o# D- r
代码如下
7 p& U$ r1 g% I. D2 c第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]7 q; [  i) r4 R8 y4 z! |
  2. .text:10017F0A 51                                         push    ecx6 T6 A9 e# _/ J; }0 v& `" l
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]7 M7 R; a7 }8 @' i7 V# ]4 e  w
  4. .text:10017F11 57                                         push    edi
    : f/ Q: g6 Q3 A: l1 c
  5. .text:10017F12 52                                         push    edx8 b# c/ b7 Z( q4 `
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    / h! ]. A+ A+ L" P: P% p  p
  7. .text:10017F17 51                                         push    ecx' ]5 `- l. @9 U
  8. .text:10017F18 53                                         push    ebx' {7 x3 U2 d3 {% L5 u. i: R+ |7 D% {
  9. .text:10017F19 52                                         push    edx
    0 c# _% J. {1 x7 ^
  10. .text:10017F1A 56                                         push    esi$ U) p, [# e5 x0 l3 A$ @$ B# {
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
& J  M* M& R* K$ a; V6 n- d+ R6 s( O
# z* h7 P1 k$ C$ \5 u; X

, A; X, S  Y& k, r. ^( h& F+ d第2处
6 o& [- }. z' R. z3 \# c
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    * t" o6 ]/ C+ {% b5 F
  2. .text:10017F33 51                                         push    ecx
    ' _6 @7 N9 k1 r2 p" T* X  _
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    : ^/ L' L" T: k( v7 M4 t+ ]
  4. .text:10017F3A 57                                         push    edi+ t0 f  d; e  ^1 ]  J6 j
  5. .text:10017F3B 52                                         push    edx+ `, p; K5 d- _
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    $ E( M) v: V& [9 t+ h% n- Q
  7. .text:10017F40 51                                         push    ecx0 G+ s# a* r. }( h  q
  8. .text:10017F41 53                                         push    ebx
    9 c1 h7 o0 ?6 z6 R
  9. .text:10017F42 52                                         push    edx% v8 w" o5 S% E/ p6 C, |
  10. .text:10017F43 56                                         push    esi9 b2 V7 ]" {% z0 x' N
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码
) h3 A" V9 d- Y7 a, x

$ r" v5 h; C& l6 o3 l; A4 D; I/ [! o4 I( G
补充,CreateDevice也有可能是以下形式
% T! z/ E5 B; O% Q9 `4 m
  1. .text:0041640D                 lea     ebp, [esi+604h]
    ( h4 l) L. q$ N9 t
  2. .text:00416413                 push    ebp; U9 s& ?( g2 b  q( ^
  3. .text:00416414                 lea     ecx, [esi+630h]' `- [1 q9 e. C
  4. .text:0041641A                 push    ecx! H" R9 w( J8 g3 u
  5. .text:0041641B                 mov     [esi+90Dh], dl
    ! s7 a# r0 K; S& ~9 x
  6. .text:00416421                 mov     ecx, hWnd) h* p4 _8 a& @7 O
  7. .text:00416427                 mov     edx, [eax]
    7 s" K  u- N: r; U3 n$ [
  8. .text:00416429                 mov     edx, [edx+40h]
    3 p3 L4 z/ J) V6 h- [% s* X
  9. .text:0041642C                 push    40h$ ?$ D9 U% \9 }' f) Q$ h2 R
  10. .text:0041642E                 push    ecx7 ~* y7 h8 b5 ?7 L7 f- A
  11. .text:0041642F                 push    1
    - c( a) ~% M" ~# B- i
  12. .text:00416431                 push    ebx4 N9 u' t9 b/ n
  13. .text:00416432                 push    eax' W4 X: p" E4 T) Q) H2 l
  14. .text:00416433                 call    edx
复制代码
( A; f9 `: T. N2 S$ ]
# _8 D& q( }3 F8 u* U$ p1 J
( k* U2 F# p2 `. n
1 `3 {. C& I8 ]+ L" W$ G8 Q
0 [# x5 j* Q9 ^- ^6 ?9 {& S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好1 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2025-4-14 09:37 | 只看该作者
学习学习一下
回复 支持 反对

使用道具 举报

高级模式
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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