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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 / ?; f. v$ A/ |1 ~: q

! ]& d! o$ n: H. p2 @; f+ L3 E这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,2 O6 u) f/ w- r$ [
而是在RenderSystem_Direct3D9.dll里完成的。
& k) ?+ P3 U/ y+ _7 R3 d% c- m由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。' r0 @, K6 ?& Z/ I. ^" y; E. h
要修改窗口化,就要寻找调用CreateDevice的地方。
9 C' P0 a! }3 i2 M
6 W; g5 v, D- W) Q3 @因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,. A7 O- X7 c, _  U6 y
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
% L- q) ?+ }' P7 n) e
  1. call    dword ptr [eax+40h]
    5 z  n  F* b* h1 c. P
  2. call    dword ptr [ebx+40h]
    " M; n! h! O' x* h# T! S
  3. call    dword ptr [ecx+40h]
    ! C9 {! a! ^8 t/ D$ e! b' x2 B
  4. call    dword ptr [edx+40h]2 j3 U+ h" k% V6 F3 d8 {7 W
复制代码
' v$ a% g- h1 v8 t2 Q

9 r3 e* J# i2 K& D* N! l搜寻结果如下
9 Y0 ?( Z9 T0 w- l4 O" O; f9 m
  1. call    dword ptr [eax+40h]  2处 OK
    & i  l1 t* _5 {) X/ t- J2 }4 z
  2. call    dword ptr [ebx+40h]  没有
    : r# R! |, Y, Q% j4 ]4 y/ R  \" T
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    , G% F& t7 I( T7 g1 a  d) F1 c
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
9 M+ F5 A, Q8 A9 H) f

  d# n. n' G( J1 M结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。% {( j& [8 |; Q+ k0 z9 g* {
代码如下# Y) w0 }. v' ^8 f- `
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    ' U$ [2 p- a. P7 @
  2. .text:10017F0A 51                                         push    ecx
    6 e, d& C, j, s& \; {$ |$ I
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
      U4 o7 I5 @* W" e1 }( \  z% ^
  4. .text:10017F11 57                                         push    edi
    ' w" G! B8 E. F+ `6 O# a! \6 i
  5. .text:10017F12 52                                         push    edx
    : Z- I$ x' }& G- c: T" u. Q+ d- w
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]7 J/ m3 G, f  j0 z- Y  P% ]
  7. .text:10017F17 51                                         push    ecx) P8 t) v- G$ @7 C( Q+ J& g
  8. .text:10017F18 53                                         push    ebx
    # ]) L+ ?8 y0 P$ M7 z% ^; j
  9. .text:10017F19 52                                         push    edx
    9 y7 T& X. @  o. r
  10. .text:10017F1A 56                                         push    esi
    ! v) |0 \2 N+ z9 V# f
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

* v0 w! _% d. K9 ]4 L0 i* }2 H7 ~
4 f$ c3 C' E8 l% d5 {5 Q8 d' y: i- [, x/ y; L
第2处- I! P) e% ^5 {' y' @( I
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    7 H) `2 u9 P+ o+ U8 Z6 l- p$ e8 ]! t
  2. .text:10017F33 51                                         push    ecx$ c2 u( Q5 i1 \+ t; c6 P& E
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    6 m: i, I; ?5 a  i& @1 \7 E3 ?
  4. .text:10017F3A 57                                         push    edi
    ' K/ M* e' {# L
  5. .text:10017F3B 52                                         push    edx  Q! M- `2 j4 f0 b' L8 l
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    6 r$ y! \1 F: H$ U) i5 g
  7. .text:10017F40 51                                         push    ecx
    # G0 U/ h  D; J: ^6 s7 k
  8. .text:10017F41 53                                         push    ebx5 E2 L, ~" U, h, x- ~2 d/ k# k
  9. .text:10017F42 52                                         push    edx
    8 i# F& p' w9 I4 G* A
  10. .text:10017F43 56                                         push    esi
    % q& [  y& w( K% D, @' W4 r
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

- _, C  V* W5 v4 Z! Z- [- o% S+ _( d6 ^; W
& _) B4 O0 U! I; g8 g* P
补充,CreateDevice也有可能是以下形式
8 w: P; u! q9 Q/ h, P' @2 i
  1. .text:0041640D                 lea     ebp, [esi+604h]8 x: G7 t0 N2 Y. ^; A* V
  2. .text:00416413                 push    ebp" U8 o1 Q4 Y1 z1 Y/ a4 n# u3 u! c
  3. .text:00416414                 lea     ecx, [esi+630h]2 M; W- Y# {; ?* _, Z+ F- F
  4. .text:0041641A                 push    ecx
    : j5 g: J& d! \1 x( @7 j  s' _- j
  5. .text:0041641B                 mov     [esi+90Dh], dl
    8 m# K# h1 g1 c  }1 ?8 P
  6. .text:00416421                 mov     ecx, hWnd' _/ a2 ?) u' g5 {$ \
  7. .text:00416427                 mov     edx, [eax]
    : E3 a3 f2 u0 h- u
  8. .text:00416429                 mov     edx, [edx+40h]( Z0 \( P' h4 O. z; f4 s
  9. .text:0041642C                 push    40h* `" ^' ]$ g) I. [& y+ m' V
  10. .text:0041642E                 push    ecx
    & x9 |6 H; F! B8 J( o
  11. .text:0041642F                 push    1
    - }" K9 V1 _- i/ e/ j! p4 i- s
  12. .text:00416431                 push    ebx, j/ m+ W8 K. S5 ?7 ?( \' R$ E
  13. .text:00416432                 push    eax
    5 f) o3 T& O  j* J+ x! }5 F
  14. .text:00416433                 call    edx
复制代码
7 G; u  r* k& P+ A( G7 `0 X

9 }) W6 Z. _6 v! U- j
- o: Y7 Z2 \1 g6 c# G4 F( g1 c
6 ~' f4 e* @. d2 k* y( @; S* P1 y# `" S
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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