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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
6 ~5 B4 F+ [- w" i% f* k# U6 J6 t* q! a6 c; _4 S, k
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,* h  i6 l9 A. T5 J& n7 S0 `  X6 u
而是在RenderSystem_Direct3D9.dll里完成的。- y5 l9 j3 @! z. O" g* h4 M
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
  x0 }! @; M0 C0 }! L1 A( o( o3 q9 s要修改窗口化,就要寻找调用CreateDevice的地方。) T' x# X" N; e2 ]5 P# I

- m  g1 ^' v" P/ k% u' b# ?) f因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,7 o* G3 ]& H) j- b
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。); }# N: `: Y0 H1 b- M& b7 M; |
  1. call    dword ptr [eax+40h]
    ; t$ ]9 W+ V" y" Q. m
  2. call    dword ptr [ebx+40h]/ a. r; T& E! x# L* O3 O
  3. call    dword ptr [ecx+40h]  h# A9 ~) ], M( L/ ?
  4. call    dword ptr [edx+40h]; B0 X# C/ H( F
复制代码

8 l6 J" H' C% I$ p
9 S" ]1 v# q0 U3 r3 d$ g/ `' Z  D7 \搜寻结果如下( }/ t. ~$ k+ `1 U, }+ J7 v
  1. call    dword ptr [eax+40h]  2处 OK
    8 C6 I% }( \  H! W& o1 V; Q
  2. call    dword ptr [ebx+40h]  没有# Z3 F3 W' z  e2 w# z+ y
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    : i4 K7 J8 T! o/ j" B1 Z
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

) q: l3 s& L& l# q& S2 I1 i% j  H( L2 Z) v* K
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
2 l6 U, x4 e3 ^" f/ w6 h代码如下
8 E3 n. g7 C  Z' T7 A1 }第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]3 P2 X- @- |- ]- r" p/ d0 M
  2. .text:10017F0A 51                                         push    ecx
    ! }0 D" |8 k  N3 y; C
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]' P1 R" Y! k/ ]3 V3 D' J
  4. .text:10017F11 57                                         push    edi
    2 ?& [+ w, b- S7 M; ~5 n+ ~9 ~
  5. .text:10017F12 52                                         push    edx/ y! ?$ G$ r" ?5 s- @. X
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    : M" E; r9 c6 t9 J8 D1 c! W0 M$ H0 o$ D
  7. .text:10017F17 51                                         push    ecx. \% H1 U  z& g5 c5 n) ~
  8. .text:10017F18 53                                         push    ebx  \5 a6 |% G0 w. m
  9. .text:10017F19 52                                         push    edx
    - n2 ?- H! u) k
  10. .text:10017F1A 56                                         push    esi
    , I$ S  F% Q: Q, G0 t4 I
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
. c  c8 _: i) }! B  x# S- d+ ~4 z2 x

' l) s" M& P9 G6 T. j6 [3 K  \- a) A3 y8 K+ [8 ?/ n
第2处" |* j+ j4 H0 b8 S+ r2 z4 [
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    : j1 O% p+ i( L2 A! f+ r# `$ n
  2. .text:10017F33 51                                         push    ecx
    1 |/ p" e: [+ ^/ \. n
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]' F- F0 {) L# T0 C
  4. .text:10017F3A 57                                         push    edi
    - D8 [4 Q* l; w) [7 j  ~+ v
  5. .text:10017F3B 52                                         push    edx
    $ E" e+ x7 T- ~  I  r
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]7 D% m0 Z: d  d2 {! ~- A
  7. .text:10017F40 51                                         push    ecx
    : V) J. I5 a7 R% N0 h9 V: P- q8 S2 v. }$ a
  8. .text:10017F41 53                                         push    ebx
    * \2 ]2 ?4 ^% m; ?3 W4 i2 q+ h1 |% I0 d
  9. .text:10017F42 52                                         push    edx. _* U9 T" o; K3 @
  10. .text:10017F43 56                                         push    esi5 b/ K6 G" V" f$ S2 [0 h7 ~
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

6 S. K8 D# P- y! ^* J! [+ z6 ]& O" v8 p. K; e

1 Q' _, S" a. x! I& \1 z1 g+ v补充,CreateDevice也有可能是以下形式
5 |0 Y9 `5 \9 U+ C0 q" D
  1. .text:0041640D                 lea     ebp, [esi+604h]! I. C( H4 K: |8 m) s# T$ `
  2. .text:00416413                 push    ebp
    8 x1 x- c+ Y/ a& l$ X2 E
  3. .text:00416414                 lea     ecx, [esi+630h]2 p4 t# ]" Q; w4 P
  4. .text:0041641A                 push    ecx, |+ T; ^+ W7 N+ D+ u  @8 E1 m
  5. .text:0041641B                 mov     [esi+90Dh], dl
    1 h$ J% q3 I; m% G
  6. .text:00416421                 mov     ecx, hWnd: i' Q, T/ r3 G, h3 m
  7. .text:00416427                 mov     edx, [eax]2 O% r& Y0 W- \' K
  8. .text:00416429                 mov     edx, [edx+40h]3 J! k8 A, h* B6 `1 Y& G& J" p2 I
  9. .text:0041642C                 push    40h
    3 i, i3 Y+ w* I
  10. .text:0041642E                 push    ecx( `! z  H% @+ W* g8 }# U
  11. .text:0041642F                 push    18 e. o$ q  T/ [5 ~  W; g
  12. .text:00416431                 push    ebx
    7 M% _- \$ w% B7 ~. ^0 ~$ S7 a% a
  13. .text:00416432                 push    eax0 F6 r6 D% g/ r
  14. .text:00416433                 call    edx
复制代码

4 m6 c' N3 H# a9 u1 b# i6 B4 r. B  O5 t0 n
0 F1 _4 I: f9 m$ Q- J: v
& {) s( q1 }3 t: K  Q2 Y

- F. J, P/ M- ]0 w; n' 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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