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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 & L' ~7 z3 f6 O; c) P- Q
  U* v4 A0 c, A6 ?- p
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,# u6 z  D; w+ [# x. W
而是在RenderSystem_Direct3D9.dll里完成的。
: j8 s- A( S  g% [8 C( V$ Q由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
) X4 O# c5 A5 h: c: j- |要修改窗口化,就要寻找调用CreateDevice的地方。0 d, r$ L% d6 R

$ j- w8 Q+ @% p$ z因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
4 D! e& ?5 ]+ b2 l2 i+ A% h逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
( U/ O1 J' T5 u2 v' S
  1. call    dword ptr [eax+40h]* E6 L3 Z: W7 K: C0 F. C1 X
  2. call    dword ptr [ebx+40h]
    4 H/ e; I  ^) y+ {& w( V: t
  3. call    dword ptr [ecx+40h]' v* U( S  x2 m. [( W7 w& G
  4. call    dword ptr [edx+40h]
    & V. o4 {/ V: G2 ^3 m% z
复制代码
# Y  Y3 a& x4 z& a, _2 O
/ v7 M7 N, y+ E5 b: r5 C
搜寻结果如下
' V; m6 v( e7 v: [
  1. call    dword ptr [eax+40h]  2处 OK
    ) T' R1 n( M9 M( x4 R1 b
  2. call    dword ptr [ebx+40h]  没有
    # ^3 K: @7 H& E- F1 `2 @* {& m
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    + l$ v0 ]3 A/ d  N- d; ~' y
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
  t7 N1 ?. ]6 V! ~# O+ x
) J1 N" c* B, `: x) i
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。, ]* H9 n- u5 A: m
代码如下
- r, z2 N) M# g# U: @& k. ]0 ^第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    7 S& {0 E+ p6 U! f) e; z0 I! H* X
  2. .text:10017F0A 51                                         push    ecx
    " Y" O6 D5 F1 z+ I! Z9 w
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    0 ~' W; E+ T  l) U& r6 C# E
  4. .text:10017F11 57                                         push    edi5 `* _0 a7 m) \, w: d( u1 `
  5. .text:10017F12 52                                         push    edx- x. |9 F% x! {$ [) Z7 P
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]& c0 I: z1 L' H! K
  7. .text:10017F17 51                                         push    ecx
    # o7 {* P6 P: z7 q1 w/ @
  8. .text:10017F18 53                                         push    ebx% r9 ?  g# w+ ?0 Y0 M1 P
  9. .text:10017F19 52                                         push    edx
    , r# D5 `" p. ?& H( p6 \6 k6 q" L6 r
  10. .text:10017F1A 56                                         push    esi
      @7 i1 E' ~4 t/ t/ v3 @- B: z% _
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

( i7 j4 P2 R# s. h$ u" J' j0 Z  J# Q- j3 @& h

  ^2 G+ F3 t3 D( T8 F第2处* K  p7 Y" X" s$ z
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    9 l; M8 y0 W! E  h6 Y! a6 A
  2. .text:10017F33 51                                         push    ecx
    * n6 _3 z; z$ O) C, ~( o5 T
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]( l6 F  ^7 }! a# ^1 O% [8 N
  4. .text:10017F3A 57                                         push    edi
    6 Z, g0 d. g9 i7 i
  5. .text:10017F3B 52                                         push    edx
    : z- j3 H& F! J" Y$ [1 [5 B1 ~1 Y. e
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    ) ^. ?- L  p; R
  7. .text:10017F40 51                                         push    ecx# I8 v' `+ G  i3 K
  8. .text:10017F41 53                                         push    ebx+ m! j, F* X$ f8 u' U/ Y( D# Q% x
  9. .text:10017F42 52                                         push    edx3 Y0 \# A# \( R1 q% Q! I
  10. .text:10017F43 56                                         push    esi
    # n) m/ {, k7 J9 f, K8 h) m
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

6 w- l  I; N! c8 x* g' A, ?, G: Q* d$ x3 G

/ M9 g$ `: T' t补充,CreateDevice也有可能是以下形式" s  m! _" q# D0 C3 f) }# E$ y
  1. .text:0041640D                 lea     ebp, [esi+604h]
    : M7 `* r4 H; r: C; \
  2. .text:00416413                 push    ebp: C1 k/ e8 R2 y# D
  3. .text:00416414                 lea     ecx, [esi+630h]# C1 R( r5 ]( C. R9 r' j
  4. .text:0041641A                 push    ecx
      i8 o$ E3 B* {5 v  O# _
  5. .text:0041641B                 mov     [esi+90Dh], dl
    5 }7 f9 ]7 h( v, ]" B& h
  6. .text:00416421                 mov     ecx, hWnd
    7 x3 S* P0 H1 R# P, b& |
  7. .text:00416427                 mov     edx, [eax]9 _9 g4 ~% j! H: l8 n6 y0 P8 V: f/ O
  8. .text:00416429                 mov     edx, [edx+40h]3 A) d9 Z% f' P( H. T$ z
  9. .text:0041642C                 push    40h" U8 K; B2 [) K- e/ f
  10. .text:0041642E                 push    ecx
    ! _# c* e7 Y. O" v
  11. .text:0041642F                 push    1: \. `% Y2 O# H/ g  Q% R
  12. .text:00416431                 push    ebx1 U7 c# N/ n5 g5 s
  13. .text:00416432                 push    eax
    7 t3 _: ^7 U3 ]( S
  14. .text:00416433                 call    edx
复制代码
, y; k6 b. p6 g% |- ^% f
4 r% \* }. j& ]2 q
) r; {) H) S; n( b

" _7 L& t' g' H# {- B# ~+ N
3 c/ M" j. h3 N; ?  r8 B
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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