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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
0 T9 D) d5 U+ X3 N2 z) A
- p1 D5 ?! [! r2 {7 F这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
6 f6 G1 _2 a7 T9 p6 l" M: |而是在RenderSystem_Direct3D9.dll里完成的。
' O' j6 Y0 p6 U) ~' `由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。1 q' e- L) D" F' A$ P* G! }
要修改窗口化,就要寻找调用CreateDevice的地方。2 n! z3 T# v* N4 K
8 b3 D0 R5 J, k. A- D0 X6 ~
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,, r5 W5 L" I1 r% @" o
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)7 f8 M+ ~: m) b- h0 @
  1. call    dword ptr [eax+40h]
    # {" s7 _0 u8 ?5 R: V$ i6 ?, D  m
  2. call    dword ptr [ebx+40h]/ E) o/ J3 A& P+ O* @
  3. call    dword ptr [ecx+40h]
    / e$ W3 Y- P. V; V& C+ A2 e
  4. call    dword ptr [edx+40h]. g! {* V/ @" S; p+ y
复制代码

& l; Q; t. D& L  q% J' h" K3 C
# R/ Y1 ^3 v( y, e+ `; S搜寻结果如下
2 o- U3 D  W1 y
  1. call    dword ptr [eax+40h]  2处 OK
    ( ]4 f/ F, B  F; c
  2. call    dword ptr [ebx+40h]  没有& N( |; U" W6 v$ C0 E. y8 J
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对# N* r! c* E/ B" K7 z+ e  `5 V
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

/ [/ S% W0 j. q+ h  L! L9 U% a. a- A! K/ b. P
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
0 q7 \! V- ^3 r代码如下! d0 X7 X; R: b% c1 e. x% f
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]4 I8 l5 z( B* b" X! g
  2. .text:10017F0A 51                                         push    ecx
    . `2 Q. T) C1 s1 X$ i9 H
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    % I6 m. E& }' L6 ~( W+ l1 p0 x
  4. .text:10017F11 57                                         push    edi: o7 p9 l5 d5 \& n# E1 k
  5. .text:10017F12 52                                         push    edx  A+ G* @9 S1 S" @
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    - c7 X) d4 c1 p4 ^1 S& P& I
  7. .text:10017F17 51                                         push    ecx' l3 Y( L6 @6 ?( @* @
  8. .text:10017F18 53                                         push    ebx5 |" D* i* O9 X% b
  9. .text:10017F19 52                                         push    edx
    " s# ]. y$ _, b  S1 K) I' i% j+ J3 ]
  10. .text:10017F1A 56                                         push    esi. F% H. f; D( E! D7 G, x
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
: C' i, l3 j; o! D$ o
3 @0 b7 v2 m9 O8 W1 r
: I! w# j7 d4 B8 W; u0 Z2 A! }
第2处
5 Y! u; \$ S/ n4 v/ }
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    ' q9 x" F# l5 i! x, d
  2. .text:10017F33 51                                         push    ecx# z( n7 r) a& L
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]+ P* y4 y2 {0 Y. R
  4. .text:10017F3A 57                                         push    edi% q2 W! o$ Z8 [# y3 @( h
  5. .text:10017F3B 52                                         push    edx
    9 y/ \0 e, G# U# X' h
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    6 M  ~7 |- |: E' x( j# G2 {7 J
  7. .text:10017F40 51                                         push    ecx
    . h) W3 O/ g+ A6 z7 D8 U
  8. .text:10017F41 53                                         push    ebx
    2 f/ I+ R2 p/ q2 u6 C- t+ }, A
  9. .text:10017F42 52                                         push    edx
    6 t( k, P0 @0 u6 Z3 U6 n  }, z
  10. .text:10017F43 56                                         push    esi; [4 {3 X3 e% e) }: }
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码
7 L; E' \' H' ?' i8 Q  i8 V8 E

( M% |3 n  F6 J6 D9 \# I/ \& k8 x8 ]: ?: M: o4 X% d9 o- ^
补充,CreateDevice也有可能是以下形式
( J4 P5 V( R9 R" n  L. w
  1. .text:0041640D                 lea     ebp, [esi+604h]
    % B" }& g, l4 h5 }
  2. .text:00416413                 push    ebp0 X9 o% i3 Q' r% Y& D% d  Q, m
  3. .text:00416414                 lea     ecx, [esi+630h]
    6 i5 W' }+ H+ J4 d
  4. .text:0041641A                 push    ecx/ h' ]# M/ K/ e( c6 q8 H/ c
  5. .text:0041641B                 mov     [esi+90Dh], dl$ R0 l! l/ p# G% K, A
  6. .text:00416421                 mov     ecx, hWnd/ _6 {8 Q, a$ a$ X7 {. q
  7. .text:00416427                 mov     edx, [eax]
      t9 q# \$ I( c) E
  8. .text:00416429                 mov     edx, [edx+40h]6 `( q" Z; p9 `8 E
  9. .text:0041642C                 push    40h6 Z& {# O7 ~6 }0 J% O2 o
  10. .text:0041642E                 push    ecx7 O( N! z4 G) Q
  11. .text:0041642F                 push    10 _. ^5 }! M) w$ {7 j( O  U! O
  12. .text:00416431                 push    ebx0 ?) m: N0 u0 J4 P6 k6 ~
  13. .text:00416432                 push    eax
    ' P8 `" Q: d3 ]8 j5 D0 H! C4 ?/ q* ?
  14. .text:00416433                 call    edx
复制代码
, r, I, p+ j" B, |, D# d. s# w

, r# y; Y* E: b' \3 _4 z
% N7 B' N3 c9 v9 f: ]( S* i) [5 x3 q- b( U4 a6 U8 ^; [
" h1 G: y+ d  i
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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