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

建议 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

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

[建议] 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

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

【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice

本帖最后由 shane007 于 2023-8-26 16:32 编辑
; x1 f: F" X8 H) {: \' K" ]5 j% \# L- O; g
这个游戏以前分析过,这次再写仔细些,; W9 J3 t( w( E- a& h
CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
) w, Z  E1 c  q/ H' e$ F这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
4 ]" o% I: y5 ]3 r& G  D9 Q  U
7 X; d8 F# F: z! O7 S
  1. .text:0041641A                 push    ecx1 K' L5 s% |8 d7 ^5 O% c1 v0 V
  2. .text:0041641B                 mov     [esi+90Dh], dl' F8 F+ L% ~/ w
  3. .text:00416421                 mov     ecx, hWnd
    7 b" }/ C& o( o+ x* p
  4. .text:00416427                 mov     edx, [eax]
    9 f( T% y2 P( H. T1 @6 A" A
  5. .text:00416429                 mov     edx, [edx+40h]* j+ e) V! X  B! Y" N) T5 G, O
  6. .text:0041642C                 push    40h* B: _& e9 ~- ]) `; u
  7. .text:0041642E                 push    ecx% |5 @6 G4 U2 ^* g& n0 G; c
  8. .text:0041642F                 push    1
    ' u- F+ q- D1 K  [% E2 e
  9. .text:00416431                 push    ebx
    7 L: C6 f4 K8 w) b! L+ Y
  10. .text:00416432                 push    eax
    1 `  G4 v; I" g: n* |( E! x
  11. .text:00416433                 call    edx
