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

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

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

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

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

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

本帖最后由 shane007 于 2023-8-25 15:49 编辑 2 p1 K, j% f- k" D, ~6 O
( ~) A+ m. Z# J! K- L
这是一个Directx9的游戏,不过对Directx9的初始化,并不是在exe里完成的,
" n+ Z! Q( }2 T# M8 N而是在RenderSystem_Direct3D9.dll里完成的。
/ Q$ N* c; d7 \6 ?0 J由于这个原因,本游戏用dxwnd.exe没法实现窗口化(也许是还没找对方法),需要手工修改才行。- ^; G  A4 F; ]4 k# F( i; ?
要修改窗口化,就要寻找调用CreateDevice的地方。
2 T5 q; i' B9 ?0 N; ]% ^) w1 m# ]: Q3 {! S! P6 Q) e) s
因为CreateDevice是com接口的第17个函数,因此调用处的代码不外以下几种类型,, A% o: k5 d3 f/ R
逐个在ida pro的反汇编窗口中检索一下就行。(此方法没见别人公布过,算是我的发明吧。)3 ?( J/ {+ V7 Z
  1. call    dword ptr [eax+40h]
    7 P& L: E0 F8 X: V' E: W' h# I
  2. call    dword ptr [ebx+40h]
    3 c# a/ Z6 b) o, M7 y- g  Y
  3. call    dword ptr [ecx+40h]1 A, C) p2 a& C2 C9 ~% t  D" \5 M
  4. call    dword ptr [edx+40h]
      ~' F5 N' i, s! {$ q* i/ s
复制代码
( R) L9 _4 p4 V; I0 ]7 b% J4 t5 [

1 Q. I/ J3 f9 R! Q7 z5 ?搜寻结果如下3 o/ K& e. Z" N2 [7 Z
  1. call    dword ptr [eax+40h]  2处 OK
    " G5 `& o% N7 X8 U- }1 d- d: R) Q
  2. call    dword ptr [ebx+40h]  没有5 P( h  s$ B; ^! I% [; S
  3. call    dword ptr [ecx+40h]  好几处,参数个数不对
    2 z+ H6 o' j" N. l/ ~
  4. call    dword ptr [edx+40h]  1处,参数个数不对
复制代码
5 M# V1 D% m4 u/ F, v
7 F  K/ U: n. ?0 F1 w  G# v$ T* Q
结论很简单,call    dword ptr [eax+40h] 的2处,参数个数正确,应该就是调用处。
# ]  I0 y! ]; N* N" Z/ W9 `代码如下9 l. S$ ]$ G) X. d! k) }
第1处
  1. .text:10017F06 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]
    & K1 Y. k! h" K- B
  2. .text:10017F0A 51                                         push    ecx8 [+ _  u9 J0 s$ J. ?: v9 R2 u
  3. .text:10017F0B 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    3 f5 w- {9 }' t# d# D5 w
  4. .text:10017F11 57                                         push    edi
    6 `' }( U+ ]; m9 }+ I+ m0 B
  5. .text:10017F12 52                                         push    edx
    8 J- c1 |: `, F" }4 n/ A
  6. .text:10017F13 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]5 j& i% ~6 Q" H0 R3 y- {
  7. .text:10017F17 51                                         push    ecx2 [7 m2 |% f, F( g! o; F
  8. .text:10017F18 53                                         push    ebx
    " t' Q  P( @6 j$ p* t
  9. .text:10017F19 52                                         push    edx' d) W) a1 Z: p3 F6 j+ l4 p( K# f
  10. .text:10017F1A 56                                         push    esi
    & K# S0 q6 P8 r  b: w
  11. .text:10017F1B FF 50 40                                   call    dword ptr [eax+40h]
复制代码
+ A% T2 L9 O  p' n+ ~1 k3 a

( t1 L. N/ V" r9 O. N
& ?6 g& U+ B1 i: v) D( y8 M第2处+ a* T+ I7 [. x# U& D4 s
  1. .text:10017F2F 8D 4C 24 10                                lea     ecx, [esp+5C8h+var_5B8]2 B' H8 N& O& g$ w; x; S( h( A. o
  2. .text:10017F33 51                                         push    ecx
    7 G2 u0 E3 _: r; H' _' i
  3. .text:10017F34 8B 8D B0 00 00 00                          mov     ecx, [ebp+0B0h]
    7 K; t3 L  H# @4 _1 Z6 v2 D
  4. .text:10017F3A 57                                         push    edi
    4 @* {" I9 N+ V' t
  5. .text:10017F3B 52                                         push    edx- L0 q% ^" T5 ~3 p# g  s- m
  6. .text:10017F3C 8B 54 24 20                                mov     edx, [esp+5D4h+var_5B4]
    * X' F, f4 O. Y5 V2 x# k1 h
  7. .text:10017F40 51                                         push    ecx& O. D# O$ c1 i" w) ~/ C" D3 _0 ]
  8. .text:10017F41 53                                         push    ebx
    : |6 d5 [* j2 x: T
  9. .text:10017F42 52                                         push    edx
    % }6 I' E( R# U; Z2 E
  10. .text:10017F43 56                                         push    esi% e# g( o; |6 W* |" N! d
  11. .text:10017F44 FF 50 40                                   call    dword ptr [eax+40h]
复制代码

9 h7 T. F1 W4 t7 y
% [6 V0 j6 n0 |! T' G  E
; Q6 y) z, D9 H) h# @补充,CreateDevice也有可能是以下形式
! a6 S% o) ~; ~- \
  1. .text:0041640D                 lea     ebp, [esi+604h]' n& u7 p  @. a' v6 I) ^
  2. .text:00416413                 push    ebp
    * o' n$ c1 e+ F3 ]! O0 H/ O$ o4 c! J
  3. .text:00416414                 lea     ecx, [esi+630h]8 j5 z) a4 c) z" H* y6 y0 {, c. E
  4. .text:0041641A                 push    ecx
    ( G. }* j* u+ Z. W" H6 e
  5. .text:0041641B                 mov     [esi+90Dh], dl4 J  o+ J! H* u- L4 b# W. v6 k0 C
  6. .text:00416421                 mov     ecx, hWnd' ?/ x9 S5 s7 H: B& O' S
  7. .text:00416427                 mov     edx, [eax]6 L1 `1 _- m& v' }+ K3 ]3 j
  8. .text:00416429                 mov     edx, [edx+40h]
    , X5 [, B9 D# _1 g/ h( O& p
  9. .text:0041642C                 push    40h8 U! f$ E) {; R
  10. .text:0041642E                 push    ecx
    2 N0 N; p! ]9 l% I6 y" {: o
  11. .text:0041642F                 push    1
    ' E  J% {0 _! z" r' u7 f
  12. .text:00416431                 push    ebx' S+ H2 o( ]' _$ q
  13. .text:00416432                 push    eax
    ( `* w: }; P. z1 r) X
  14. .text:00416433                 call    edx
复制代码
/ B1 c& T+ V4 g$ U( L/ Q

% U( X- x  a8 S5 _
3 g, {- E1 z6 @6 R- B7 D$ I9 t! B+ \* d

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

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