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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 * W2 n; n" [: c8 K4 B" l1 K
+ Z: O6 J. _+ e7 G4 F# }4 b( w6 y
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,, J, w  ^3 I' e' l' `
而是在RenderSystem_Direct3D9.dll里完成的。! h0 `: C7 c9 J/ W" t9 F( i
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
; I4 t* f. K5 @) b) z8 r要修改窗口化,就要寻找调用CreateDevice的地方。: ~. V" r- W& `6 {$ j( m% p

( A) f! {& K% o9 ^% Z6 N% V. v因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,$ s+ q0 A9 c/ L( c; @7 ~8 d
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
$ D( [+ s; ?; T9 R( Q2 R
  1. call    dword ptr [eax+40h]
    7 U+ c! n" }2 n4 F" `6 S
  2. call    dword ptr [ebx+40h]
    ( q2 M4 y/ _; j! k
  3. call    dword ptr [ecx+40h]  e# P8 {2 w' v: `( q, u: a
  4. call    dword ptr [edx+40h]
      A# u" J5 J& Y! |
复制代码

0 a0 v( p* W: ^% Q, _8 H" N5 r
/ W- z( c: r& F8 H% Y搜寻结果如下
) L7 u$ J1 m6 x! u# k
  1. call    dword ptr [eax+40h]  2处 OK
    7 W  M& P" D2 U+ C: v
  2. call    dword ptr [ebx+40h]  没有8 e0 P% d% z0 S+ E7 Z  ]
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    9 K6 d5 L. X; B" d8 s/ E1 k
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

, R& h3 c6 |( v$ k) h. t; ?4 X7 D3 c: d2 U+ S
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
/ U/ z% |0 y0 ~, M" k代码如下
/ t6 ~/ Q, R! {3 _( B. X* a* k2 ]  V第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]! r- N, [0 [+ Z2 x# `
  2. .text:10017F0A 51                                         push    ecx6 {- @6 p8 B1 `3 b9 B/ |
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    " D! F+ m) _5 L
  4. .text:10017F11 57                                         push    edi
    5 z+ T, t( b; v0 [3 _" l
  5. .text:10017F12 52                                         push    edx
      M# s6 M% X* N' r5 L0 ~
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    # _: V, T- r2 O$ {/ _  ?
  7. .text:10017F17 51                                         push    ecx, B# b7 e( z" _4 x9 S  X9 I2 z2 \7 ?
  8. .text:10017F18 53                                         push    ebx. g$ c* r0 G! T
  9. .text:10017F19 52                                         push    edx
    7 x; B6 N6 U0 L4 V
  10. .text:10017F1A 56                                         push    esi
    + s2 S6 l( l; Y1 b$ }
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

* P5 Q9 F  S6 r! N
1 X4 E- a' t0 h3 @: u: @( K( a' y
第2处
/ s8 D5 H) P8 U
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    * [- P% J; _! ~* h) w
  2. .text:10017F33 51                                         push    ecx
    # c9 Q# a8 U" s$ E/ x
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]+ J! u8 s& M- {
  4. .text:10017F3A 57                                         push    edi
    # |, i# J9 Z" s& I* S% F1 u
  5. .text:10017F3B 52                                         push    edx( g2 m  A$ T0 h) N
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    , `" \$ V- z0 P* E4 c! F, C
  7. .text:10017F40 51                                         push    ecx1 A1 H! [& w5 M7 q6 `4 r  v6 o+ Y
  8. .text:10017F41 53                                         push    ebx' o# m7 G/ t. r! k$ w5 Z* a! H
  9. .text:10017F42 52                                         push    edx
    : e! i3 x- J& D; @; |
  10. .text:10017F43 56                                         push    esi
      i2 [/ y1 o1 m8 `; H) D
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

. m5 w! }# q/ {
3 F; y7 g/ y* u' L! n- L' q8 g' U  n: e
补充,CreateDevice也有可能是以下形式- w; L7 R5 _3 q8 @. @  E/ x. u/ v
  1. .text:0041640D                 lea     ebp, [esi+604h]% c& ?7 ?7 j( N/ A" r: S' N1 q: u2 W
  2. .text:00416413                 push    ebp/ k; \0 y* r6 W1 b1 a
  3. .text:00416414                 lea     ecx, [esi+630h]
    ; f' T! R  M* }/ ?
  4. .text:0041641A                 push    ecx
    " N7 ~# J7 S/ d# X
  5. .text:0041641B                 mov     [esi+90Dh], dl9 }7 r% h: r4 `# N% N# I* b
  6. .text:00416421                 mov     ecx, hWnd9 [: D" b- R- F2 [  C/ s6 l
  7. .text:00416427                 mov     edx, [eax]8 _7 P: `* Q  J# w1 f8 f
  8. .text:00416429                 mov     edx, [edx+40h]6 y( W1 j  h+ |  b9 T) g3 x
  9. .text:0041642C                 push    40h
    ' c& ]6 C: H( u
  10. .text:0041642E                 push    ecx6 o- ~( ?( |- Y; c3 Y. z
  11. .text:0041642F                 push    1
    " g8 m/ f9 W9 k0 s  O/ M
  12. .text:00416431                 push    ebx" p, M0 }5 _7 Z" ~% I1 j; @4 ^
  13. .text:00416432                 push    eax
    4 F1 [* E( d' m' |$ S& A
  14. .text:00416433                 call    edx
复制代码
$ y8 K3 [0 P% @- _: ]; e, ]' g% r

5 ^* s* K( R. D; X7 E% v8 E6 z" R
9 A3 K+ ]0 _% s! P0 t
/ ?/ {7 Y7 s4 {- I, c( T# T
& A) \5 ~" n5 d/ T% {% Z
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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