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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 * O. V! v. w6 [5 P5 X+ y9 t2 q& a

3 p9 y7 S& r: Q; n这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
* r9 D; i: U6 y0 J/ ?" x而是在RenderSystem_Direct3D9.dll里完成的。# y& {, _; l# A5 o
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。# v; W" ^1 @' A# e) ~4 |
要修改窗口化,就要寻找调用CreateDevice的地方。
& g- J4 Q: Z: {! a  |: n: P' K* ^3 v" w+ K' t
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,4 k: U6 q, v% g# t$ F0 J
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
# C# ]" y7 F$ T) I8 K& G
  1. call    dword ptr [eax+40h]
    1 L$ I8 _: ?9 l4 @) X5 N
  2. call    dword ptr [ebx+40h]$ J' Z/ A1 d2 b  S) A6 ?+ u6 r
  3. call    dword ptr [ecx+40h]2 F0 a0 a9 Y2 o. u
  4. call    dword ptr [edx+40h]
    / h. `" a. I' P9 H- n+ t! H7 ^0 W
复制代码

2 I, b  W4 X) r1 v8 p
5 C, d& V$ {6 ?搜寻结果如下% ]& O+ P% q; y: y; I/ o" o
  1. call    dword ptr [eax+40h]  2处 OK
    * A# Z9 m5 _7 R
  2. call    dword ptr [ebx+40h]  没有
    ) c; @, z5 a! ~$ {
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
      \6 l& D+ P8 r, d1 J1 ?7 v
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

* ~5 s- A0 a  j% h, J' [4 @
* B. M9 m6 a6 s$ ]4 d( p* i/ T# R结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。: J' d1 l+ q) K( |  L5 q9 N
代码如下" ~2 m+ F% C. Z4 N$ z* X1 d
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]! W- W& U5 W* h1 @- H
  2. .text:10017F0A 51                                         push    ecx
    ! P- R( c4 g! r7 T/ q+ z& L. M9 W! t
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    * a' I8 G- e; n6 @4 v, R
  4. .text:10017F11 57                                         push    edi
    8 h, U1 T4 G0 \* c/ ~' @) n: _
  5. .text:10017F12 52                                         push    edx( d* n* ^: w0 i/ R
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]2 w+ o# F! ^/ n3 w. `1 Y, b
  7. .text:10017F17 51                                         push    ecx( ]2 r" M- k* g$ L
  8. .text:10017F18 53                                         push    ebx
    0 l6 {1 q+ X4 E! @: x( J
  9. .text:10017F19 52                                         push    edx' G) `) J5 W5 ^; A% `
  10. .text:10017F1A 56                                         push    esi
    ( {, @( O0 Z1 a& A! H
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
8 m; V" a$ Z% l0 o, J4 K
" F  [2 f1 H1 ~* y' P9 m

$ s) X, q! b0 n, j/ b第2处
3 x8 \8 U1 `4 v* ~1 l
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    . y' t( J5 u$ ~) R  T+ H; p! }6 \+ x
  2. .text:10017F33 51                                         push    ecx
      L3 `$ \. w4 j
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]. ^* p4 P& [' v9 @
  4. .text:10017F3A 57                                         push    edi
    % _/ {/ q/ s# k$ I& [; f
  5. .text:10017F3B 52                                         push    edx" V4 w0 d; I9 t  h
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    ' N$ ~% [7 _* c5 q1 \
  7. .text:10017F40 51                                         push    ecx  v, C! C; R4 _' h/ Y# ~# i
  8. .text:10017F41 53                                         push    ebx
    2 ~1 Q" V% T6 S' w% f! k
  9. .text:10017F42 52                                         push    edx
    # ^, Y2 i9 k+ f( p4 G
  10. .text:10017F43 56                                         push    esi/ i& D+ N- I8 y: E# b/ r; g
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码
" h9 a1 w" c. y
- I7 J8 }, _: r" V
$ L1 g$ s7 ]: f5 v7 ~, Q
补充,CreateDevice也有可能是以下形式" B8 p, p0 B( }3 ~5 J+ m
  1. .text:0041640D                 lea     ebp, [esi+604h]
    * C- J. a; r! F2 Z+ r
  2. .text:00416413                 push    ebp
    ( Z7 y9 ?$ g* i
  3. .text:00416414                 lea     ecx, [esi+630h]
    5 k. r: L: n* ]4 N( ~/ r
  4. .text:0041641A                 push    ecx3 Z( b. @0 |% M9 L6 Q) r1 x5 R
  5. .text:0041641B                 mov     [esi+90Dh], dl
    8 O9 _: G  g* z3 ]0 A! H( p
  6. .text:00416421                 mov     ecx, hWnd
    . p% l9 V8 U: T1 F3 v1 g
  7. .text:00416427                 mov     edx, [eax]% y1 Q7 {* s: K
  8. .text:00416429                 mov     edx, [edx+40h]
    / Z" ?7 g! K4 B2 y
  9. .text:0041642C                 push    40h# F, A. l: I- r6 @) H
  10. .text:0041642E                 push    ecx0 c7 s% P* H6 B. r0 E+ x
  11. .text:0041642F                 push    14 R; j  h5 B: j; j& x
  12. .text:00416431                 push    ebx3 K& t+ X6 y5 q  y- t
  13. .text:00416432                 push    eax6 h/ f' [8 ~/ v& x: @
  14. .text:00416433                 call    edx
复制代码
4 u: l) _# ]" S

" A, R  d5 b* v9 A; c. e; Y/ Z: z) {8 F7 x8 B4 v' {0 j# r2 ~
& U8 Y- y% @; V% b( s7 [; Y

; V. O/ N0 R( Z; u) 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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