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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
7 |$ I2 f+ Y+ ~+ O- B/ ?/ t6 h0 C4 z# r3 y$ Z( E
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,2 a+ l0 k4 z0 s7 g- k1 n! m  N
而是在RenderSystem_Direct3D9.dll里完成的。
- g5 {* i1 g( ^6 l; N( c由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
6 z- A8 D& C: H+ k3 A. T. |要修改窗口化,就要寻找调用CreateDevice的地方。
# D- M+ c2 f% R. d2 h% w) m9 _3 |& Z! ~6 R8 A. t7 `  ?( V- }- O0 m
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,/ K$ e8 k9 ^6 v. r
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)$ n  s. n* {0 c
  1. call    dword ptr [eax+40h]
    2 i$ ?0 Q5 r' ?$ l* s0 y) f
  2. call    dword ptr [ebx+40h]: v+ s1 z( Y, O  l! ^" J+ }
  3. call    dword ptr [ecx+40h]. L! I  Z/ ^* N. X& H) g
  4. call    dword ptr [edx+40h]
    , q  j$ P2 q% |
复制代码
9 T  g, _6 W" B' q  [7 R  U
& m/ |2 |2 f; r1 W
搜寻结果如下
, W. R, l; ]1 x' J8 A
  1. call    dword ptr [eax+40h]  2处 OK* E9 i  l9 w. q% i- B1 l, [) u
  2. call    dword ptr [ebx+40h]  没有
    5 s% {( \0 s' i8 X
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    * b. r2 R" ^: m$ g  f3 b
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
9 g+ J$ z" u3 R8 G( q

$ {- r+ h, r3 v5 d. z' o2 {! b. n结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
6 {' C$ S& ~* L代码如下3 p1 N1 |; j' P+ C  T" N
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    , O+ B9 G+ v  e; r3 M
  2. .text:10017F0A 51                                         push    ecx
    1 L$ k+ ?+ z8 T, ~
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    3 u- g3 @  S, q7 `/ l2 ?
  4. .text:10017F11 57                                         push    edi
    / y* e2 K! K6 [( R- w7 N
  5. .text:10017F12 52                                         push    edx# k1 `$ B2 d: e: w6 J$ x
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]" P. l4 B# _3 X- X: d. @
  7. .text:10017F17 51                                         push    ecx, M5 L% i+ r& z" Q( B
  8. .text:10017F18 53                                         push    ebx- {  t; X! U6 B( t" Q/ {2 M2 E$ ]" k
  9. .text:10017F19 52                                         push    edx
    - |% Y/ q1 ]; G. O) v; \  {
  10. .text:10017F1A 56                                         push    esi+ _2 U2 U6 R# q3 n* m8 d' C
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

1 f0 }" r" y  h  m
/ r1 }) U  m9 i1 A) q. i# Q, s$ Y* u; f
第2处0 l9 E0 c9 `* v9 D0 C
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    9 f8 W! I6 \! ~9 C
  2. .text:10017F33 51                                         push    ecx; m9 ]) T, \' S; h6 m. O
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    * k  F# v% v" \4 ~2 b3 _
  4. .text:10017F3A 57                                         push    edi
    : M( W$ G* o$ P/ y1 ?; Y5 J$ L
  5. .text:10017F3B 52                                         push    edx
    5 ?( S& F% b" m& D8 @. ?* Z
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]) B# r4 {& m( R  j" a% [, n
  7. .text:10017F40 51                                         push    ecx- l- m1 Q3 d: i! R; G
  8. .text:10017F41 53                                         push    ebx
    ( `* p4 k$ `6 o  D" c
  9. .text:10017F42 52                                         push    edx
    ' A' c4 N' u2 J$ t
  10. .text:10017F43 56                                         push    esi4 b+ M: Z7 f% Z! D. t/ K
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

, H2 o  [& [0 S9 ~3 |6 y# u- F* ~: l: |4 P' l8 J
+ c  u4 q: J$ [4 N) y* q# [/ E
补充,CreateDevice也有可能是以下形式
( e2 a& P  t0 j
  1. .text:0041640D                 lea     ebp, [esi+604h]
    % i5 v* Y+ r3 I! o7 K; R) [# C; \
  2. .text:00416413                 push    ebp
    ! w4 ]8 D; ]6 f7 f
  3. .text:00416414                 lea     ecx, [esi+630h]. k2 S0 ]) C2 S) y7 T( T% T4 c+ f- A
  4. .text:0041641A                 push    ecx
    " ~$ c0 B8 t, f7 L- Y
  5. .text:0041641B                 mov     [esi+90Dh], dl) w- d4 f/ ?7 X  ^
  6. .text:00416421                 mov     ecx, hWnd
    7 j7 u1 r$ I/ ^0 ~3 b2 g5 m
  7. .text:00416427                 mov     edx, [eax]
    3 j" e& n) O/ e! N% J9 u* `' t1 E
  8. .text:00416429                 mov     edx, [edx+40h]
    ! }9 ~* i. Y7 w8 {3 B# Z
  9. .text:0041642C                 push    40h
    9 B( S' O, V) @, R  @5 d- y
  10. .text:0041642E                 push    ecx
    + g  U9 z$ _. f6 ]- e
  11. .text:0041642F                 push    19 _- F% P5 g7 I/ f, N( q" q
  12. .text:00416431                 push    ebx
    # a. _" D- x! c2 ]! O
  13. .text:00416432                 push    eax
    6 T7 V5 k0 _* c* P% p
  14. .text:00416433                 call    edx
复制代码
% }' V& M9 U9 t# U2 |. c- ]( C  J
- k0 y: v# b5 _" T* _' W( f

- U" I+ x. E+ Y
4 [: i4 s3 p  I' P# A
+ E4 L. b/ k7 ^5 q8 k3 C& x+ n
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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