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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 * E! J& F9 s: [# T1 J# D% a

: P5 p2 ?# F; Z# r4 I# l8 ^' n这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
3 l- `) L! e' d. _0 x- d# p而是在RenderSystem_Direct3D9.dll里完成的。" q4 C& c/ e$ O! V- s
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
* v" B" r# j- Z7 a要修改窗口化,就要寻找调用CreateDevice的地方。
/ i) h" w( h" s( n- c5 f+ E1 W3 F  M$ m
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
) r* D3 E( W2 Z$ H* ^; T5 E! `7 E4 B& Z逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
1 W( X  C& s8 `( x( ~
  1. call    dword ptr [eax+40h]
    - M# U- W' j$ j
  2. call    dword ptr [ebx+40h]* y9 L9 s: y* q$ O/ S
  3. call    dword ptr [ecx+40h]  ?6 i0 @; r" W/ O- ^2 k5 n; _0 K0 q
  4. call    dword ptr [edx+40h]  D1 J8 W) N# M6 y8 s( k+ M8 J
复制代码

5 B% ^" J2 I* Z+ {% @
9 x5 L# `& n/ Y8 V" C搜寻结果如下
: f, ]0 L: b! t
  1. call    dword ptr [eax+40h]  2处 OK
    7 n/ B0 v  S" Y6 F% C) R8 V
  2. call    dword ptr [ebx+40h]  没有
    6 e" P. p6 X. y. ]! Z% p: K
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对$ o) ^7 K2 k; |, S: s& T
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

3 Q" ?( ?4 K: J2 ]1 s$ x5 x% a" f  ~3 ]8 U
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。8 E. q0 q0 v+ R# S
代码如下
! W( ~9 a, |% C! |第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
      _7 I  j9 P# [- n# M& {$ {
  2. .text:10017F0A 51                                         push    ecx
    7 }: s2 k. _4 o9 |* C4 \& C
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    0 G, N6 v6 F: w! s7 Q1 O
  4. .text:10017F11 57                                         push    edi4 e4 t1 f/ A/ w" o  @5 L
  5. .text:10017F12 52                                         push    edx
    : `7 c1 X/ T4 R# V3 B
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]. ^. t/ I+ v6 d( ]$ H0 q$ `
  7. .text:10017F17 51                                         push    ecx
      G# z  O' c6 s8 r2 A
  8. .text:10017F18 53                                         push    ebx
    2 r3 |3 X9 c- k0 m& T$ ^/ L% s0 J
  9. .text:10017F19 52                                         push    edx* J, V# N; r; _/ }8 W7 H- K# I- |/ E
  10. .text:10017F1A 56                                         push    esi
    & S- ^/ x! b, {! [- V
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

/ z' Q3 m9 n' z2 U) q  i
- h1 u( ^( i& w; V/ H7 v8 ], A; w" t, r7 X# w0 W3 d  p) X. k
第2处
# Y2 O5 A3 e: H$ v
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]" ]# C: V7 X3 @4 e  [
  2. .text:10017F33 51                                         push    ecx  N! ^9 Q& K! V) n& D. _% E# V
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    0 q9 p# j7 o4 m& }0 H3 e, N
  4. .text:10017F3A 57                                         push    edi
    , S) N3 {/ X5 T2 a) f( b+ L% S4 N
  5. .text:10017F3B 52                                         push    edx4 {$ l0 K* x7 L8 z( Z( M1 R
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    3 K: K0 p0 i- n, G
  7. .text:10017F40 51                                         push    ecx9 J4 A" X5 H# H" v5 N2 L+ V" E
  8. .text:10017F41 53                                         push    ebx
    0 Y* T$ j0 R8 \- f. c
  9. .text:10017F42 52                                         push    edx6 v& t8 ]7 ?. I0 n7 ^: L0 B! q
  10. .text:10017F43 56                                         push    esi
    / }7 W; _9 u" _2 d, S
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

. J5 l( X: j, o8 g- h
! b' W! m0 @# u' a/ k* d; U# ^5 x2 ]+ s& h8 ?
补充,CreateDevice也有可能是以下形式
/ x" I3 Q) t/ p, s  M- u; e" l5 n
  1. .text:0041640D                 lea     ebp, [esi+604h]8 a* A; g; z! \$ a$ U1 [' x
  2. .text:00416413                 push    ebp1 v! L8 w3 o: [, [! S) B5 T. b1 H
  3. .text:00416414                 lea     ecx, [esi+630h]
    1 P! m  V$ o1 L/ c& L$ P0 h
  4. .text:0041641A                 push    ecx; D4 D8 L/ A! c& }8 m
  5. .text:0041641B                 mov     [esi+90Dh], dl% v! J& h# X6 }; L) N: v
  6. .text:00416421                 mov     ecx, hWnd
    ' ^0 |3 ~0 t/ a. x+ d
  7. .text:00416427                 mov     edx, [eax]% P: t6 \0 i6 \" D4 [+ a0 s/ A' c
  8. .text:00416429                 mov     edx, [edx+40h]* y+ }0 G1 \5 f- [' W
  9. .text:0041642C                 push    40h
    9 F2 P$ S: r$ f! T
  10. .text:0041642E                 push    ecx% F# H* x! o* d: j) D
  11. .text:0041642F                 push    1- T( z$ N+ n1 W! v% ]7 B! e
  12. .text:00416431                 push    ebx
    & W) y: b& `  K- ~/ J- f, U- t# r
  13. .text:00416432                 push    eax
    ; a: G$ o! u6 X0 k0 T9 y
  14. .text:00416433                 call    edx
复制代码

3 q& D6 j8 }: e, p' a
# G' x" O& C# s  I8 P
6 Y1 M9 R) K# W9 [7 g+ u" i# P' i$ @/ g4 p4 p# Y( h

: `+ c2 z$ [# D
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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