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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑
1 [! f) t9 t" S: X4 u- B0 [3 A# W# ?3 B+ {! w* w8 N
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
- ^6 q% x# q0 X8 M4 I  G7 `" O6 y而是在RenderSystem_Direct3D9.dll里完成的。9 Z: R+ g5 F! S, S" r% n6 T
由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。
0 y! y; e! S) i" V0 l要修改窗口化,就要寻找调用CreateDevice的地方。2 C8 {: a( t3 ], G7 B$ b7 d
* O5 [7 C8 j! Y0 D7 |5 s
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,5 q) h2 a' D5 k! \
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)
9 b; X4 o/ m2 N2 d* A! o; w* {
  1. call    dword ptr [eax+40h]
    # e) o) @8 y* s+ ^! ?) X
  2. call    dword ptr [ebx+40h]
    5 {9 A9 n8 e8 w, h
  3. call    dword ptr [ecx+40h]2 y5 T7 s4 c' v3 d
  4. call    dword ptr [edx+40h]" k! C/ @8 g3 L6 S! `9 a# M
复制代码

  n  m' ?9 X& m" b$ E6 l. Y4 @% p5 S% L' D4 D* h- ~) `; S& V
搜寻结果如下
/ c- _3 K$ T% U! e0 E5 {6 h
  1. call    dword ptr [eax+40h]  2处 OK9 B  O: s5 t6 x! X
  2. call    dword ptr [ebx+40h]  没有8 O6 n& ?6 A' U' X- U
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对9 ~$ Z" Z% |: `& F( X6 B3 S
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码

0 y! }  S5 |/ W
( \# f! O  _2 q, q( O7 P; {结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。5 w3 m7 ~( q% b$ `, y
代码如下* C& G' G, ]: J
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]- i) L* G7 i; _- h9 ~# I% W) R/ \
  2. .text:10017F0A 51                                         push    ecx
    8 w% M/ j* |  F: y0 s
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]1 [+ a) k2 w! H) V  y0 g7 D! w: Z
  4. .text:10017F11 57                                         push    edi; `# R. m; G) Y; Z
  5. .text:10017F12 52                                         push    edx! R# r9 B  C2 [0 R* m$ k2 I8 }; \3 J
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]" G& s& Z6 J2 z- d" }$ k' o
  7. .text:10017F17 51                                         push    ecx
    7 D% J9 g% |( a6 `, ~3 z1 w
  8. .text:10017F18 53                                         push    ebx
    - k8 `7 |9 O- U! v4 S+ i. B
  9. .text:10017F19 52                                         push    edx
    8 H( c/ S  h/ T, B' Y, Q
  10. .text:10017F1A 56                                         push    esi: o: X/ K- Z# R6 z
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
' h# p( V% X- Q' l( {9 }
8 c4 q5 p. `  @6 G2 ^

  h$ a5 Z  L; m! G第2处( _" J% R. S& A$ v3 N
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    4 r$ W/ ~7 @+ Q. i
  2. .text:10017F33 51                                         push    ecx/ w& L% @5 d% d% ^4 ~' c2 b
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]* c) x, N, t6 ]$ |# A. q
  4. .text:10017F3A 57                                         push    edi- o( N, C8 `% R# M+ z9 i
  5. .text:10017F3B 52                                         push    edx. n' E8 |6 T9 \3 ^- p" F) _
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    $ S2 I  J8 X% e7 j4 l: ]
  7. .text:10017F40 51                                         push    ecx
    5 q& I- f1 F& y& w3 {$ W6 I0 r# o
  8. .text:10017F41 53                                         push    ebx
    ( U# s( i" L& A! q+ h% o9 l
  9. .text:10017F42 52                                         push    edx
    ' |& U0 N8 v5 S3 o! v, `$ M* W
  10. .text:10017F43 56                                         push    esi. w# z' |1 C4 \. _. L' H
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

" n5 y8 A! E& A! ~2 Z+ o
6 p& \8 h0 Y) P+ I0 t
$ b* X5 x2 d* S/ l! d% j补充,CreateDevice也有可能是以下形式+ b" T& U- F! X, E; F8 j3 X2 w0 v
  1. .text:0041640D                 lea     ebp, [esi+604h]+ t$ O- \9 V1 _( w+ c' L7 V
  2. .text:00416413                 push    ebp
    9 f1 N/ O% u. {9 l( O" v3 O  l
  3. .text:00416414                 lea     ecx, [esi+630h]
    4 E% c: z+ ^' h% O" E. f
  4. .text:0041641A                 push    ecx  r7 e0 q; M* x) \4 ~+ E
  5. .text:0041641B                 mov     [esi+90Dh], dl
    : o/ _9 z/ g/ o0 z# m8 x+ X) I
  6. .text:00416421                 mov     ecx, hWnd" C6 K. O* V9 s; z% d4 ?8 r
  7. .text:00416427                 mov     edx, [eax]
    - [% w2 t6 F) w: q" n
  8. .text:00416429                 mov     edx, [edx+40h]4 z: @5 c( i3 D  k( x& U- N& B) L& e
  9. .text:0041642C                 push    40h4 }/ }& n, ?$ A  O
  10. .text:0041642E                 push    ecx
    6 y; e$ n# ^/ D3 g$ T5 L5 O
  11. .text:0041642F                 push    1
    : u1 A8 V8 C! Z
  12. .text:00416431                 push    ebx
    " I: c3 i$ s$ E0 A, _
  13. .text:00416432                 push    eax
    0 Y) r3 a& ]- C2 x$ r1 r* e; u
  14. .text:00416433                 call    edx
复制代码

4 W( m: [" l4 A: {
" P* o% E+ ?* N* z9 ^3 O& }$ k" ?3 y% |7 B3 S
; j) R* J7 s- s! {

& F$ x8 Y* E8 f; d  ^# m9 I
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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