冒险解谜游戏中文网 ChinaAVG

标题: 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice [打印本页]

作者: shane007    时间: 2023-8-25 17:45
标题: 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice
本帖最后由 shane007 于 2023-8-26 16:32 编辑 5 |( n7 q2 K- v" D
% z  ~/ k% i! E) w: v
这个游戏以前分析过,这次再写仔细些,
0 J' |: R" ?0 \# b% _( B: b7 C" ?* \CreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。
; [. r6 }0 u8 q$ X这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。
, h" g) n+ }2 y# T3 O" k
& H, H1 E- u" ~+ g5 w4 q0 {
  1. .text:0041641A                 push    ecx6 n0 J' `5 B( y( e! b5 U; A3 v
  2. .text:0041641B                 mov     [esi+90Dh], dl
    1 h3 x; Q6 |) H
  3. .text:00416421                 mov     ecx, hWnd, n6 q8 `5 A& b
  4. .text:00416427                 mov     edx, [eax]# j0 x, ]. C4 B2 J- Y
  5. .text:00416429                 mov     edx, [edx+40h]
    8 r+ }3 g0 G  w, i# ]
  6. .text:0041642C                 push    40h: W6 ^: S$ ]) K/ `$ V
  7. .text:0041642E                 push    ecx; l0 v' g2 J  A( |* D, s9 y
  8. .text:0041642F                 push    1# T8 i" j$ `1 W$ u
  9. .text:00416431                 push    ebx& Z6 b! q! \/ ?# t
  10. .text:00416432                 push    eax0 Z( `8 n( e% r. [& e2 C( N+ J
  11. .text:00416433                 call    edx
复制代码
  1. & K! f9 @6 X1 G
  2. int __thiscall sub_415FF0(char *this)
    $ O8 L" \# a& v8 Y# J" ]7 J% t( x5 S
  3. {
    . M. j5 z; H% F& e7 f( T6 h
  4.   char *v1; // esi
    & I. q4 h# R! S" K1 b
  5.   FILE *v2; // eax
    ( O2 J2 l) W3 N+ {/ I
  6.   IDirect3D9 *v3; // eax
    % a( `+ ?, a0 C/ T
  7.   const char *v4; // ecx8 E/ L' [! z' \. v" s
  8.   const char *v5; // edi
      q# x. x3 a" C7 J' d9 }
  9.   const char *v6; // edx$ e" z/ }, i% G$ T
  10.   const char *v7; // eax3 i& s" j+ S% o9 r& B
  11.   FILE *v8; // eax6 v; L& i/ U+ |. r" Z+ }" t+ T
  12.   signed int v9; // ebp
    * |" c; E4 B* H1 E# y
  13.   const char **v10; // eax  X$ g; C9 h: s) ^1 W
  14.   double v11; // st7
    ( z; W5 G5 C) L' |/ B& l8 R
  15.   double v12; // st6" K1 l& F* X# ^* O1 q
  16.   const char *v13; // ecx) q9 k, H' |9 M
  17.   FILE *v14; // eax
    3 O0 P* Q. q; X; ]0 b5 T7 O! c
  18.   unsigned int v15; // eax8 {; m( r3 K$ \8 [
  19.   int v16; // ecx3 i. T" R4 ^' b( D
  20.   FILE *v17; // eax
    ' c. A& F! B4 u6 L7 @
  21.   int v18; // eax1 @8 Q4 s4 U. H/ a/ d9 _5 M
  22.   bool v19; // zf
    " d3 F) _, s) T& A0 m  x
  23.   int v20; // eax
    , X5 a) A* m- }7 F
  24.   unsigned int v21; // edx
    4 h) V' @1 p2 K0 v$ b3 L! d5 ]
  25.   bool v22; // sf6 `; U% z! |# {$ N/ d
  26.   int v23; // eax
    1 Y/ P3 [2 d) p6 E
  27.   int v24; // eax
    * C% g- b: i5 ?$ y( _) R$ p3 N. P
  28.   int v25; // ecx
    ! X' R* ^; w7 T( V. H  N0 A& e
  29.   int v26; // eax
    8 t3 X: o8 b2 z, M( o' V1 U
  30.   int v27; // ecx
    9 r) S% J8 H+ z! v% g& t$ _
  31.   const char *v28; // eax
    2 N- Z& X2 l  P6 ?! c( F
  32.   const char *v29; // edx
      w9 b# h$ K% L$ w! V
  33.   FILE *v30; // eax1 @6 J" i- v. j- H4 h( N
  34.   void *v31; // eax/ ~0 r3 M  |7 x" |
  35.   double v32; // st7' h7 F9 {, ~) }8 \& |, X7 u$ c  Z& m
  36.   _DWORD *v33; // esi3 ?1 O/ F4 ^& L* z/ o
  37.   float *v34; // eax
    5 l$ i( ^4 v1 P+ P7 h1 ]/ F
  38.   float v35; // ecx
    4 P) L( C+ i/ ?. X$ A  Z0 q
  39.   float v36; // edx4 L% F. T. n  K0 v# q
  40.   float v37; // ecx
    * c- a4 ~" _: N
  41.   float v38; // edx
    0 Y8 H' b0 u- A9 s
  42.   float v39; // ecx
    " h3 c, q" [% ?2 x4 W
  43.   float *v40; // eax
    + R3 f+ }5 R5 [) Z  k# F5 T
  44.   float v41; // edx3 B. T0 u+ W1 J" i! V8 E
  45.   float v42; // ecx
    # X4 T% }( m6 G$ Z5 E8 V, B
  46.   float v43; // edx5 O+ V! r: u2 j1 S+ v! a
  47.   float *v44; // eax& A) _; a4 @8 n8 m# e
  48.   float v45; // ecx4 Q" x& T; a( {9 H
  49.   const char *v47; // ecx3 T& t5 P' L. z0 k( F" Y
  50.   const char *v48; // ecx5 m% X8 w! y8 |! q7 ?* b# o% q6 z7 w
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    0 N8 I# Z! \; f" j# ?& C* Q3 b
  52.   const char *v50; // [esp+A4h] [ebp-58h]5 q6 D" w) x! w/ r0 i
  53.   const char *v51; // [esp+A8h] [ebp-54h]
    0 S, t2 l- k6 S. n. j- @- u9 L
  54.   const char *v52; // [esp+ACh] [ebp-50h]
    - }; t* c. D5 y3 n
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    ( w) b" t! V& u& s5 C; P
  56.   const char **v54; // [esp+C8h] [ebp-34h]6 p0 u$ Q  g+ z: I0 X
  57.   float v55; // [esp+CCh] [ebp-30h]/ H1 l$ ~4 J) R
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    1 [( a/ h- ]9 h1 `# _/ R! i
  59.   float v57; // [esp+D4h] [ebp-28h]6 T1 J/ A6 [8 k* Q# K6 o! @
  60.   float v58; // [esp+D8h] [ebp-24h]2 v. V& P; _0 Y; ]0 Y
  61.   float v59; // [esp+DCh] [ebp-20h]. V# {* A8 {# `( {( G- v( o9 V
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    ; b) F$ N; f4 }5 s. v$ [" k
  63.   int v61; // [esp+ECh] [ebp-10h]3 t& @6 e7 M& m. v9 V" F$ ^
  64.   int v62; // [esp+F8h] [ebp-4h]
    : A6 B' x5 O0 u+ s5 T6 J9 r

  65. 6 J( G0 x( J) B+ |* j/ e
  66.   v1 = this;
      l" {0 m2 H5 @' e& i
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");: Q9 x5 |1 |8 D7 y0 |- l8 O
  68.   fprintf(v2 + 1, v52);
    2 c+ `( I) G0 t$ `
  69.   *((_DWORD *)v1 + 492) = 0;
    ; Z) {9 j4 D( `0 D. \% e
  70.   *((_DWORD *)v1 + 609) = 0;$ @/ u+ V! ~( r8 ^5 m" w, Z
  71.   *((_DWORD *)v1 + 611) = 0;& ?+ e! @" f9 ^' l& F
  72.   *((_DWORD *)v1 + 610) = 0;: E1 {3 V$ y$ M4 N+ g' c% N
  73.   *((_DWORD *)v1 + 613) = 0;
    # u' E; I7 E' P( L
  74.   *((_DWORD *)v1 + 612) = 0;
    & ]7 P5 O  V! a8 T" {. Q
  75.   *((_DWORD *)v1 + 614) = 0;
    + d+ u, N- ~+ w8 ~; M$ D8 k. Y
  76.   *((_DWORD *)v1 + 601) = 0;! H- a  @6 s# ?$ ?( k' L4 a
  77.   *((_DWORD *)v1 + 600) = 0;5 Z2 r8 K8 [" C% Z
  78.   *((_DWORD *)v1 + 615) = 0;
    ; I4 S5 r, w- v4 y+ n( M
  79.   *((_DWORD *)v1 + 395) = 0;
    ! j# [$ l' l4 F6 \
  80.   *((_DWORD *)v1 + 488) = 0;. c* V+ n( e4 ^- D* S
  81.   *((_DWORD *)v1 + 486) = 0;  m6 F& y+ r( y' d- J8 j) j- _' D
  82.   *((_DWORD *)v1 + 487) = 0;
    8 l/ h$ a- b2 I5 `- x0 p9 H- P3 X1 l
  83.   *((_DWORD *)v1 + 489) = 0;: I" X3 G7 k0 L- d7 [+ o
  84.   *((_DWORD *)v1 + 491) = 0;
    " l" ]% K  J3 I" q% L
  85.   *((_DWORD *)v1 + 514) = 0;. c4 n: P, Q/ ^. m
  86.   *((_DWORD *)v1 + 597) = 0;" @0 U% I4 c1 p
  87.   v53 = v1 + 1968;$ l- v1 l" X) r
  88.   *((_DWORD *)v1 + 498) = 0;
    4 c! D% P: T5 p2 W' v, E+ V; B3 v
  89.   *((_DWORD *)v1 + 499) = 0;
    $ I* k, M) _9 E8 c+ U8 A& o5 r
  90.   *((_DWORD *)v1 + 500) = 0;
    : F( V+ E" H: |! w7 t  f. o
  91.   *((_DWORD *)v1 + 501) = 0;
    2 e- [9 R5 y4 z5 ?1 ]! \
  92.   *((_DWORD *)v1 + 502) = 0;
    % S( p2 U8 y9 \4 b& @
  93.   v52 = (const char *)32;
    8 S1 {1 s1 M4 u+ L# X
  94.   *((_DWORD *)v1 + 578) = 0;
    $ x6 s) x* _3 d/ f- M( J
  95.   v1[2316] = 1;& K) R) G- b) Q! |
  96.   v1[2476] = 0;) U2 K2 e4 A. @( s
  97.   v3 = Direct3DCreate9((UINT)v52);
    % Q" z+ a: R+ w9 u
  98.   *((_DWORD *)v1 + 384) = v3;
    0 u4 `" L5 v- Q  l8 w' R; o
  99.   if ( !v3 )
    + m; W3 i' [, W% ]5 \% d, @: p# S
  100.   {& R1 I5 N7 ]' U3 V# G
  101.     v5 = v56;5 x1 S+ E0 I' f) c& K
  102.     goto LABEL_27;
    0 f9 s- H/ ?) w; \+ z
  103.   }
    4 i: f) p7 A* n8 \
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);' O* E4 z( N* e. U9 v; R
  105.   if ( (signed int)v5 < 0 ), Y* t0 |6 T' \3 c5 J, Y1 A. L7 E
  106.     goto LABEL_27;) b; J7 a2 _! R; r; b2 F% i5 p+ p2 ?
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(" w& X, _+ T" B$ q3 V9 Q3 l
  108.     *((_DWORD *)v1 + 384),/ }' S8 C& P* v$ W
  109.     0,
    4 S  h2 Q8 @# E/ l  q) \; s
  110.     1,; P: x3 k7 l( Q" ~, U0 {9 ~! t  f
  111.     v1 + 1640);
    1 C6 F7 d1 f/ |/ k
  112.   memset(v1 + 1584, 0, 0x38u);
    : U7 m/ Z2 F: u6 A8 Y
  113.   *((_DWORD *)v1 + 404) = 0;
    , @  c" ?7 v1 H
  114.   *((_DWORD *)v1 + 402) = 1;( _4 N! l: r7 @1 ?8 `* Y& K
  115.   *((_DWORD *)v1 + 403) = hWnd;6 c7 O* r' E: S/ x- y
  116.   *((_DWORD *)v1 + 407) = 0;
    : e$ Y* s- b$ @) b& [
  117.   *((_DWORD *)v1 + 399) = 1;
    2 v. J* c' _5 w# [4 R% m/ r
  118.   *((_DWORD *)v1 + 398) = 21;
    1 b; ]7 }. W$ r3 h8 Y; r$ d; D
  119.   *((_DWORD *)v1 + 405) = 0;
    , v% j; x. }% K/ ~  ^6 `/ g# j
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;, }; v/ w9 U0 x8 l# K9 m: [
  121.   v6 = (const char *)word_558174;
    / z- S* }( x- d( [' X3 e# s
  122.   *((_DWORD *)v1 + 523) = word_558174;
    # B. M5 M) N( C' p
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);6 m$ m( P' m& _& K9 O% O2 K: f9 e
  124.   v52 = v6;
    " ]& Y5 L. J2 j+ |/ P
  125.   v51 = v7;
    . \9 e8 x) B' B& T
  126.   v50 = "Screen resolution is %d x %d.\n";7 X( j# G- M6 u; I8 e  c; Q
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;+ k6 u( z% y' T0 w/ g9 T' y  W
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    , ?* W$ I8 a3 V; P( l9 S3 h! z
  129.   fprintf(v8 + 1, v50);
    " @* h9 q& G9 n/ o0 R5 }8 j. n4 R
  130.   v9 = *((_DWORD *)v1 + 522);
    8 f2 d8 S* O4 H) P  ?/ }7 j, a
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);& ~+ o/ N' T) I. `1 T6 u
  132.   v10 = v54;# [( v; _0 j' P* _# D* B8 l
  133.   *((_DWORD *)v1 + 396) = v9;
    % I! _7 n9 A; @/ {- v' g# X
  134.   *((_DWORD *)v1 + 397) = v10;
    7 d) E3 N5 Q1 K  L% W
  135.   v55 = (double)v9 * 0.0009765625;8 f+ Z+ h" R8 X
  136.   v11 = v55;
    / K1 J4 V2 C  n4 u
  137.   *((float *)v1 + 520) = v55;
    + N5 {- j! n* Y; q3 Q; A" i
  138.   v55 = (double)(signed int)v54 / 768.0;
    3 N; M) u; G( f
  139.   v12 = v55;
    ; @7 ~; S4 T4 O! ~/ \: p2 B7 f' \
  140.   *((float *)v1 + 521) = v55;- c. _6 P6 w, c$ R6 W% S# A
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);6 s0 U- C, |) |7 N( q. l
  142.   v52 = (const char *)1;4 t/ O& N& |3 I' ]
  143.   v51 = (const char *)(v54 + 11);
    + v0 {# F& E6 @  M
  144.   v50 = (const char *)(v9 + 6);
    5 F0 a6 W' E; z: e' H$ X: L+ Q+ N8 w
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    7 R1 I( L7 C: A# a
  146.   *((_DWORD *)v1 + 515) = 0;
    9 x) Z: x  _" k3 S) }
  147.   *((_DWORD *)v1 + 517) = 1024;
    , X( o* \* N4 H: }! F  L; T  d
  148.   *((_DWORD *)v1 + 516) = 128;
    8 V1 ?: |1 J" _3 B/ s7 c
  149.   *((_DWORD *)v1 + 518) = 640;
    - D# Y! b, v. ]) X
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);
    - J. [0 D$ e. e. F2 d, G' |
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
      |  d4 L; ?9 N. ^1 o, h; g- f5 x  n! h  U- }
  152.          *((_DWORD *)v1 + 384),- F5 i- K: o9 s: @; @
  153.          0,* J! s6 w/ S! t8 \! W( }/ y
  154.          1,
    1 U6 c0 W6 {" d9 J+ ?) X) }
  155.          v61,/ {; x* ?8 _2 c- f
  156.          21,& G; V7 s% \. Z; s# [9 N! n) V0 p
  157.          75) < 0 )$ w( H% G* B3 X. `
  158.   {
    % c# w+ q) u2 b. m2 e0 _" Y5 d
  159.     v52 = v5;
    ! t! S2 }8 l6 G* S' o
  160.     v51 = v13;
    6 c; R* V/ C' K3 v6 f
  161.     v55 = COERCE_FLOAT(&v51);
    6 u( c1 `2 s' w$ N* p# O: @6 I: x
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");4 R6 h" w& m. J
  163.     v50 = v47;
    " O7 w6 p* o, R; z
  164.     v54 = &v50;
    8 i( N/ D9 M% k; |; B
  165.     v62 = 0;
    , q/ ]5 |. c- `. }
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    2 O# |- Y3 |* h7 `7 ^1 |2 o
  167.     v49 = 118;$ v. h4 T3 M6 k" k" L
  168.     goto LABEL_28;
    * ]9 y- C% _+ m) Y9 l! {/ B
  169.   }
    $ r6 J( W4 H2 }
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";! W1 [0 @9 m7 b
  171.   *((_DWORD *)v1 + 576) = 24;
    ! d% N9 I" x1 E  V6 y+ g' l3 T
  172.   *((_DWORD *)v1 + 577) = 8;( k' \2 ~# c" v! V3 c; }0 ?% W
  173.   *((_DWORD *)v1 + 406) = 75;8 C1 T4 [0 _" ^3 g
  174.   v14 = (FILE *)sub_4D7E8F(v52);1 p% j+ J! X& P$ M
  175.   fprintf(v14 + 1, v52);. T; ?9 [! T9 i6 W
  176.   *((_DWORD *)v1 + 409) = 1;$ z: r0 p' N0 g& _" I; ^# k+ L
  177.   if ( dword_558178 != 4* w0 F( |% j- D# r9 ], V  X8 ^9 W
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)- t- o9 |) k3 ^; [
  179.                                                                                                 + 44))(
    * d9 i' v) ^1 d0 M3 I& f. H
  180.          *((_DWORD *)v1 + 384),
    ' I- K4 K; E4 }7 P8 `: M
  181.          0,0 _2 c& c. H$ P) J8 I
  182.          1,
      |8 a% C3 C+ I8 W/ Z) [
  183.          21,
    ' Y3 j0 C' H% J% I+ [) A0 g
  184.          *((_DWORD *)v1 + 404),
    . }0 V" M! z" g
  185.          4,3 |. P4 h+ q2 R0 v/ l& `6 `1 x' e
  186.          0) )
    1 h) ~8 {/ v7 F4 L
  187.   {
    ' t' @$ k# l. L1 B1 N/ c! X% a
  188.     if ( dword_558178 != 29 A) J$ g# f/ L0 c. x& D5 T/ _
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    & l+ Y" r( h" V& ]( E  `( |. U0 t$ \
  190.                                                                                                   + 44))(4 E8 v9 g3 w% K/ S7 p
  191.            *((_DWORD *)v1 + 384),- @" a7 O" f7 b5 a6 J
  192.            0,3 I. i- r: t" ~8 e
  193.            1,% t4 L3 h5 F9 G  [
  194.            21,3 m: f: Y( W# a/ c* j
  195.            *((_DWORD *)v1 + 404),
    1 P$ H3 j. ?; C+ o
  196.            2,
    9 N, `1 }- p9 b- h# ^, Y3 Q, P
  197.            0) )' K" `" g5 y5 l, S% {5 m% R  ~# Q
  198.     {" t7 N! B- J- o$ E; Y7 A8 X0 o
  199.       if ( (unsigned int)dword_558178 > 07 @- a  B6 O% V8 {% @
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))(2 o, C# M4 f3 k9 z
  201.               *((_DWORD *)v1 + 384),8 d- V0 q: ]6 [4 }
  202.               0,: v/ Y6 R& D& R/ Q+ V2 N
  203.               1,
    " t, w/ Q/ k" T* f0 g3 `/ _" z
  204.               21,
    6 U) E% z) E% L2 N
  205.               *((_DWORD *)v1 + 404),
    8 L2 U6 O- q# _; j
  206.               1,+ V8 k5 @: A9 p' Q! Q+ E
  207.               &v56) ): ?# d: N/ B# |. ?  Q# W& \" N
  208.       {6 V$ S( H( C5 L& N- A
  209.         v15 = (unsigned int)v56;" i# h& M5 p8 M' D' ?3 q
  210.         *((_DWORD *)v1 + 400) = 1;
    % A  A( j7 Y; @% b9 y
  211.         v16 = dword_558178;
    ! [2 G- X) k% K9 v) P
  212.         if ( dword_558178 >= v15 )) L7 q$ w( j0 c* S
  213.           v16 = v15;2 c" ]+ X1 Y7 `9 _3 d% F6 b
  214.         *((_DWORD *)v1 + 401) = v16 - 1;) `$ P2 J  ?4 v, ?- ^- w: k
  215.         if ( dword_558178 < v15 )1 s- b* G7 N# {/ Q  K4 D; t
  216.           v15 = dword_558178;
    ' ?% U! m$ T, z6 q
  217.         *((_DWORD *)v1 + 578) = v15;
    6 ]2 u0 n" [; C) K& u
  218.       }
    7 r6 ?' X. ^. Q' X4 {5 |- f) u' e
  219.     }' A, g3 l& `, ]7 z
  220.     else
    0 Q* s% f9 ^1 a2 a6 ]
  221.     {$ f. n: W! f# y  j6 y/ F: _
  222.       *((_DWORD *)v1 + 400) = 2;
    , H1 M" f) j4 Y. p0 m* b; M
  223.       *((_DWORD *)v1 + 578) = 2;
    ) R, j; F* T' t- }4 |
  224.     }# I3 F4 O; I4 A4 A- e6 N$ `; P
  225.   }
    * o* z0 l0 z3 l$ S+ N& T& `
  226.   else! B" b0 |# U( c: o% [, {/ c" E
  227.   {0 a$ c: c- m0 g7 O  P" i
  228.     *((_DWORD *)v1 + 400) = 4;$ A3 _% }: p7 f7 j% X* ^+ A! Q
  229.     *((_DWORD *)v1 + 578) = 4;/ Z& A& \, |$ n& u
  230.   }0 x+ y: V+ E( m
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);
    % U" y# k3 a& A1 N
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");4 i, c0 f6 Y1 b. F8 h
  233.   fprintf(v17 + 1, v51);
    9 L0 D" y$ S8 N6 u. X
  234.   v18 = *((_DWORD *)v1 + 384);
    5 ~9 K- I0 f) k( l& y/ k
  235.   v19 = *((_DWORD *)v1 + 578) == 0;/ u- ]$ t) J& b  _# V7 P5 a
  236.   v52 = (const char *)827611204;8 O' d3 \; R' I9 r$ }
  237.   v51 = (const char *)3;- t/ {: |' ]4 O) l! W: `
  238.   v50 = 0;
    2 a" D* ^: ~* `) `; Y
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;
    9 V- j" A- ]& n% E% F5 A
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    7 a4 x/ p' `; E6 [
  241.           v18," t3 O7 I1 @6 l' h
  242.           0,
    9 [8 [: {8 h5 C7 D) ?
  243.           1,7 B0 ^. A( P7 i5 D- U& W- U. Y
  244.           v61,* l7 g- c1 l4 @3 D. v
  245.           v50,4 v; e* Q/ t, B# h
  246.           v51,
    / g  F6 E9 j- h/ H6 {# U) d
  247.           v52);
    7 r0 H9 d/ H$ N# u0 E% W
  248.   v21 = *((_DWORD *)v1 + 425);
    & A, ]" R5 p" w' ]3 o7 u! z1 l
  249.   v22 = v20 < 0;
    + L6 u& |3 S+ Z  P. Q: F5 W! H# S
  250.   v23 = *((_DWORD *)v1 + 384);7 y0 s1 K- o/ x, p- L$ Z
  251.   v1[2316] = !v22;* y5 N. f  p) Z7 f- P6 g& H) C
  252.   v52 = v1 + 1540;
    + Z. n9 N; f9 ~' \( f5 ^
  253.   v51 = v1 + 1584;* P1 T8 C- n: h2 b0 b8 z. z& j. i
  254.   v1[2317] = (v21 >> 14) & 1;
    # ~4 O$ e7 v4 O" ?# a
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(& P# j: @" V% H6 V
  256.                        v23,3 {/ R) E0 b7 c; z# z/ v" r4 T& O
  257.                        0,( A! o+ L' u' o
  258.                        1,
    0 ~. E" Y6 f$ |1 ?+ d6 t
  259.                        hWnd,1 q; S. K0 J7 \( \
  260.                        64,  _% \+ X! B; U* v( v. G4 t4 W
  261.                        v51,
    3 B6 L7 @8 c1 X. e/ D5 @
  262.                        v52);
    / D/ e$ `$ ]9 w- q8 [
  263.   if ( (signed int)v5 < 0 )
    ! g5 V, D8 }% n) x  F1 p
  264.     goto LABEL_27;/ L7 G' h8 k9 g3 Y/ C7 A
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )0 b: d  f5 E. c" S/ ^; x) j* A
  266.   {3 o. [7 P5 r" h
  267.     v25 = *((_DWORD *)v1 + 609);
    4 F  c% u1 n8 @& n: Z+ Q
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    - }/ E' U" @0 M
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    * q/ g' R" i/ [+ \+ A) ?6 |
  270.     v27 = *((_DWORD *)v1 + 609);- ?& `: R' _4 s) S/ S
  271.     *((_DWORD *)v1 + 496) = v26;
    9 p( E$ A1 W6 Z/ I0 a( D% X4 G
  272.     v28 = (const char *)sub_418670(v52);5 z7 x2 D4 `  t
  273.   }
    # A0 A& G1 Z6 t. k
  274.   else$ `& \$ C! S, K: b+ k
  275.   {0 Y% P# t7 E8 z: m
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);! t4 F. W( Q3 h7 Q5 v9 i
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);
    ) T2 S7 T2 n, v: p: h# `. O+ Y* l6 k
  278.   }) e1 f' T) |1 t+ i: @
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    - x6 d0 R  T  D5 j5 L3 E) v6 p
  280.   v52 = v28;
      l7 y  E, M# ~1 P+ M- {! _2 U
  281.   v51 = v29;; z& q% b; A* h3 S* c/ y
  282.   v50 = "PostProcess Surface is %d x %d.\n";# _' G: q5 ~5 u+ K1 B, C5 C
  283.   *((_DWORD *)v1 + 497) = v28;% Q7 W: L5 w  i7 f) |
  284.   v30 = (FILE *)sub_4D7E8F(v50);+ s/ j  \! ~9 Z
  285.   fprintf(v30 + 1, v50);3 l4 J7 ~# ]1 n" i
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);
    3 f  \/ @' M9 v* u* J* v9 e
  287.   sub_413100(v1);) E) n+ h3 t+ l8 b) r6 ^* W
  288.   sub_411D60(v1);
    0 N( N) f  C3 Q: y" D% w" Y
  289.   v31 = malloc(0x78u);$ {% P: P. z  O! s' E
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);* O' _2 r( g' y! ?+ o
  291.   *((_DWORD *)v1 + 599) = v31;/ r# H$ D8 t" X& b( f
  292.   *((_DWORD *)v1 + 600) = 0;
    - R0 f. d" ~1 U+ `) Z
  293.   *((float *)v1 + 526) = v32;+ h8 `* z6 l& A6 c; \
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);9 \* [6 a, u8 \7 k% Z7 n$ E! @  d
  295.   sub_411CC0(v1);) ^& q! l1 F1 D0 e# }, Q9 Q
  296.   v33 = v53;% e! _  D9 Y5 e
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))($ F7 T% T- k' ~8 h: H
  298.                        dword_559B7C,
    ) y9 k' }' U5 S; L! z
  299.                        80,0 h. x0 X6 M" g" e. ~
  300.                        8,- m: \* I. G* a/ E: T+ c
  301.                        258,3 @' S3 K1 ?6 Q$ {* X+ [+ r; N
  302.                        1,
    ( r7 O2 b; P1 q. w1 k: d
  303.                        v53,
    3 D! k4 C* Y" l4 k) ~1 c
  304.                        0);* b+ o3 Z) j# f
  305.   if ( (signed int)v5 < 0 )5 I# z& [- f: a& O
  306.   {
    ; M& C  ~9 V8 ~, Z
  307. LABEL_27:, @* R; V7 U5 w" Y9 A
  308.     v52 = v5;
    % @% z% n5 Y2 z0 G4 J4 [
  309.     v51 = v4;
    ' S% e- e7 @& O; d% [
  310.     v55 = COERCE_FLOAT(&v51);
    % H6 Z. N# B! p. ?  S
  311.     sub_456DD0("Direct3D initialization failed.");
    & F# k$ T) s% A% b: i0 m8 |
  312.     v50 = v48;# z- z! n) E+ w% y# [) o$ n
  313.     v54 = &v50;
    2 q1 M1 `/ \1 a1 {* X
  314.     v62 = 1;3 e$ e( C+ K/ ?$ Q$ V
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    ( q- _0 v3 g& c: a. Z/ Y* a+ \% ~
  316.     v49 = 205;
    , v, H/ G; F6 P% f( s8 \
  317. LABEL_28:
    % w) G' i# S- \+ K
  318.     v62 = -1;
    ! c1 U6 d6 }! T2 a
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    , D& B- M6 D2 k/ w  K; }  K
  320.   }% Q* S: B2 J' n
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);
    ) {/ g: ]! U- F
  322.   v58 = -1.0;7 p" D3 N! q, t5 E6 u" Q, Z1 d
  323.   *(float *)v53 = -1.0;9 z# R/ z( F# y. a9 H% S
  324.   v59 = 1.0;4 d0 r6 t. j- c3 ?* z
  325.   *((float *)v53 + 1) = v58;
    2 v- P0 {. U, w8 }
  326.   v57 = -1.0;
    : p, @. _! V' O: G) G* A) T5 J
  327.   v58 = 1.0;
    ! N% K( `& q' Y( g# U
  328.   *((float *)v53 + 2) = v59;; H" T9 e9 H# G  P1 |
  329.   v59 = 1.0;
    + K2 U  E; |1 o5 I: Y1 M: p! b
  330.   v34 = (float *)v53;- @9 i6 b! {5 U0 \$ K1 J* `
  331.   v35 = v57;
    ( Z, C2 z3 E; N, |: P
  332.   v57 = 1.0;
    ! e7 d% f; A  f
  333.   v36 = v58;2 y2 Q- l. D1 ^8 u; Y
  334.   *((float *)v53 + 5) = v35;
    ' e; h3 |9 e9 q! B$ J' u
  335.   v37 = v59;
      \' b' @( _0 H" m3 L& J
  336.   v59 = 1.0;
    ( ~: H6 z) f3 M
  337.   v34[6] = v36;3 a! J- z1 v+ V' L/ P4 H: b! K
  338.   v38 = v57;0 R; A- M, T! P' F& l
  339.   v58 = -1.0;8 N5 @% ~0 m$ n# k; M" V( b
  340.   v34[7] = v37;
    & z/ \) x- w  \
  341.   v39 = v58;* Q( x, g/ \. L% {; ?2 x( \6 _' d
  342.   v57 = 1.0;' [, R3 H0 ?. T8 {6 _
  343.   v58 = 1.0;' K9 E: \6 d4 n1 _( I! y
  344.   v40 = (float *)v53;) n8 d& g$ k5 G: m+ g( X- \
  345.   *((float *)v53 + 10) = v38;
    ( m! r) V9 p- u5 Q
  346.   v41 = v59;
    6 Y; ?" K6 ?: N
  347.   v59 = 1.0;
    7 t+ n0 A/ M1 j2 n+ G
  348.   v40[11] = v39;
    9 ~3 I& F" ^, G* r
  349.   v42 = v57;. g- }4 Z. d, `9 I# Y& N3 c2 ~
  350.   v40[12] = v41;" I) i& e2 U# g; r$ Y: D
  351.   v43 = v58;' I& U1 L( Y5 n' b
  352.   v44 = (float *)v53;$ i  T. o0 ]& N6 e% J+ {) U
  353.   *((float *)v53 + 15) = v42;# y$ k& }% Q& F$ [$ {
  354.   v45 = v59;
    # F% T4 F; i7 j9 u0 u. p# S+ n+ @
  355.   v44[16] = v43;
    ( ^0 J9 X, C1 `' }
  356.   v44[17] = v45;
    # V1 r- o6 _& _# h
  357.   *((float *)v53 + 3) = 0.000099999997;7 ]% }' x7 L" N7 X
  358.   *((float *)v53 + 4) = 1.0001;
    0 c4 v0 _& ~. q' t
  359.   *((float *)v53 + 8) = 0.000099999997;
    0 z; C& @) R8 N, S/ K! j, X
  360.   *((float *)v53 + 9) = 0.000099999997;! {/ ^- Q+ C& V* y& x: U. ^
  361.   *((float *)v53 + 13) = 1.0001;3 z0 ^3 f1 g9 j& v
  362.   *((float *)v53 + 14) = 1.0001;! R: i8 J! U1 z$ f* G+ L
  363.   *((float *)v53 + 18) = 1.0001;
    ' b6 ~8 f5 {7 L9 w4 d
  364.   *((float *)v53 + 19) = 0.000099999997;
    ' J8 V1 V7 }! A4 \) y# P% J
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);* j. F) j5 j( x; d
  366.   return 0;7 r3 W& f3 L. ^& ~
  367. }
复制代码
! l: j' u; Q* u! Y2 p
用Cheatengin寻找一个字幕之后,在以下地方断下
7 S& h& G. O# N4 _+ V
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码
& T" d, u$ @. N; c7 Q% ]8 N

& ]  P" U" E  Y( m& I( n% {& S在ida pro下查看,是这个函数,从代码看a2字符像是索引号。  H0 [& \7 g9 M6 b9 \
稍后需要仔细分析。字幕显示函数应该在本函数上下。
( s2 H, j3 S& ]' D+ @% D
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码
1 d0 X" [& v; |* y! v
5 l9 A8 x8 k5 K; p* k9 h
* j0 r% t- ?/ e# p3 E# b





欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2