复制代码
  1. $ X- s4 j" w7 Q: S
  2. int __thiscall sub_415FF0(char *this)) ?; T# |/ K: F; ^$ |6 W; t. k( I4 U* Z
  3. {$ z! M: \9 u% K8 I: Q, u
  4.   char *v1; // esi
    4 v4 }+ v$ S8 \/ F; A
  5.   FILE *v2; // eax
      J$ g; G8 i# H3 W6 _
  6.   IDirect3D9 *v3; // eax
    / B* \1 I2 K: |3 x0 @6 z; R0 z
  7.   const char *v4; // ecx4 }) z" I8 e9 |" O
  8.   const char *v5; // edi1 V, V/ }9 x: m/ w- J7 E
  9.   const char *v6; // edx2 N- l5 B" M  |& h
  10.   const char *v7; // eax
    ' v5 Q# Q8 Y+ U9 Z
  11.   FILE *v8; // eax3 |) {/ h6 D+ y8 A" ^6 D
  12.   signed int v9; // ebp* J- {  y, W7 R, Z; B
  13.   const char **v10; // eax
    % F' g2 r& \6 w' z
  14.   double v11; // st7
    ) B5 c' E- S/ V8 K
  15.   double v12; // st6' Y" P4 D; g% X6 E# m
  16.   const char *v13; // ecx) s1 Z( v4 ?; M, m
  17.   FILE *v14; // eax
    # ?! @. l; t# z* w0 }1 k  C
  18.   unsigned int v15; // eax; P7 g5 {0 u3 P, I- b! `/ T
  19.   int v16; // ecx
    8 c+ b0 u- A6 e. X  t8 p" [3 p
  20.   FILE *v17; // eax
    ' P' ]; C* r9 {% R! {+ u
  21.   int v18; // eax5 `" }$ Z/ p0 ?2 ~4 |8 Y( S/ x
  22.   bool v19; // zf6 Z$ Q5 ]" e/ ^5 t3 ^$ E' }
  23.   int v20; // eax
    8 }0 b) d7 }! D7 i0 D
  24.   unsigned int v21; // edx2 c, V% x$ D( ^5 ^7 ?
  25.   bool v22; // sf
    " _1 l$ N# g0 I! U
  26.   int v23; // eax
    ) ^7 Q7 E  y5 s
  27.   int v24; // eax7 `3 x8 Y+ r6 Z" }
  28.   int v25; // ecx
    * J8 O9 l& b7 g- H( U: T* l
  29.   int v26; // eax  D; d# z  n1 K* }; k5 H  b
  30.   int v27; // ecx& o! b/ a6 s7 s; c& M
  31.   const char *v28; // eax2 ~4 O+ ^% N  i2 N( y
  32.   const char *v29; // edx+ L0 n3 s2 |, N  Y& @: f' d1 g
  33.   FILE *v30; // eax! I. X; ?1 {, Z. v% ?  ?, v
  34.   void *v31; // eax9 f3 Y( J6 {  |7 J+ V
  35.   double v32; // st7
    $ q% ^: b- ]7 A) u3 }" A
  36.   _DWORD *v33; // esi
    " v/ X: g! S9 L  w9 e
  37.   float *v34; // eax- {/ p* E6 ]# j: s- k
  38.   float v35; // ecx  h! t5 C7 k+ u) S0 h* [
  39.   float v36; // edx; O% N* v8 C' D/ M2 W+ ^* V
  40.   float v37; // ecx, j: d1 \. y6 H8 H* r  b0 c
  41.   float v38; // edx7 A5 ]/ d- c$ V1 S( P! K2 N& Y
  42.   float v39; // ecx
    1 P1 I; {9 g' _5 y* E& S  i% G
  43.   float *v40; // eax$ \& _% u) W( W  G
  44.   float v41; // edx0 n& [! `5 C2 ]+ V
  45.   float v42; // ecx' _5 h% M% o# x5 J8 l) e- R4 g
  46.   float v43; // edx. W( l5 k5 R8 C2 t
  47.   float *v44; // eax+ S9 i3 ?; l% W4 S3 w" L& n! |
  48.   float v45; // ecx
    / d& j. E  b) e+ J, [3 {
  49.   const char *v47; // ecx
    ( K) w& x# e5 d3 _
  50.   const char *v48; // ecx1 z! J  h. j" J$ t7 E+ r6 X
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    ) O: {1 k; w( k9 }6 P& M+ d
  52.   const char *v50; // [esp+A4h] [ebp-58h]
    / B+ C# t/ t* C9 q+ ~
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    ( @8 M4 a# [) R  T' c$ \) K9 Z
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    & z3 E" E; `1 U7 j* r1 n
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    ' ~8 c( t7 C$ v& D# P* O
  56.   const char **v54; // [esp+C8h] [ebp-34h]) J: ^6 P8 o" ]9 _; _/ |( t
  57.   float v55; // [esp+CCh] [ebp-30h]
    : B' y: V. J0 _% Q% c& }
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]0 k- A3 R2 z6 l8 |$ H" z
  59.   float v57; // [esp+D4h] [ebp-28h]
    6 ?) o8 l9 [4 h# `/ }
  60.   float v58; // [esp+D8h] [ebp-24h]7 b% Y# i: s8 Q7 z
  61.   float v59; // [esp+DCh] [ebp-20h]: [+ g( ]4 @! A' \4 _
  62.   char v60; // [esp+E0h] [ebp-1Ch]/ u$ `: e  L9 r0 U1 s5 D6 g& r
  63.   int v61; // [esp+ECh] [ebp-10h]
    . o2 l7 R9 ~( D0 y5 O/ q* E5 [
  64.   int v62; // [esp+F8h] [ebp-4h]" q- J& `( |: H+ B, _7 q
  65. ( o8 W$ E6 R1 r, V
  66.   v1 = this;
    % J2 q% {5 H2 U- m
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");
    1 M2 h2 O" m, |1 q8 E: c4 n- r
  68.   fprintf(v2 + 1, v52);1 n, u- N: _. N& d; C' m0 K* k
  69.   *((_DWORD *)v1 + 492) = 0;
    + ]! m0 T3 _  t8 M
  70.   *((_DWORD *)v1 + 609) = 0;
    * }! D7 o7 W0 `) T% S& b
  71.   *((_DWORD *)v1 + 611) = 0;
    1 i6 c' q. H# u! ]8 Y$ |
  72.   *((_DWORD *)v1 + 610) = 0;
    + X3 l, b4 }' I' w$ J/ C
  73.   *((_DWORD *)v1 + 613) = 0;
    * A) C! k- s! c& D
  74.   *((_DWORD *)v1 + 612) = 0;! K" ^, [/ Y1 g
  75.   *((_DWORD *)v1 + 614) = 0;  }, K/ {# M) N; z
  76.   *((_DWORD *)v1 + 601) = 0;
    # X2 N# r. H! q$ W, b
  77.   *((_DWORD *)v1 + 600) = 0;: ?2 G% {. `9 T3 H' `! f) z
  78.   *((_DWORD *)v1 + 615) = 0;
    7 G7 Y' ?( X0 c5 V# ~$ K) m
  79.   *((_DWORD *)v1 + 395) = 0;: l. Y+ m- r$ K' I
  80.   *((_DWORD *)v1 + 488) = 0;
    7 _$ d: q; m  p+ L0 e
  81.   *((_DWORD *)v1 + 486) = 0;
    & D0 ^! q! c9 V" X6 i
  82.   *((_DWORD *)v1 + 487) = 0;
    ( m$ C6 t# \5 x5 X; G  Q
  83.   *((_DWORD *)v1 + 489) = 0;
    - R5 ]" O' o! \, v0 |6 X
  84.   *((_DWORD *)v1 + 491) = 0;1 E- w1 @: q$ W7 o9 B$ s* i8 F
  85.   *((_DWORD *)v1 + 514) = 0;
    ! W) K% V( Y6 e% D
  86.   *((_DWORD *)v1 + 597) = 0;
      y: ^1 t) {3 M, d4 n# P
  87.   v53 = v1 + 1968;
      _$ ~: G% ^+ a) L, _
  88.   *((_DWORD *)v1 + 498) = 0;
    6 b, R; {9 ]  l3 n; _: A5 o
  89.   *((_DWORD *)v1 + 499) = 0;
    8 F/ z& Z8 j+ j$ Q" J3 k
  90.   *((_DWORD *)v1 + 500) = 0;
    8 ]0 G& e3 Y) H2 n$ T. z2 m4 ]
  91.   *((_DWORD *)v1 + 501) = 0;+ S- f9 _8 }, @9 W0 k0 n$ o1 e
  92.   *((_DWORD *)v1 + 502) = 0;1 f+ M1 g/ T& }. R
  93.   v52 = (const char *)32;
    / k6 T' h' `6 k! p$ i1 ^1 R
  94.   *((_DWORD *)v1 + 578) = 0;# d/ o# g! M0 H- P3 U
  95.   v1[2316] = 1;
    ' G! N" @8 g* C. B! ^$ Y
  96.   v1[2476] = 0;7 B2 |, `6 ~3 c+ @/ u
  97.   v3 = Direct3DCreate9((UINT)v52);
    ( U3 k/ {- z" o
  98.   *((_DWORD *)v1 + 384) = v3;
    ; z' K4 |% O* \4 U% \% c; j/ u
  99.   if ( !v3 )
    ! e7 h  r. g! j) r" c
  100.   {
    & l; m3 p3 G3 [6 P+ B+ [/ w2 O
  101.     v5 = v56;( K% S5 f4 y! J7 Y. P7 j1 ]5 E
  102.     goto LABEL_27;
    , g5 Y: C2 ], c
  103.   }
    5 R! g8 g+ z/ `
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);5 m& m( E! U# H' a' s- z, l
  105.   if ( (signed int)v5 < 0 )4 D7 @7 K) p# O0 c' n
  106.     goto LABEL_27;
    ( t. x- |+ H1 Q; e4 s: F
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(& v  i3 o" D; c: i
  108.     *((_DWORD *)v1 + 384),% ^8 \& v5 U, T" ^- V1 T. p
  109.     0,2 \* l! W0 p6 I9 T: j
  110.     1,# ~$ }0 f; B6 `; W
  111.     v1 + 1640);
    ( A) h$ v+ n5 e' n
  112.   memset(v1 + 1584, 0, 0x38u);
    $ C1 {2 y! B# e7 a9 \* Z
  113.   *((_DWORD *)v1 + 404) = 0;
    % H3 F( T; R4 u0 j
  114.   *((_DWORD *)v1 + 402) = 1;2 D, r. Y2 R2 E2 d8 o
  115.   *((_DWORD *)v1 + 403) = hWnd;
    0 O4 F$ Z# z$ p6 w
  116.   *((_DWORD *)v1 + 407) = 0;: B$ A4 H+ v8 D% \' a) W  Z1 k5 |7 p( z
  117.   *((_DWORD *)v1 + 399) = 1;" _* L8 a, O' g  H6 d, v
  118.   *((_DWORD *)v1 + 398) = 21;
    ) H$ y. }' o5 w" P7 H/ ]: L
  119.   *((_DWORD *)v1 + 405) = 0;
    ' `7 Y2 E' s7 U( V
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;5 [9 b9 e% V- i) ~8 f" u
  121.   v6 = (const char *)word_558174;0 I- Y" Q8 f) G
  122.   *((_DWORD *)v1 + 523) = word_558174;4 q& K" H, P1 j" G& D" E
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);$ m+ A, e5 f2 l
  124.   v52 = v6;
    ; j) w9 q) R/ g" g- H
  125.   v51 = v7;1 a+ i. T  g+ i' Q  V
  126.   v50 = "Screen resolution is %d x %d.\n";$ W/ y& T1 d) v
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;4 Y4 U! Y7 M( i7 I) a8 V4 ^+ S
  128.   v8 = (FILE *)sub_4D7E8F(v50);0 i/ a# ~) W5 q3 M% d
  129.   fprintf(v8 + 1, v50);
    1 G* N+ \- F0 N  v, V
  130.   v9 = *((_DWORD *)v1 + 522);; L4 t* h+ W" d' p
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);1 q6 w4 Q! S5 q5 G
  132.   v10 = v54;
    # q" r5 S+ G4 a
  133.   *((_DWORD *)v1 + 396) = v9;" |* w0 G* z' l" _* P/ N( U9 L3 T
  134.   *((_DWORD *)v1 + 397) = v10;' c) d* p* i+ ^; d+ {, C$ F
  135.   v55 = (double)v9 * 0.0009765625;! O6 t) i; E, |5 A7 A. E% G
  136.   v11 = v55;+ X0 B* c# [# I; n* x
  137.   *((float *)v1 + 520) = v55;
    - g$ u9 o$ m% f( ]% Y) M" d
  138.   v55 = (double)(signed int)v54 / 768.0;
    ' g$ f+ ^4 q# d. L( E) ~( F% D
  139.   v12 = v55;
    5 T9 C) L) ?. G' ]7 d% T6 L) t
  140.   *((float *)v1 + 521) = v55;1 k3 i+ F/ o) l
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    " G3 O6 N* `9 y2 R& `
  142.   v52 = (const char *)1;+ i  `0 M% y; V, s  R
  143.   v51 = (const char *)(v54 + 11);% V' I# D4 J) T. |! w, j
  144.   v50 = (const char *)(v9 + 6);6 P$ s5 t2 u+ ^# w
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    % |8 x$ R' M8 W( `
  146.   *((_DWORD *)v1 + 515) = 0;
      a4 b9 o$ a; E# r2 }5 K# c
  147.   *((_DWORD *)v1 + 517) = 1024;: L- C- Y8 s: y) a. Q
  148.   *((_DWORD *)v1 + 516) = 128;
    # I! D( _( q- H+ }/ S0 t
  149.   *((_DWORD *)v1 + 518) = 640;1 C+ l0 y! q  |/ b
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);. `! ?/ [3 `7 ]( @; m
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    # o  ~- H, @; b1 v- M! D' a, c( ~
  152.          *((_DWORD *)v1 + 384),
    # |$ j# m7 @0 Y, a
  153.          0,  y, Q( G7 t9 p! Z" y/ A2 n& A
  154.          1,
    * @/ E3 ^% ~+ q7 \
  155.          v61,: i0 s% W  r9 g  I! f9 S
  156.          21,
    & h2 Z* T$ S4 \; u6 ?+ Y
  157.          75) < 0 )
    % D2 y& E, n, m0 U7 M
  158.   {
    , i% O3 U; t. M( o; Y/ Y5 J
  159.     v52 = v5;
    ! W) w7 A( q. e1 n' X. {
  160.     v51 = v13;  A: S( _3 H0 H. S) K
  161.     v55 = COERCE_FLOAT(&v51);! `+ i2 v* D' W$ f; i1 d/ V
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    2 x# r0 J. b( i1 p" t+ _
  163.     v50 = v47;
    # Y$ p  B; W; m8 `$ a
  164.     v54 = &v50;! f* E' R! K( P* }# E- I! s
  165.     v62 = 0;
    2 k- g+ @$ A4 j0 @1 f& m
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");4 P' a! q6 O2 O& @7 C
  167.     v49 = 118;% n' ]6 L, m" g+ k
  168.     goto LABEL_28;
      J& b# W: g. N2 B- I  Q2 @3 P
  169.   }7 [  I/ |9 p  z: y" \& [- T
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";
    " F& _- ]/ W) A  L5 \
  171.   *((_DWORD *)v1 + 576) = 24;
    $ _) P6 }) B: Q6 M: V( p
  172.   *((_DWORD *)v1 + 577) = 8;
    . ~9 w# r" ^* ~) _
  173.   *((_DWORD *)v1 + 406) = 75;
    0 U# }, \" q: P2 |& v8 ?2 N
  174.   v14 = (FILE *)sub_4D7E8F(v52);$ b3 n+ e' \% ^
  175.   fprintf(v14 + 1, v52);
    5 ?1 X( _# R0 y* a% d3 ~
  176.   *((_DWORD *)v1 + 409) = 1;5 f5 E1 b, ]0 s& Z  L# J
  177.   if ( dword_558178 != 4
    2 q6 P7 k) o5 ^' e/ Y9 c
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    # V7 w' {, d3 m& ]; I
  179.                                                                                                 + 44))(
    * Z; Q9 T' J/ w
  180.          *((_DWORD *)v1 + 384),% U9 a8 _" T4 A9 f3 R3 H
  181.          0,
    8 }$ c8 i& J$ B+ y; R
  182.          1,
    1 T' h+ T$ A, [5 F% h
  183.          21,
    : \/ [5 R& w' m% L2 ?" V1 G& J- C
  184.          *((_DWORD *)v1 + 404),
    3 h6 _' {' q" w% w4 r4 z5 l2 U
  185.          4,
    " Z: ]! i5 @- \) W6 E7 I- ]4 \
  186.          0) )
    8 A$ R! e* H% t( y8 `  j
  187.   {
    $ S5 ^" ^0 M! }8 @
  188.     if ( dword_558178 != 25 B" y& k4 p6 \6 I$ x7 P) e3 i
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    ) `. e6 n, W2 M5 x
  190.                                                                                                   + 44))(
    5 h) z4 ?- N0 b
  191.            *((_DWORD *)v1 + 384),
    4 i  T9 s: f! \. x! X
  192.            0,2 K6 i7 l/ _) c4 \
  193.            1,$ a, {) r1 M1 A6 Y% |
  194.            21,! {1 x' c( h  h  r% {( q
  195.            *((_DWORD *)v1 + 404),
    ) i; {, {7 _( H. ]
  196.            2,. U1 L2 q* U0 @+ W( e
  197.            0) )
    ! P" S7 x+ U* l( Z1 v, g, M
  198.     {
    . P. R7 q/ _- f. f# [8 v) W
  199.       if ( (unsigned int)dword_558178 > 0. {! e1 o  L, Q, b
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(
    % Y+ v2 F+ E7 D. Z! w" ~4 b: [
  201.               *((_DWORD *)v1 + 384),
    - g# }0 y2 R3 i$ C
  202.               0,
      I+ ~1 W0 H9 M1 z+ I
  203.               1,: v! s/ R/ Z, h* [$ U
  204.               21,
    % S1 ^7 U' C! l' l4 L! ~
  205.               *((_DWORD *)v1 + 404),
    0 B) h# C" e1 u1 ]
  206.               1," B' K; P' e7 e2 P8 h
  207.               &v56) )
    ( H# r4 z9 e  y8 \+ L
  208.       {- i1 s& Q) t1 C) V& L4 L
  209.         v15 = (unsigned int)v56;
    ! N3 H/ X( p) D. a5 J2 u
  210.         *((_DWORD *)v1 + 400) = 1;) h" k6 g' ?6 ?: Y
  211.         v16 = dword_558178;
    - |1 ]7 a5 V7 g& }; e# z
  212.         if ( dword_558178 >= v15 )
    8 E5 C2 g8 E; Z/ m- g: N, B
  213.           v16 = v15;
    1 p5 _! G& D, {( S9 J, E
  214.         *((_DWORD *)v1 + 401) = v16 - 1;
    ; e/ o# a# C$ b! Z( e9 I7 s
  215.         if ( dword_558178 < v15 )6 ^3 e4 e7 U3 p+ u
  216.           v15 = dword_558178;( T' K0 h' {: t7 ^% _
  217.         *((_DWORD *)v1 + 578) = v15;  g- [: L6 x  m1 w% o- O6 C
  218.       }2 Z6 P. B+ P2 D$ p
  219.     }
    3 f; h, F6 m& V' h% k3 x) H
  220.     else" z- u, e2 }( r, f" Z; h
  221.     {* m& H# N9 L7 N) L
  222.       *((_DWORD *)v1 + 400) = 2;
    ! H' J) D/ V2 y7 ]6 i" e+ V
  223.       *((_DWORD *)v1 + 578) = 2;
    2 p/ x& D2 m! z% a; e
  224.     }
    # _' v8 R! ~; v
  225.   }
      c3 w& q, E# z- l! x3 A. }
  226.   else
    * V" H3 ]' [( n8 A/ _
  227.   {
    1 f. u$ B; U- Y+ v
  228.     *((_DWORD *)v1 + 400) = 4;
    2 O7 `' r, i$ j4 _/ S2 Z
  229.     *((_DWORD *)v1 + 578) = 4;
    ' f6 K8 r) F. j( l
  230.   }1 Q! l$ w  p: W. _& s& x
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);- r9 w' v$ G7 C# o
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    ! a4 E! f8 @$ }: ?
  233.   fprintf(v17 + 1, v51);
    . \: H+ Z% J' u1 X
  234.   v18 = *((_DWORD *)v1 + 384);
    & S% f( c5 A  y: k" t- U( y  l" v
  235.   v19 = *((_DWORD *)v1 + 578) == 0;4 z) H' U* Z$ @7 F$ d& L
  236.   v52 = (const char *)827611204;
    : s, h, u6 O7 h3 @
  237.   v51 = (const char *)3;
    6 ~  B6 ^: w: z6 E  _: T
  238.   v50 = 0;
    8 f! V7 r' P. H
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;0 Q- v) b' s5 B" ~% s
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    ( ~! O) U4 N' ?1 N, o
  241.           v18,1 L1 R- k2 M" B! ]
  242.           0,( W+ F! Q( |5 e- E5 p+ t% G
  243.           1,
    4 G/ @: F  T# Q
  244.           v61,! v; c" s2 D# z$ Y* Z
  245.           v50,5 ]; p" _: I: X1 j1 U
  246.           v51,( m' N1 I4 r6 m  X
  247.           v52);
    5 X8 g, F6 s5 Z. W. |* u" [) l! s6 t
  248.   v21 = *((_DWORD *)v1 + 425);
    , K+ a0 S% J# @
  249.   v22 = v20 < 0;
    : k" j# _6 s- S
  250.   v23 = *((_DWORD *)v1 + 384);
    : u0 o+ A( Z: F" |. ^9 Q
  251.   v1[2316] = !v22;
    0 b6 r$ H8 Z8 n, Q8 y
  252.   v52 = v1 + 1540;" N( Z5 _2 c. p+ g+ O: u, V/ v
  253.   v51 = v1 + 1584;/ X6 L1 J- k$ {- c5 h  `& r
  254.   v1[2317] = (v21 >> 14) & 1;
    % \) F1 x0 R% C8 w
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(& j& z4 d" ~4 v
  256.                        v23,
    ( y4 q2 Y# f; |- P
  257.                        0,% Q- o! j6 e+ ^3 P. K( h8 n, @
  258.                        1,
    3 E: c, e" v, d* @
  259.                        hWnd,
    ! M. \3 w' Q4 d4 p/ B0 j
  260.                        64,
    7 h" a$ ]  ?( \5 e4 _5 s
  261.                        v51,' d: F. `' N. I9 {; p7 e8 m
  262.                        v52);
    / I4 z; X, o4 d  h
  263.   if ( (signed int)v5 < 0 ), u: a/ Z+ i& q
  264.     goto LABEL_27;
    % V7 S  t5 c9 i1 Q5 I
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) ). Y# |8 c7 Q% g8 J1 v5 ?( ?
  266.   {
    8 o+ r5 K- B8 L7 Q
  267.     v25 = *((_DWORD *)v1 + 609);+ c; d$ a% X7 c$ W$ q* a4 Q
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));. W1 g3 e3 q: d0 X
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    : O( \0 M! o, c  K3 Y$ P) {) n0 Q
  270.     v27 = *((_DWORD *)v1 + 609);- S5 x" k  ~4 j0 Z. g
  271.     *((_DWORD *)v1 + 496) = v26;  ~6 k. k: ^6 M! n& p
  272.     v28 = (const char *)sub_418670(v52);
    ! E, i. T# T+ o, G
  273.   }% I8 O+ @; O4 s9 n8 m, P5 Y" a
  274.   else6 P/ |& w0 q8 \+ l
  275.   {( ?( S# b1 S* J* V* Z" Y) W7 {
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
      K5 L# G" l. p  \6 R
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);* C' D# y1 Q* _) M3 k
  278.   }) j$ i' d$ p6 j7 ^, g( C
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);- s7 f  Q. U3 c4 k& u
  280.   v52 = v28;% K  r8 N" \- U( A+ R5 L
  281.   v51 = v29;% e: P1 X" J& a
  282.   v50 = "PostProcess Surface is %d x %d.\n";- ?& w& a0 m/ U: ~
  283.   *((_DWORD *)v1 + 497) = v28;3 b" D+ Z% a/ t8 E* {
  284.   v30 = (FILE *)sub_4D7E8F(v50);
      |$ H: w" }9 f+ t
  285.   fprintf(v30 + 1, v50);, o0 x& x. n. n. b7 o: [! V, N1 ~9 U
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);1 Y2 |* {% q0 c! ~4 `; v) A
  287.   sub_413100(v1);$ W# K1 J. W+ V" W
  288.   sub_411D60(v1);7 H% r6 ]! |. B* }$ q
  289.   v31 = malloc(0x78u);
    / t' ^3 e- F1 R' Z/ I2 z, g
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    & |9 j' J- w$ @2 E% D
  291.   *((_DWORD *)v1 + 599) = v31;
    / `7 Z( z: {* f2 ]# o3 i# w
  292.   *((_DWORD *)v1 + 600) = 0;
    ( W( s% Q2 k4 S5 N1 f# v
  293.   *((float *)v1 + 526) = v32;
    # M  l% W% d) e) U) \4 E
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);! x- H- y/ a9 b% m
  295.   sub_411CC0(v1);
    - Q1 m5 d7 L* a
  296.   v33 = v53;
    : z1 }3 N; }' b( _& M' A8 N
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(& z; m$ R. `5 x" N  R) N
  298.                        dword_559B7C,- a+ H+ `: |! k( Q
  299.                        80,
      g. d. l' v: P* u% `' w
  300.                        8,
    - ~5 ]& ~2 o9 G% {1 }$ o$ p- r
  301.                        258,
    / ?7 N, M8 P- [6 ~& c8 @
  302.                        1,9 `+ W: _2 e8 @1 M1 d
  303.                        v53,, w) z4 E/ H$ E, \& }
  304.                        0);
    , u, p" f- e- H4 i1 X7 G
  305.   if ( (signed int)v5 < 0 ); X2 Q  M' Z8 D" V! Q% Y3 `& }
  306.   {
    8 l8 o0 r+ I2 v" H) S
  307. LABEL_27:( \9 U2 |* I2 H6 G+ z  U8 k
  308.     v52 = v5;9 q+ \7 g) \4 @# R9 E
  309.     v51 = v4;
    $ R2 i: V' |  q3 v7 n1 h, d4 g
  310.     v55 = COERCE_FLOAT(&v51);
    9 U  p" W$ x! U" p9 N
  311.     sub_456DD0("Direct3D initialization failed.");
    ' A: E! ~* ^; H) K
  312.     v50 = v48;2 F: p' k3 F" `; e0 P$ E
  313.     v54 = &v50;
    $ w# l( u1 t' O
  314.     v62 = 1;
    1 w, l" n2 F# I4 G
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");4 k% o. A5 A" n+ \
  316.     v49 = 205;, W" n# G9 O/ o2 ]) t+ C
  317. LABEL_28:
    , [( L( D% @1 L
  318.     v62 = -1;- ~5 d5 Q6 w( m' ?' L- g. u4 G  o
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);  f4 f2 f/ T' l/ J/ }
  320.   }
    9 x! Y: I+ s1 z; n
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);
    " n4 p' Q  L( X& _
  322.   v58 = -1.0;
    , F& A5 U0 r3 y" k
  323.   *(float *)v53 = -1.0;
    9 Z8 y+ N0 J) o; D
  324.   v59 = 1.0;" `! Z  x0 h, m8 K% ~* P
  325.   *((float *)v53 + 1) = v58;
    7 N2 K( i; Y" p% ~" }7 R# S$ t2 v. }
  326.   v57 = -1.0;
    & e  R  o( B$ U4 g
  327.   v58 = 1.0;
    8 {% M0 v4 N0 ?& R8 }. C' `
  328.   *((float *)v53 + 2) = v59;: ^& V- S$ J5 i9 Q) r9 Y! m
  329.   v59 = 1.0;8 J4 t9 z3 A: L" s! U
  330.   v34 = (float *)v53;
    5 b2 v2 m: d0 c! c0 F! j! ^
  331.   v35 = v57;! _6 S) f7 I- |+ c7 a- i, @
  332.   v57 = 1.0;# Z9 I1 B, N/ V( }* U
  333.   v36 = v58;* g7 Y# K; j/ M
  334.   *((float *)v53 + 5) = v35;
    ( t: F! [  O: P9 W1 f
  335.   v37 = v59;/ O/ c5 }3 v# Z4 j# O
  336.   v59 = 1.0;
    % u' G/ {+ b9 w+ ?9 {" U5 p2 g& b
  337.   v34[6] = v36;" V0 X6 \# c+ ?# B
  338.   v38 = v57;
    0 q6 g% }. M4 k; \! K4 D. Y
  339.   v58 = -1.0;1 c4 D: C% \- r2 h, A% r
  340.   v34[7] = v37;
    ( W# v, T# L1 v) k  `: x5 j
  341.   v39 = v58;
    1 L! ^3 c. Y& g. b3 V; I) d
  342.   v57 = 1.0;; e: X" Q# P. J% S
  343.   v58 = 1.0;, H( A, J/ }) u# D
  344.   v40 = (float *)v53;9 B9 O! n! {" n8 B
  345.   *((float *)v53 + 10) = v38;( `8 S& t$ I6 K& n  `7 _" x1 v
  346.   v41 = v59;
    ( L- u/ {2 P7 N3 b) p0 V* b
  347.   v59 = 1.0;
    . s3 ?$ z' ?! ^- m5 d) M
  348.   v40[11] = v39;2 d8 F3 {, e, N* p8 Y' P
  349.   v42 = v57;4 e( f* N: u$ G: s" D
  350.   v40[12] = v41;1 w& U/ c/ O$ I! K+ ]; f4 y4 @
  351.   v43 = v58;1 v$ H( }1 G, @
  352.   v44 = (float *)v53;6 C( o) F* w4 e8 `6 `6 ?) [8 V
  353.   *((float *)v53 + 15) = v42;: [7 Q0 J6 m5 r9 G/ t. c6 w
  354.   v45 = v59;, G& l1 b( k7 a$ \" [9 c% S& t; Z
  355.   v44[16] = v43;3 g! T- S$ v. q" ]
  356.   v44[17] = v45;
    0 n  B3 F+ M3 x) q
  357.   *((float *)v53 + 3) = 0.000099999997;5 j, l1 U$ p4 }* `* k; q
  358.   *((float *)v53 + 4) = 1.0001;# s2 @. \; I' i7 N$ Y7 @/ A
  359.   *((float *)v53 + 8) = 0.000099999997;5 _+ k, A. R0 ?8 `4 H
  360.   *((float *)v53 + 9) = 0.000099999997;
    4 i8 W( d% J, Q$ ^' m- o' H
  361.   *((float *)v53 + 13) = 1.0001;$ p; }* q0 `* C# [% k6 \1 L4 h
  362.   *((float *)v53 + 14) = 1.0001;; v- `& P) A3 C3 r# F
  363.   *((float *)v53 + 18) = 1.0001;
    9 ]% W1 v$ p/ Y5 U% k" x9 B7 w
  364.   *((float *)v53 + 19) = 0.000099999997;
    ) b* x1 {% |! S
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);
    & m4 u& z$ H0 e( _6 J
  366.   return 0;$ {. J, Q; G4 s; D
  367. }
复制代码

9 ~/ m' M  k- S+ y) {- @7 Y  a# [; y+ n" _用Cheatengin寻找一个字幕之后,在以下地方断下
, U" R# s/ x$ S* J$ u
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

5 L7 o0 }  G8 @! @- u- Z5 y! N
0 g* L* I: l9 r' m* y在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
" K- Q/ w: n# `& D; J稍后需要仔细分析。字幕显示函数应该在本函数上下。
7 n7 d( v) \1 V) ?2 w: P, t$ y6 Q! p
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

: _3 u, \/ v. G+ `" H' o( q: d* J4 k( o, a
$ y7 [+ x' c# m( T$ T$ _
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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