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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
+ k5 l& [  V: ]' E. G5 H! o$ ?$ F' n, R  x5 \! ?
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,) b& |. I1 G+ I0 p. M
而是在RenderSystem_Direct3D9.dll里完成的。
: }6 g! E" B7 k% g0 `/ @由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。5 q& f8 k; E/ ?
要修改窗口化,就要寻找调用CreateDevice的地方。" ~' J" j3 S! Y! Q/ ^6 y
$ ]& |( B, e$ x6 d
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,) m5 |" [& q$ m, D. L6 V
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
% E  I$ a* T! j0 G
  1. call    dword ptr [eax+40h]
    ( O8 \9 p  n- @) |7 t
  2. call    dword ptr [ebx+40h]5 E1 ?# s. V, A$ n8 e
  3. call    dword ptr [ecx+40h]0 l: F5 A9 G3 g* p# S; ?) O
  4. call    dword ptr [edx+40h]
    1 C* I3 O, t% i/ X8 h: z
复制代码
9 e, r& C8 q. k( o) O

% y/ _- e' \1 S7 q搜寻结果如下) f$ S* n0 J( C7 M" O& d/ `
  1. call    dword ptr [eax+40h]  2处 OK
    + ^; l' U1 v& K; X  _
  2. call    dword ptr [ebx+40h]  没有6 R5 G7 C; @, g( g1 M% p
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    , {- j8 `8 r+ J
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

# F: k7 Z- v" ?% ~
/ p, b: p7 p. M) X结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。8 l9 |& Q& D& x9 M
代码如下  R# O# r" S& d$ y# m
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]; V# x( B6 Z& @0 g
  2. .text:10017F0A 51                                         push    ecx
      X  }/ l- r* Q, M2 m% V
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]6 n5 M5 z' C8 O6 w5 s
  4. .text:10017F11 57                                         push    edi
    ) b2 L; B* p5 `* \" _+ `; o
  5. .text:10017F12 52                                         push    edx
    5 a5 L* A# h% {* K3 G
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    ! \: f0 P- J6 @4 f% |/ C# e) |# T
  7. .text:10017F17 51                                         push    ecx, A- q2 }4 K1 Y8 _2 L4 ^7 H4 Y
  8. .text:10017F18 53                                         push    ebx
    7 O$ I5 `$ F2 ^5 s( g# b6 I+ l
  9. .text:10017F19 52                                         push    edx
    2 \( b9 r$ I+ d8 g' L% F
  10. .text:10017F1A 56                                         push    esi: B4 s" x! B) t- \, @- X; k; t
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

" F) E; H' X$ y8 j- c! Q
( L: A: }# D9 v; a8 D( r# x3 s8 T8 s
第2处( ]5 d$ r5 X6 r6 N5 T
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    ; s, J/ Z: G4 s1 p
  2. .text:10017F33 51                                         push    ecx7 U( S: T9 @  ~! n$ c& ^2 g4 P
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    . q# F8 [1 D$ x0 m9 L
  4. .text:10017F3A 57                                         push    edi
    2 p! f8 W4 V- t& x$ ?4 A
  5. .text:10017F3B 52                                         push    edx- K+ E% Q( B5 d( }6 s
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    6 l; ]( F  j/ T5 l6 S
  7. .text:10017F40 51                                         push    ecx* E$ E( `) O0 O
  8. .text:10017F41 53                                         push    ebx$ u$ ~7 |' b, x1 D2 D6 s8 n
  9. .text:10017F42 52                                         push    edx
    ; @- _7 P! m0 C" K2 D, ]) U) p
  10. .text:10017F43 56                                         push    esi# {3 i# X4 p  k% y- V" ^, L
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

( `6 f2 G) a: M8 c6 O
. \7 E& x! k/ f& t
- H$ y' P3 g4 Z' d& `" p补充,CreateDevice也有可能是以下形式
8 O% Z) ^& K9 H8 t
  1. .text:0041640D                 lea     ebp, [esi+604h]
    $ t( N, f/ Z7 ?
  2. .text:00416413                 push    ebp
    ' d$ P% M" M7 |* `0 V. @4 x
  3. .text:00416414                 lea     ecx, [esi+630h]( }0 D; C, L) t/ _. l% Z- w
  4. .text:0041641A                 push    ecx
    0 ]5 D& C* ]) i, Z
  5. .text:0041641B                 mov     [esi+90Dh], dl* R. R6 f5 A8 O2 C0 y
  6. .text:00416421                 mov     ecx, hWnd( r* l$ d+ X$ x# g
  7. .text:00416427                 mov     edx, [eax]$ E' V: q3 t8 t! O/ {; z
  8. .text:00416429                 mov     edx, [edx+40h]
    / y. C' f+ O4 M0 J$ m
  9. .text:0041642C                 push    40h
    2 C. k' V) u7 b" V: d+ F
  10. .text:0041642E                 push    ecx& T$ ]' d1 u1 @0 j* q. s4 Z: L
  11. .text:0041642F                 push    11 R8 m3 Q7 f/ F5 |6 I$ o" l
  12. .text:00416431                 push    ebx
    2 X! B  K% @  b9 t; @0 x! R
  13. .text:00416432                 push    eax9 y6 p( T0 u& X3 J4 `: T: R
  14. .text:00416433                 call    edx
复制代码

/ W' x# w( [+ y! U! y+ ?  w, Y1 [- m1 ^( M) i& H- m5 n' s% C: r0 }

) _) M7 s: F5 o1 d/ ?' @0 F" e2 ]- P& w/ X5 T
( m( E% T5 J  T+ w
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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