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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
( X2 k3 P: Z) G2 J- N8 m* s" K! B' q3 r) h9 H; R7 S" P9 u
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
' t( k2 t  k0 {2 T1 x% D8 M而是在RenderSystem_Direct3D9.dll里完成的。
0 ?- @! J. e9 d) T- G8 q由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。' i2 ^3 ^8 x. i7 T4 R3 |
要修改窗口化,就要寻找调用CreateDevice的地方。8 Z" }2 G6 {, C

/ P' @: {0 `* g9 |% @! U  w+ B因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
! \& J) r% D* w0 R! O5 F: a逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
  C/ s: H/ P2 f. B/ ?: L6 |/ u' |
  1. call    dword ptr [eax+40h]* U# y0 ]. t) T: ^: D" C
  2. call    dword ptr [ebx+40h]( R; H0 o: V4 S% Y
  3. call    dword ptr [ecx+40h]
    ) U( `. d+ ]$ n& `) }
  4. call    dword ptr [edx+40h]. ?5 `$ q5 Z, l9 ~& j7 u$ S6 y6 [
复制代码
2 w$ j: P5 W: m1 z& q/ C

3 \: D, ?' ~. ^2 e: P( {0 ~. V搜寻结果如下( B1 `. m7 L% N# z+ i' G) K
  1. call    dword ptr [eax+40h]  2处 OK; B! m; s% d0 s! N/ r5 Q
  2. call    dword ptr [ebx+40h]  没有& ~6 b. k! w  S# j
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    ) E* g( }) c6 }9 b
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

; O% R% f$ z$ L! V$ B: }7 V; ?! Q4 l4 z. I% s  \0 j' [% S
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
! @) ^/ @; W( b! W代码如下* g2 ?0 w2 [5 O, N2 q. y# |- \
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]1 h% Q- A' V" E. @, X3 W7 R
  2. .text:10017F0A 51                                         push    ecx
    - B, F' C* r- Y1 u# _; b* Z
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    5 M7 R9 N- n7 S! B
  4. .text:10017F11 57                                         push    edi
    : I3 g) ]3 m6 T$ S1 @
  5. .text:10017F12 52                                         push    edx4 B5 e" ?. V& v% L: U& E' D
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    0 t6 u* g/ P+ D/ T, B% Q
  7. .text:10017F17 51                                         push    ecx; a* R7 g2 ~; [: O
  8. .text:10017F18 53                                         push    ebx
    , @2 W0 h& u0 M
  9. .text:10017F19 52                                         push    edx
    + y' p7 ]. `$ t% o+ M& Q  V" p
  10. .text:10017F1A 56                                         push    esi
    : @( R. O+ F2 }+ i2 ~7 C
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
, t; S  M8 m/ t% ?8 G6 p* n) F6 I

. A' t. e1 Z7 X% a7 ~" c' Z' t# c
. ~9 q0 b3 S2 X2 K! y第2处. m  e' I' d6 }+ O- d% J1 ^, `+ n' H
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    - K0 U- o' N( [: H8 {! r8 V" u
  2. .text:10017F33 51                                         push    ecx0 z: G) k/ i' t* K+ V( g8 k! s4 h
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    # b) \9 N$ w( r; O# ]" c: m
  4. .text:10017F3A 57                                         push    edi) O  q& l) u6 C( p1 \# Q, u* n
  5. .text:10017F3B 52                                         push    edx/ _) l6 B& c5 i2 }: o" t! z) b  ]
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]/ f# O3 g! W* A1 W. u4 Q
  7. .text:10017F40 51                                         push    ecx4 ?7 ?6 F- v8 Q9 Z* X
  8. .text:10017F41 53                                         push    ebx
    ) G6 P3 j7 Z* G6 C8 M: O/ u& k
  9. .text:10017F42 52                                         push    edx/ U7 }1 u! O7 t6 P9 Q3 g$ T; j
  10. .text:10017F43 56                                         push    esi# Y4 j7 Q6 I: G3 h1 w- Z
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

: ]2 u/ R) k- U# n3 y; D, k- \4 E* A3 o) w! k5 i

4 \. c2 E, g7 c6 S补充,CreateDevice也有可能是以下形式
5 n" X) y* _0 n' v- v5 r2 V
  1. .text:0041640D                 lea     ebp, [esi+604h]
    + V; k/ X+ W: b+ b2 G
  2. .text:00416413                 push    ebp% Y% A6 Q9 M, Y5 [- o- m6 a5 }: K
  3. .text:00416414                 lea     ecx, [esi+630h]
    0 D3 e* u: s  P+ R" }4 ]% y% X4 z
  4. .text:0041641A                 push    ecx
    " ~8 q6 y% x7 e" C- A' V6 S7 t
  5. .text:0041641B                 mov     [esi+90Dh], dl! q+ v) a  D* A
  6. .text:00416421                 mov     ecx, hWnd. r2 F4 O/ `# t3 J( s" ~
  7. .text:00416427                 mov     edx, [eax]
    " W. u; h. s0 I5 A) U
  8. .text:00416429                 mov     edx, [edx+40h]
    ! Q* `1 S  X% i* z" T; _
  9. .text:0041642C                 push    40h* f5 `$ [+ c$ y
  10. .text:0041642E                 push    ecx
    $ M! S) {" _: q+ V: Y- H7 r
  11. .text:0041642F                 push    16 V; Q3 M7 j" w. ^& s+ [2 y; n
  12. .text:00416431                 push    ebx/ [8 \0 U  c7 j# u! i3 u
  13. .text:00416432                 push    eax
    $ G4 [/ B/ H8 L" P8 v3 e5 P. ~( Q
  14. .text:00416433                 call    edx
复制代码
8 w# N0 q: W5 j

7 N  n5 q) r* H9 ^  l
+ ^9 C& ~! @& ^8 v  R1 G. S  ^; U. r* s! i9 b) d' u' g

6 y0 X( q, U3 a; Y( O# ^
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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