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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
! v% ~1 f, s! K: ^$ ~. h; M1 v- u4 m( [) _, v
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
! R" s' n$ @# S4 }/ j而是在RenderSystem_Direct3D9.dll里完成的。: D7 x! E. L& r. R  v
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
( G5 A$ U3 u4 w0 r& Y. c* O* G( Z要修改窗口化,就要寻找调用CreateDevice的地方。
9 _, n: x3 l. X* w6 d
$ l- g, l. M7 P# \5 E+ T  J6 n因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
8 D) L. D9 j4 |+ O3 C" l3 `9 u逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)3 E1 U* ^  k( Y5 S6 X) L3 K& S. p$ F
  1. call    dword ptr [eax+40h]# d" l$ Z" C0 D$ u* F8 C( U9 P. S
  2. call    dword ptr [ebx+40h]
    - O* D6 n- f7 E; _! P
  3. call    dword ptr [ecx+40h]" J7 V  D( y& _
  4. call    dword ptr [edx+40h]- a$ k: O. D& d' ]' d
复制代码
4 q/ o9 j  c# L! S0 \
7 Y' I. o, s  L* U3 a
搜寻结果如下
9 e2 t: d" x: g. P1 c4 N1 q# q
  1. call    dword ptr [eax+40h]  2处 OK
    8 c0 ~! s/ w: v! Q7 E
  2. call    dword ptr [ebx+40h]  没有
    5 D  Z. r: E& C, }- P' f
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    1 u. h4 m3 v7 S
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

( y+ i' F& r" B0 U7 e7 J+ k
# U0 |( C- o' t2 u9 `结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
. E& d) ^2 `+ R+ d代码如下! ?0 p  \% _) d" c) M
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    ! B# x2 [$ _3 ?6 U6 Y
  2. .text:10017F0A 51                                         push    ecx
    4 W! w5 @: L" E
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]8 ^4 k$ n/ _1 O/ O. }, ]+ x
  4. .text:10017F11 57                                         push    edi  X$ B% d+ ]4 M7 o0 v
  5. .text:10017F12 52                                         push    edx
    + a8 h; I. Q4 G. L% v
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    + U1 j- E0 v3 M9 K2 P2 t
  7. .text:10017F17 51                                         push    ecx
    $ {6 l, w2 k5 `
  8. .text:10017F18 53                                         push    ebx! K: X0 x* U1 ^
  9. .text:10017F19 52                                         push    edx/ K( g6 K  r9 L( K
  10. .text:10017F1A 56                                         push    esi8 i" R/ f1 _+ |
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

+ q$ B: F- A. p/ O9 Y% u& c# p6 _- G. s, E
3 i1 A  _7 J. L) D7 {- C# A+ F
第2处
! e4 v- `. |& d4 }
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]0 a  b* w4 j% d1 J3 L
  2. .text:10017F33 51                                         push    ecx
    $ E6 m: F/ L% E: c: q" w  a
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]# I/ q0 Y# a: J9 H7 M/ x
  4. .text:10017F3A 57                                         push    edi
    / r. b" \4 I3 \# U
  5. .text:10017F3B 52                                         push    edx$ @6 {1 a! X% C& t2 Y4 e/ L& T
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]2 e( `2 i2 _: @5 U
  7. .text:10017F40 51                                         push    ecx; a9 U- W; a& z- w5 I6 J/ n
  8. .text:10017F41 53                                         push    ebx
    2 D8 u  Q* B6 _' ?1 v3 Q
  9. .text:10017F42 52                                         push    edx3 Y% a/ f: C0 b* u# m! v2 n
  10. .text:10017F43 56                                         push    esi
      X% y& A% V, W- H
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

" @1 e: d7 ]6 B2 I: o0 B" T7 y
1 a' ~' j- I0 G0 {
) c5 R0 m! g7 `/ R补充,CreateDevice也有可能是以下形式7 s$ f! ~6 q/ t8 ^; R4 X
  1. .text:0041640D                 lea     ebp, [esi+604h]- ?, \: k; H. j- v/ a" e' ]
  2. .text:00416413                 push    ebp& U9 X  x, ^6 R' v7 o
  3. .text:00416414                 lea     ecx, [esi+630h]# F) M6 w" \5 H# p/ N: p/ A( D
  4. .text:0041641A                 push    ecx
    3 R; w0 F; s# u. l! X7 Y, ]
  5. .text:0041641B                 mov     [esi+90Dh], dl
    / b  ?$ K* U2 q* w9 W% S6 G9 K
  6. .text:00416421                 mov     ecx, hWnd
    5 o$ I# F' l' ?0 G' ?
  7. .text:00416427                 mov     edx, [eax]
    . n: r/ r- q" V; H$ A! n
  8. .text:00416429                 mov     edx, [edx+40h]
    7 a* y6 H" W- `! N4 H
  9. .text:0041642C                 push    40h
    - l( M! W0 A" V6 F5 n
  10. .text:0041642E                 push    ecx
    2 x- ^4 H1 L, Y
  11. .text:0041642F                 push    14 v/ o- s* H4 K/ M$ w! w  Q
  12. .text:00416431                 push    ebx
    . j9 F. E1 O9 b! U( p% y) L
  13. .text:00416432                 push    eax7 ?$ R0 `/ Y6 P4 G+ a, z6 O; P
  14. .text:00416433                 call    edx
复制代码

) ?3 w% ?5 M  t! t" m7 u
' ^1 g( }& X6 c/ l+ `7 M9 @! d7 m- A( b' v; d; G5 n  R

2 Q8 a$ P8 v9 p
$ V$ k. u( D1 s6 x& f
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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