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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 $ u: b; B4 i, t: Z! B) y! e

# g0 k( s% F; c. Y! b: X这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,# S8 G: n5 N4 x# A
而是在RenderSystem_Direct3D9.dll里完成的。
$ j/ x, Q7 Y, }) _0 D0 _( [: ~% j2 i由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。) J2 i0 ]5 y4 K+ ]$ ~
要修改窗口化,就要寻找调用CreateDevice的地方。' D3 z6 Z  b0 U

; s/ M; b0 L, b8 |因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,
) L0 Q3 D* O) d, {8 Q  h1 P逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)8 J+ M; N$ o$ S: {2 e1 z3 e& |+ Y
  1. call    dword ptr [eax+40h]! _2 j, B. h! {- M( X
  2. call    dword ptr [ebx+40h]
    8 I/ ?. ^7 y$ m  H. i
  3. call    dword ptr [ecx+40h]
    & w4 Y1 O4 |# @' `+ z8 P: y
  4. call    dword ptr [edx+40h]
    / [2 q3 b4 V2 c/ q3 `2 J9 P
复制代码

. G% t' X4 H  j0 \/ D4 q
1 G1 @/ S7 K7 X  v9 Z搜寻结果如下
+ f' F0 @+ G8 T- l
  1. call    dword ptr [eax+40h]  2处 OK- H9 j- e3 T7 }3 X- Z
  2. call    dword ptr [ebx+40h]  没有
    5 c* {7 m, [" q1 i: v" h
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对4 |5 p0 `' d" C7 h, F
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
6 p  y/ L* Y8 U" V" ^

4 I1 g& g) N, N+ U; Q3 ]' ^7 w/ s+ H结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。# w  V/ g' U  J+ N+ i& |8 J
代码如下
0 H! v# u. L  U3 P. V第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]( C1 m, |9 K) I! _, s" X+ F" @
  2. .text:10017F0A 51                                         push    ecx3 d" k, Q- y3 D& G8 Q* f3 q
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]/ w/ v% j8 o, z5 d. o  l
  4. .text:10017F11 57                                         push    edi  n/ x: F3 p0 E6 m
  5. .text:10017F12 52                                         push    edx
    , n& W* s! h! j6 o! U  y
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    * r% L2 \. q$ S* f' Y
  7. .text:10017F17 51                                         push    ecx3 D4 @* _* A9 R. h- C
  8. .text:10017F18 53                                         push    ebx
    $ Z0 A$ b" `$ ]! h
  9. .text:10017F19 52                                         push    edx6 `8 f; F" u' O
  10. .text:10017F1A 56                                         push    esi) a( U9 y# v7 |3 _2 c: @
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码

1 n* l) s& Q$ S$ K5 ?% C, ?$ O! X

0 @/ @) F8 X0 h2 T! [3 F$ L' @4 [第2处
# S$ T- G+ x6 `( M' \9 ]3 {
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    5 p* T% n, m, F* ?1 _2 Z
  2. .text:10017F33 51                                         push    ecx
    % }& ^& |3 L; o0 K
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]2 l7 Q) @# U/ k
  4. .text:10017F3A 57                                         push    edi
    ; W+ a9 R5 O* N, w1 N; Q+ f
  5. .text:10017F3B 52                                         push    edx
    7 y" h8 x7 q8 W& y# m8 }( p0 t- G
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]: V5 Q, L, K. k! g% n0 ^) x
  7. .text:10017F40 51                                         push    ecx8 z4 j5 c; `* w5 z' v- ~. @
  8. .text:10017F41 53                                         push    ebx7 F! p, K" J5 l) U4 S' D
  9. .text:10017F42 52                                         push    edx/ I$ Q1 z  K" {1 y+ T; T+ n7 H
  10. .text:10017F43 56                                         push    esi* U6 U$ t2 l! W: C2 [; w
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

, }1 d7 ?3 C% |3 h: L2 N) ?& c; u# V1 D2 e! |& a2 a4 ?0 E. E4 e
+ i: @2 A2 R! P: }: Z/ E
补充,CreateDevice也有可能是以下形式
* n: T2 z6 ~8 o& H, F
  1. .text:0041640D                 lea     ebp, [esi+604h]; a: I% I2 L4 ?, U  n$ s
  2. .text:00416413                 push    ebp& F4 p' K" H$ u/ Q
  3. .text:00416414                 lea     ecx, [esi+630h]
    : J& B& n0 _, |$ k6 l; }
  4. .text:0041641A                 push    ecx
    ' _0 s# Z6 f/ R  i! A2 s
  5. .text:0041641B                 mov     [esi+90Dh], dl3 q3 {) i2 e7 a  e
  6. .text:00416421                 mov     ecx, hWnd
    / ]9 Q1 Y# z8 t& R8 ^
  7. .text:00416427                 mov     edx, [eax]
    % B1 m9 x* b# {& ~
  8. .text:00416429                 mov     edx, [edx+40h]
    2 y% n- \7 E6 n  X
  9. .text:0041642C                 push    40h
    9 u; T  U( s3 s; t6 H" j" t: i; e
  10. .text:0041642E                 push    ecx" X5 h7 E. y: @! c2 F
  11. .text:0041642F                 push    1
    - ~* N6 }5 K; d. {
  12. .text:00416431                 push    ebx5 o) E% F5 p2 V# \( C1 ^$ ]
  13. .text:00416432                 push    eax. V8 H. k- C2 c: U+ T
  14. .text:00416433                 call    edx
复制代码
0 Q# S3 E4 m+ \. M/ ]! s( J2 f
  B! m- l* |5 p5 i( b' {  B6 T" H

& \- l9 U. x) Q2 Z9 E/ ~3 f0 t, L; U1 a: ^
; ]4 E+ }  D$ _0 F5 L0 L
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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