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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 0 _1 D0 b2 z& Y5 m

( }/ N$ Z) @7 t+ e  P# p. t这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,- V& p8 Z% W  A/ l3 q9 O+ b
而是在RenderSystem_Direct3D9.dll里完成的。
1 g( N# H6 ]- u! a( S) x由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
5 K! `, m1 F0 v. Q5 O5 k要修改窗口化,就要寻找调用CreateDevice的地方。8 Y6 ], {1 ^* l2 s6 H% E- {" R4 x
. F& r8 D/ L: q$ z6 d
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
% @4 l  N. B# s: i逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
7 q* ~" t; R9 I9 }8 m, b
  1. call    dword ptr [eax+40h]7 D6 \: |) J/ ~- Q& c3 V8 k% S& q
  2. call    dword ptr [ebx+40h]6 ^3 P! m2 b4 x' i+ ]  l+ P: X6 x# k9 p
  3. call    dword ptr [ecx+40h]8 H3 B  C, A: K( ~- X, A+ o5 z
  4. call    dword ptr [edx+40h]8 R# b. s* b0 E$ T$ F
复制代码

& g+ {4 K3 b& V6 _* h- f! s1 @7 u0 I7 G+ t3 w4 n5 U2 l
搜寻结果如下
3 V7 @" Q6 g) }3 x' |
  1. call    dword ptr [eax+40h]  2处 OK
    4 Z! g( K/ u' s0 B5 W; B& Y4 v
  2. call    dword ptr [ebx+40h]  没有
    9 I6 C. K7 i5 R0 S; ]! D% @
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对4 b' V5 {4 W, \" a0 r, v
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
: \6 c% x; v' \6 ]0 j; e
3 t- V% \. z+ F1 p9 C1 q! O* B
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
0 _# c- i: C! m$ R代码如下
* B% J5 C- v/ y- Q8 f第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    ; N: [9 [- r8 r# [/ f- s7 p
  2. .text:10017F0A 51                                         push    ecx' s3 P/ u5 A) O8 S/ W1 f2 ?- [
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    4 {6 I; ^  M3 W
  4. .text:10017F11 57                                         push    edi- _8 @9 I$ L& o8 c  c% _
  5. .text:10017F12 52                                         push    edx& T+ |& J7 ~) _
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]4 N- V0 r$ x5 G- \4 ]
  7. .text:10017F17 51                                         push    ecx
    . m, Q1 Q8 h) l# n4 R3 v. K
  8. .text:10017F18 53                                         push    ebx- W+ D/ x  |- T- W
  9. .text:10017F19 52                                         push    edx9 N  @. ]& _4 }6 K! n
  10. .text:10017F1A 56                                         push    esi
    ) t' p2 q6 [& C/ B2 Y$ Z6 \* @
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

+ k/ N; o& }( @# Q- u
0 }1 N% `/ z9 }0 C& q# i# F5 @7 x; d2 z; a# m
第2处; a4 }8 p5 l4 `1 Q
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]8 w" C$ g8 D) z( e
  2. .text:10017F33 51                                         push    ecx: a' C! F, h8 ^3 P* L+ l+ E
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]& i* E: C# [! w( }
  4. .text:10017F3A 57                                         push    edi8 g+ `$ C+ r7 }$ b( ]. n4 n
  5. .text:10017F3B 52                                         push    edx" n: N% p, n! }2 w
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    9 a4 ]% X& }4 A
  7. .text:10017F40 51                                         push    ecx
    ! D* {" I* n4 W' n2 ~# i
  8. .text:10017F41 53                                         push    ebx7 Q7 N% C9 @% Q/ w& _) }3 j
  9. .text:10017F42 52                                         push    edx+ t/ I& o* H/ H" j! e! a# f
  10. .text:10017F43 56                                         push    esi
    ; O8 W% N* r& T- P# n3 P
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

, I1 ~! l' q! k# _5 d" M  }# u8 O* a. G& C

. X2 r3 N. ^. d3 H; d* Q补充,CreateDevice也有可能是以下形式
+ \$ H4 {4 d' A8 n
  1. .text:0041640D                 lea     ebp, [esi+604h]2 p6 E; U8 `. P$ R6 W
  2. .text:00416413                 push    ebp* M" V" t/ x1 m$ b- `
  3. .text:00416414                 lea     ecx, [esi+630h]# k/ D0 F0 k# Y' K1 s  D
  4. .text:0041641A                 push    ecx
    / ~: f/ p) b) W3 ?& v. z& K9 M7 W
  5. .text:0041641B                 mov     [esi+90Dh], dl) y$ l4 t$ r. g+ X) }
  6. .text:00416421                 mov     ecx, hWnd' M2 H( T! z. T5 H; ]
  7. .text:00416427                 mov     edx, [eax]7 z* G& W6 L- a  Q/ g" V
  8. .text:00416429                 mov     edx, [edx+40h]
    & j: i# W/ T6 b4 W
  9. .text:0041642C                 push    40h
    ) Q2 T# k/ ?9 E8 y7 g$ N
  10. .text:0041642E                 push    ecx
    * Q5 J2 _9 Z& q$ k/ D. p
  11. .text:0041642F                 push    1
    . D& I/ i+ h- r1 ~" a" Q6 L! I% r) |
  12. .text:00416431                 push    ebx
    2 z/ e+ z# C& e  k( R$ x& x! Z
  13. .text:00416432                 push    eax7 t' h9 i% z# c
  14. .text:00416433                 call    edx
复制代码
+ P! l3 e8 n9 b- H
# B7 a0 i( ?) @4 D4 w+ X" w

( D$ S. [/ Y. [  l# o8 O8 v$ X/ j' w3 r" c2 \" w4 G6 e+ C
! x4 G. n$ C  t* r
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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