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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 & ^' u- T9 u, y* y/ ]

1 ^: Z4 f7 T. B+ |) W' r这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,' P; C8 G- g9 g+ G/ `
而是在RenderSystem_Direct3D9.dll里完成的。
9 t; v& h+ p* o5 `- p由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。4 L0 X1 R, H2 A. v/ T% z
要修改窗口化,就要寻找调用CreateDevice的地方。" T: Z9 u* `3 b* X

) q6 }" h3 Q9 O/ W3 L9 w因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
6 w. w% n& N" y0 h3 T/ t5 }逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)$ O  Q3 E& i0 ]3 R- [8 M9 R, y' E
  1. call    dword ptr [eax+40h]. l! a* n$ y6 x+ ?$ v& [
  2. call    dword ptr [ebx+40h]! b7 k) c4 H$ K
  3. call    dword ptr [ecx+40h]: ?+ Q% M. a& Y. a
  4. call    dword ptr [edx+40h]
    * T! E, R5 k- {+ Y( }2 K4 Y
复制代码

: u% p6 ^% s) t' ?7 V! o
. S' n  t5 j* S6 ]6 }5 B+ H8 f搜寻结果如下( u+ d5 R8 q* l) c9 \
  1. call    dword ptr [eax+40h]  2处 OK4 \. V% K2 i! ^4 B, J& p# `6 k9 o! M
  2. call    dword ptr [ebx+40h]  没有0 J4 [3 y6 r5 p1 k6 M: h/ O6 f0 Y
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    , |. q! g* C( T1 I6 U' _$ ]$ n7 m, R
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
0 X4 G/ n3 o: Q) ~" f, `

  P9 ~) s( W! I" @) S9 h结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。4 ^9 k* M1 U) K3 e2 X
代码如下
' e: K; I. Q# F! R8 Y: f0 r第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    # c+ q; c6 i. J  Y- [
  2. .text:10017F0A 51                                         push    ecx
    9 N4 u2 N2 y, z
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    1 F0 u4 [) i- l
  4. .text:10017F11 57                                         push    edi
    " C& A9 X2 U  ~+ x1 d/ _4 r/ T+ g
  5. .text:10017F12 52                                         push    edx+ `" p& {0 l! j/ K+ e
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
      Q8 `* `  _0 g5 S9 s2 }
  7. .text:10017F17 51                                         push    ecx
    * t$ e/ q& [; T
  8. .text:10017F18 53                                         push    ebx
    ; ~4 w: x* ?% {0 O# E7 d" [
  9. .text:10017F19 52                                         push    edx' e  x( I& R* q9 |3 `
  10. .text:10017F1A 56                                         push    esi6 u3 ?& Y# ]- D$ R
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

/ S( _  Y2 W. ^' O0 q3 Y1 P; s: B4 C7 J" @' }
- E( b  h! V- F$ v4 s7 y6 r' G
第2处
; [* P  A( [7 u9 i8 H8 ]8 d
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    - o0 v8 o+ ?' Z9 b: E9 p
  2. .text:10017F33 51                                         push    ecx$ [8 N. G% ^1 O
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    * t, l' f* U3 `
  4. .text:10017F3A 57                                         push    edi. m! o$ a$ G& \, T
  5. .text:10017F3B 52                                         push    edx; k: [0 K, C  ]* x# ^' A8 B& H% W' W
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    3 i5 t4 {/ ?9 m% Y' q7 Y
  7. .text:10017F40 51                                         push    ecx
    & z5 e/ e. T$ e) x5 v1 {
  8. .text:10017F41 53                                         push    ebx1 H* r& I1 p5 T& a  ]2 M( q+ a3 |
  9. .text:10017F42 52                                         push    edx; k& j# d+ w& U
  10. .text:10017F43 56                                         push    esi7 D1 a0 _% Q! @# U. c) S( Q
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码
+ K5 G# f! L, q0 m* z, F+ `
% o. V' G5 n& k7 }1 Q( X2 ^
# ^5 ~+ m5 t. G7 e  b) F
补充,CreateDevice也有可能是以下形式6 a* B. v, p* A3 `
  1. .text:0041640D                 lea     ebp, [esi+604h]) n5 q# P) Q8 p7 V6 X
  2. .text:00416413                 push    ebp
    * t9 q" b- {$ J! Q; ^' G) c( }
  3. .text:00416414                 lea     ecx, [esi+630h]
    & J( I- ^+ ?- ?1 L7 T% h  Y, W
  4. .text:0041641A                 push    ecx
    % q1 W6 p8 m3 T1 x
  5. .text:0041641B                 mov     [esi+90Dh], dl4 l  @+ h: ~- d) G( v( Z4 Y2 x4 b
  6. .text:00416421                 mov     ecx, hWnd* K) _- E5 A+ U% @3 T3 P
  7. .text:00416427                 mov     edx, [eax]
    ( Q% I  w2 ]6 d$ I7 J7 [4 r4 O
  8. .text:00416429                 mov     edx, [edx+40h]
    + p) S$ d% V  S# j( h+ B; u9 y
  9. .text:0041642C                 push    40h# o% v2 d- H7 r4 v
  10. .text:0041642E                 push    ecx& ^5 @; Y& u3 p) w- \% A% \
  11. .text:0041642F                 push    1
    7 Y' t  j! [4 ~# k: [. P( {8 n
  12. .text:00416431                 push    ebx
    & l& w! l4 e9 Q, b" C" B# e
  13. .text:00416432                 push    eax
    / {+ r% T( J- p# v; ^0 Z! F, _* T
  14. .text:00416433                 call    edx
复制代码

  x! [: V! v+ @
. b) V$ K9 Q% t! ]3 F: a8 q1 }3 U) _

8 }8 c6 Y; p8 ?1 [  [! ~$ o3 _( d  F* G5 r9 g, x. M: u+ m
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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