冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2023-8-25 17:45
标题: 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice
本帖最后由 shane007 于 2023-8-26 16:32 编辑
9 x- B* D5 ?6 Z% E. P4 N1 @& N7 V, t  h( z0 C* F2 c' i% _
这个游戏以前分析过,这次再写仔细些,
0 H- q3 r! O; n; GCreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。1 o# m5 X4 r* J% {
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。- P/ Z2 i4 Y& m

2 _0 t. P% i8 D: l4 `8 {/ d( b
  1. .text:0041641A                 push    ecx( m% V/ r8 C( [
  2. .text:0041641B                 mov     [esi+90Dh], dl' N, z$ w5 t: n. A: g# m, Z
  3. .text:00416421                 mov     ecx, hWnd
    * A( E4 v% E9 q. a0 K
  4. .text:00416427                 mov     edx, [eax]" r6 f' Z$ Z: C: h
  5. .text:00416429                 mov     edx, [edx+40h]
    5 L4 R& j: `9 l* y6 n0 ]/ P/ V
  6. .text:0041642C                 push    40h; v1 T# t6 k/ X2 F. K
  7. .text:0041642E                 push    ecx
    & ~5 o& a; K" C5 |$ j/ a6 F
  8. .text:0041642F                 push    1
    / v" L4 j( a- ]: [
  9. .text:00416431                 push    ebx
    1 a0 T5 k) i) r/ ?" T
  10. .text:00416432                 push    eax* L; N/ C- H# J3 e) }/ H; K+ t5 R
  11. .text:00416433                 call    edx
复制代码

  1. ) e% g5 |$ S$ M2 }
  2. int __thiscall sub_415FF0(char *this): n0 l) B" g8 U4 A
  3. {
    ' `6 f& B9 t: K8 y
  4.   char *v1; // esi
    . F+ U$ t, T: V8 G6 O+ O
  5.   FILE *v2; // eax2 j8 J& F( b/ s) l6 ]8 A1 l, @
  6.   IDirect3D9 *v3; // eax, j% i7 l* _, B! i0 B6 r
  7.   const char *v4; // ecx
      A1 o2 V  L1 l; V# W1 J
  8.   const char *v5; // edi; _% u) t2 @2 o- X& X5 o
  9.   const char *v6; // edx
    - K0 f& Y' f" p- z$ e" D% T+ C
  10.   const char *v7; // eax
    * o9 o/ w9 m# o0 k7 N
  11.   FILE *v8; // eax
    7 X  F4 d  `2 c) H5 Y0 ]4 r
  12.   signed int v9; // ebp2 ]* H# @" d! B5 i/ h
  13.   const char **v10; // eax
    - F5 a) P6 p5 R3 R# K5 {
  14.   double v11; // st7
    3 v+ `; f7 P# m  C  X% a! d
  15.   double v12; // st6& |; l1 V# h5 F0 |
  16.   const char *v13; // ecx. z( p) ^! \4 o0 D$ m: ?% L# Q# s
  17.   FILE *v14; // eax
    0 v9 ~" X& ^1 _0 Z1 P
  18.   unsigned int v15; // eax2 p2 N8 ~  ^: o+ ]7 b
  19.   int v16; // ecx
    2 H* ]. d' k8 K1 n' U
  20.   FILE *v17; // eax' g+ j8 {- t6 C+ ?
  21.   int v18; // eax& D/ n3 g( A& o, g: y" J
  22.   bool v19; // zf1 V) `5 w* G) e# k! [* d
  23.   int v20; // eax8 \, H4 }. A/ ~6 c3 I
  24.   unsigned int v21; // edx. z1 s: E# B9 I9 F  r" z+ d
  25.   bool v22; // sf
    & r, N. [1 |/ j
  26.   int v23; // eax" [6 z% p" T- h
  27.   int v24; // eax2 l; X& y: x8 x- j3 s5 c, C
  28.   int v25; // ecx7 F% ?# J) B( x. |5 {! z) T
  29.   int v26; // eax0 G" M$ M, k; p, g
  30.   int v27; // ecx% K" ~5 \* r  ~( r5 g* C1 R& s; j
  31.   const char *v28; // eax
    8 @0 T; H( z, k' s6 `" e
  32.   const char *v29; // edx
    ; Z# U7 _8 M% [6 e' s  e
  33.   FILE *v30; // eax7 [$ ?; N" X  i4 y7 \8 |8 `
  34.   void *v31; // eax
    $ P4 l: J/ H9 }
  35.   double v32; // st7
    # E8 v, V6 m7 k& \4 K9 U
  36.   _DWORD *v33; // esi
    1 e2 \' U. J8 V2 W; n) s
  37.   float *v34; // eax" ^% S" @5 m* F! M
  38.   float v35; // ecx
    ) w$ U. h: y3 W* L/ \
  39.   float v36; // edx
    ( O5 a4 }0 f( c; i, C
  40.   float v37; // ecx
    4 q" F1 ]$ y0 N' u
  41.   float v38; // edx$ N9 l' n, W1 t
  42.   float v39; // ecx1 M5 |7 B: Q5 _$ c7 a) K  u
  43.   float *v40; // eax
    % l, M' B1 m; S) ?" g4 n" d7 g
  44.   float v41; // edx* J# X9 v! G- ]* w$ m  R
  45.   float v42; // ecx
    % _4 ?3 E2 i7 A% a6 P# n- L3 W
  46.   float v43; // edx
    ( [, n- q* ^9 H% ^7 V! U6 c. g
  47.   float *v44; // eax
    ; d% W9 \0 B- C: a4 v
  48.   float v45; // ecx
    , j! b+ B) K/ \/ U
  49.   const char *v47; // ecx- O, Y  V% H0 f( v  z- R7 R
  50.   const char *v48; // ecx2 m$ L$ f; {7 P% j
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    : z* z* ]6 u% t* Z$ }5 p
  52.   const char *v50; // [esp+A4h] [ebp-58h]/ V1 q' `# l0 n# p  x& C/ E& f
  53.   const char *v51; // [esp+A8h] [ebp-54h]$ q% T3 u2 A3 @
  54.   const char *v52; // [esp+ACh] [ebp-50h]8 d4 e3 c. N  u/ ?
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]
    5 n3 J' S% i, u* X5 y
  56.   const char **v54; // [esp+C8h] [ebp-34h]0 M; K7 G3 H: G- ~
  57.   float v55; // [esp+CCh] [ebp-30h]1 N! z8 v+ l( U4 M! j$ [1 }7 W. F8 U
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]
    % c8 l6 U* ~. L* g
  59.   float v57; // [esp+D4h] [ebp-28h]' v6 f. G# T# j$ k* j
  60.   float v58; // [esp+D8h] [ebp-24h]
    4 O; B; G3 y9 B, L# O
  61.   float v59; // [esp+DCh] [ebp-20h]9 x; w8 P2 h7 x7 H
  62.   char v60; // [esp+E0h] [ebp-1Ch]# n* S2 E% j# C( y: h+ S
  63.   int v61; // [esp+ECh] [ebp-10h]
    9 Z+ M: [, b. w2 l4 t
  64.   int v62; // [esp+F8h] [ebp-4h]
    0 h% }- v. w" W7 L

  65. ! u! b8 s4 I; T
  66.   v1 = this;
    ! O% v( X8 L6 J% S- @6 t: q
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");* L% N* ~9 ^! b* P1 _0 z
  68.   fprintf(v2 + 1, v52);
    & A* K9 C4 C; M' |9 l& E0 M& E+ A
  69.   *((_DWORD *)v1 + 492) = 0;$ n: m" ]9 Z1 q( ]* l: N
  70.   *((_DWORD *)v1 + 609) = 0;
    * {! E& M  q9 z7 a/ ^! }  f) N
  71.   *((_DWORD *)v1 + 611) = 0;% S- y) |# W2 a: z* ]7 w) J4 Y; l
  72.   *((_DWORD *)v1 + 610) = 0;
    " y) m( m9 ?* S) [2 X7 R# G, Q
  73.   *((_DWORD *)v1 + 613) = 0;
    7 B) h2 S  U$ O' L
  74.   *((_DWORD *)v1 + 612) = 0;
    7 H8 ?' x& K2 O7 u* Y! B/ q/ [
  75.   *((_DWORD *)v1 + 614) = 0;
    4 N. E4 B2 U0 Q) p, q1 t
  76.   *((_DWORD *)v1 + 601) = 0;
    * X- l! J& |" w4 X
  77.   *((_DWORD *)v1 + 600) = 0;
    & a/ q. a; u& b- J' u# L
  78.   *((_DWORD *)v1 + 615) = 0;" Q. A$ u1 N2 t( \5 ^# ?+ m
  79.   *((_DWORD *)v1 + 395) = 0;
    ( u2 Q9 M4 \0 J
  80.   *((_DWORD *)v1 + 488) = 0;
    1 c+ w* F) O( V' p& h5 P  J
  81.   *((_DWORD *)v1 + 486) = 0;" w4 T$ |8 h7 j- J0 i" y" M
  82.   *((_DWORD *)v1 + 487) = 0;
    8 C: E# W; Q; ~
  83.   *((_DWORD *)v1 + 489) = 0;, E( N; a1 e: o" A% V: t
  84.   *((_DWORD *)v1 + 491) = 0;
    $ k& X' s0 b, z: p
  85.   *((_DWORD *)v1 + 514) = 0;
    , h) T' Q1 L" q3 ]! h8 B
  86.   *((_DWORD *)v1 + 597) = 0;8 i4 x$ H. D# H) j4 E. U% O
  87.   v53 = v1 + 1968;
    : P. x$ M. o' D; d; f: v
  88.   *((_DWORD *)v1 + 498) = 0;
    % r3 _# u  H  Q
  89.   *((_DWORD *)v1 + 499) = 0;$ L3 i; U: B9 e7 ^1 W
  90.   *((_DWORD *)v1 + 500) = 0;. W( X( X/ v4 ?& p3 y  c# B
  91.   *((_DWORD *)v1 + 501) = 0;
    1 Y, N9 H$ F1 X
  92.   *((_DWORD *)v1 + 502) = 0;
    9 J$ `4 O$ B( g  l- v8 w9 t
  93.   v52 = (const char *)32;3 F  @+ E4 q/ X: Y+ S
  94.   *((_DWORD *)v1 + 578) = 0;
    5 F, q. Q7 d) J, `& O/ t; S
  95.   v1[2316] = 1;* Q& X% X0 y# m
  96.   v1[2476] = 0;, K. f3 t+ o( O1 ?4 g& [* O* r$ _0 u
  97.   v3 = Direct3DCreate9((UINT)v52);
    ' w0 Q$ [2 y; m0 `" ^
  98.   *((_DWORD *)v1 + 384) = v3;
      X0 U: `; x3 O; z$ A3 V# ~5 y
  99.   if ( !v3 )2 ^, \" h0 Z- e' q  l5 G" {& [
  100.   {
    # p+ d+ v! ?' P- h8 a: {) w
  101.     v5 = v56;4 O. B0 n2 C% B! L' g
  102.     goto LABEL_27;
    & h1 X" P: x; h0 u8 ?1 g
  103.   }' r9 m" S, X# o+ v
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);
    ' u- `7 S" Y$ C+ q& M8 n8 G6 C
  105.   if ( (signed int)v5 < 0 )
    " Z9 K1 a% [7 M6 Q8 o" `
  106.     goto LABEL_27;
    ' w9 z3 k2 `3 g: v% r* F( R; P8 V
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(" b7 z# `, F7 Z/ V0 j: Q
  108.     *((_DWORD *)v1 + 384),6 M) c7 L2 s  V  X# v# N# n! g
  109.     0,, U, C  d! E2 k5 _; N% y; u
  110.     1,. R( ^7 M5 g: N3 a9 d: C/ J% r3 x* m
  111.     v1 + 1640);" @/ A& J# j: j( v9 B1 M
  112.   memset(v1 + 1584, 0, 0x38u);) Q$ r  H8 ~/ \+ w: a3 ?
  113.   *((_DWORD *)v1 + 404) = 0;$ i; [. R; h! x; c, P  j
  114.   *((_DWORD *)v1 + 402) = 1;
    * D" W: I% P  x$ Z) t& X
  115.   *((_DWORD *)v1 + 403) = hWnd;; t) E! b( y  C/ ?; H. w6 l
  116.   *((_DWORD *)v1 + 407) = 0;
    0 `& F, O2 m" N! g- C4 w
  117.   *((_DWORD *)v1 + 399) = 1;3 t" S$ u9 B3 N  _7 ~* d- V
  118.   *((_DWORD *)v1 + 398) = 21;3 s( i8 q1 g2 {0 E1 Z2 ]7 L/ s
  119.   *((_DWORD *)v1 + 405) = 0;  c* j" m  y1 o9 }4 w6 L5 q
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;' V3 \7 C0 O9 E% M
  121.   v6 = (const char *)word_558174;
    & u, t% O. M5 i' x
  122.   *((_DWORD *)v1 + 523) = word_558174;
    . R4 E! T1 ]; W
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);. U# a2 U9 L" D- k  a4 O
  124.   v52 = v6;9 r- o% |# q1 A* o' w
  125.   v51 = v7;
    5 ?( U( F2 B- `! }- [6 I2 |
  126.   v50 = "Screen resolution is %d x %d.\n";7 L; ^, r) w) E
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;# d& ~0 H$ u* N3 z+ M! {# u
  128.   v8 = (FILE *)sub_4D7E8F(v50);
    $ H6 v: k7 u" [1 \. Y
  129.   fprintf(v8 + 1, v50);! h  `4 F  U1 R, \" c7 l
  130.   v9 = *((_DWORD *)v1 + 522);
    1 r+ u. J. |( M' u( B5 f. I
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);
    0 g! ?3 |2 P$ o; y( T4 |
  132.   v10 = v54;5 R1 B5 U! U* X1 @$ W+ [7 }
  133.   *((_DWORD *)v1 + 396) = v9;# e5 q0 _- h2 j3 L  v
  134.   *((_DWORD *)v1 + 397) = v10;
    # B- {" C$ F* H7 y
  135.   v55 = (double)v9 * 0.0009765625;
    1 p" |* ^  F5 ]# i
  136.   v11 = v55;
    / s: T6 o( m0 z  ~, i* C
  137.   *((float *)v1 + 520) = v55;0 [+ l& F- j8 Y1 v$ b6 [% \8 ~
  138.   v55 = (double)(signed int)v54 / 768.0;
    6 f% b, e0 m5 S; b( v
  139.   v12 = v55;' K0 ~( Y; e6 q, _9 w* ?3 P, T, M' |
  140.   *((float *)v1 + 521) = v55;, B- ]# K' V7 k. ^8 h5 A# E" @
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    " Z' l1 g4 E+ y8 C  i8 o
  142.   v52 = (const char *)1;
    6 F5 ^% y5 i4 S; y. N
  143.   v51 = (const char *)(v54 + 11);  g3 i- \' L9 h) @2 T1 G
  144.   v50 = (const char *)(v9 + 6);9 E! ~& U3 l2 J- w' m) K5 g
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    ! _1 `2 O" v- H0 {
  146.   *((_DWORD *)v1 + 515) = 0;
    & A$ u! c+ U$ d  {( E
  147.   *((_DWORD *)v1 + 517) = 1024;
    7 B/ E6 _0 J8 T# h' m
  148.   *((_DWORD *)v1 + 516) = 128;
    - o0 a% H- _4 a+ D4 S
  149.   *((_DWORD *)v1 + 518) = 640;( z! b+ D* w2 y& O' h
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);
    4 `3 S% b, @8 I2 i! w. v2 \
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(
    4 s: g' C2 }9 s( p" U6 c4 o
  152.          *((_DWORD *)v1 + 384),
    * u3 y1 O' F6 n  _
  153.          0,
    4 g7 q! ?$ O' F/ A, Q) i4 M
  154.          1,/ E" G, M" p1 z4 v$ ]' F3 k1 s9 J! m
  155.          v61,2 [9 b% k  l. O( l* S0 X! S1 F
  156.          21,
    % D# q* n! @. J1 _6 \2 k* W
  157.          75) < 0 )
    # @! t1 s" s; e( y$ Z) Q
  158.   {8 q* |9 i% @. [- P% U9 J% F
  159.     v52 = v5;2 e" h8 n5 n/ l
  160.     v51 = v13;2 I  j" ~4 V9 `4 z/ q: }" `
  161.     v55 = COERCE_FLOAT(&v51);
    : `6 m' c# b5 F# r& ~+ A
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    3 X. J8 ?* u+ K* ~3 g5 y* Z
  163.     v50 = v47;
    , g4 Y( A. N) x4 w' W
  164.     v54 = &v50;
    8 K7 T, y  {* D
  165.     v62 = 0;% e9 T" g" f! n, }& u
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    / W0 ~" y6 ~; ~: }4 b: H
  167.     v49 = 118;
    3 C; u, O% \8 F4 h, _0 Y5 O$ X) ~+ `
  168.     goto LABEL_28;$ |9 e& E% k# y
  169.   }% _) p/ S' i$ P5 L0 r! K, q/ d
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";
    $ k! f% e0 N$ N/ G
  171.   *((_DWORD *)v1 + 576) = 24;
    , @2 O; b+ c" O" l4 k
  172.   *((_DWORD *)v1 + 577) = 8;# o2 y/ j: A5 a* Y3 {, V0 C! P
  173.   *((_DWORD *)v1 + 406) = 75;$ T" r- ?3 A( M$ f9 w9 h
  174.   v14 = (FILE *)sub_4D7E8F(v52);  a. \, v! @* u. \$ P
  175.   fprintf(v14 + 1, v52);
    " V6 g; h* n! O* y4 {. s4 a
  176.   *((_DWORD *)v1 + 409) = 1;
    " a+ b, A6 w  i
  177.   if ( dword_558178 != 4' k1 r  \( g2 j: b
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)
    ) E2 M5 B; N' R- f
  179.                                                                                                 + 44))(5 @, i. d8 U( Y( L# Q% J
  180.          *((_DWORD *)v1 + 384),, R2 J" v5 m- J& E
  181.          0,
    1 r/ v) A4 M& [  ], Y+ v7 g6 J
  182.          1,
    , T7 u3 S2 i/ a2 H* _0 H+ e# A
  183.          21,
    4 }, v: X8 i& [: N
  184.          *((_DWORD *)v1 + 404),
    ) |* ^; C5 L" K: b: _+ n7 K+ X
  185.          4,
    4 d' k# d2 i2 [$ Q5 W9 N
  186.          0) )
    + Y* V% K( k% V- B0 k+ A
  187.   {# O3 u& v3 j9 s1 @9 _% V6 T3 |
  188.     if ( dword_558178 != 2. X4 k4 a: d. }* j% \
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384), _& V2 y' r# C! \6 G7 d- A; D
  190.                                                                                                   + 44))(7 y+ b: M* q: X. F
  191.            *((_DWORD *)v1 + 384),' V* {* T: {6 x: ]8 s  @" L
  192.            0,4 s. g; p+ H2 c
  193.            1,
    9 C- q2 ^( p& ~
  194.            21,
    7 e/ C' A/ ?3 \) L5 W
  195.            *((_DWORD *)v1 + 404),5 [8 G7 X5 N  C* c: a/ [
  196.            2,
    ) ]$ o" K* X5 X: a; j( k$ Y. r
  197.            0) ). M$ G0 ]6 P) {4 j
  198.     {5 A, o1 Y" X/ q3 }& v' ^
  199.       if ( (unsigned int)dword_558178 > 0  H4 a8 i' J5 P, {+ n+ Q4 ^
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))($ a: s( V) {% ~# V2 D- e
  201.               *((_DWORD *)v1 + 384)," V6 t3 w1 `! m) y
  202.               0,
    + }$ z- A2 ~; @0 Z9 D8 m
  203.               1,% ?: }1 y6 T3 X/ _5 S* g
  204.               21,/ v8 g- g- @3 n' o! l* T: A2 g
  205.               *((_DWORD *)v1 + 404),9 q: |7 D/ O# j5 @
  206.               1,
    + h. e. @  ~& O9 ^$ o
  207.               &v56) )( m" O$ n& l+ ^; E
  208.       {
    + D7 K/ i% t- c& k, V
  209.         v15 = (unsigned int)v56;
    4 s9 Z5 _  _; K4 W; T/ l* c" W
  210.         *((_DWORD *)v1 + 400) = 1;
    6 r5 w8 Z) A. Q1 ]
  211.         v16 = dword_558178;
    5 c# J6 n' q2 @6 u& ?
  212.         if ( dword_558178 >= v15 ). V. W4 D2 l) b" n
  213.           v16 = v15;; Y" o$ A$ l& e
  214.         *((_DWORD *)v1 + 401) = v16 - 1;/ J( ?2 I# R9 V6 G! s: r
  215.         if ( dword_558178 < v15 )
    . y; K0 H4 h2 F: [6 ~- t$ `
  216.           v15 = dword_558178;! O- r0 ]$ c* `7 F# L
  217.         *((_DWORD *)v1 + 578) = v15;9 {3 k! ]$ c) m2 P0 g
  218.       }
    - D' y3 ?* ~6 w; H. ~. k2 D" @- U
  219.     }
    , S' r% A4 Q. |" Y8 E" B
  220.     else
    ! g* f# W" [7 w! ?  b' N
  221.     {7 @9 o9 ?4 h  R( [) y7 b4 `
  222.       *((_DWORD *)v1 + 400) = 2;/ _8 ^' x; _( [# y8 k
  223.       *((_DWORD *)v1 + 578) = 2;) m0 l" Y1 u4 a- Z
  224.     }
    + y/ @/ j; ]; B+ n) }" R2 I+ A3 H1 Y
  225.   }
    % ^1 A9 w  N4 ]) k$ \# U" ^- c
  226.   else; o" R1 s0 }8 [5 r! j9 q
  227.   {: k8 T# O( {9 ?0 q+ z
  228.     *((_DWORD *)v1 + 400) = 4;% ~; J0 T% J& q2 x! @( W
  229.     *((_DWORD *)v1 + 578) = 4;0 y* }5 _0 I+ T6 E" {) n
  230.   }
    4 w3 y) }( r4 M& r2 y
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);6 ^' Z8 R+ L5 V5 v
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");
    ; t* h& F; W  \
  233.   fprintf(v17 + 1, v51);
    7 t3 d+ M$ D% q# z# Q
  234.   v18 = *((_DWORD *)v1 + 384);0 a$ I+ V( v2 i0 C5 q
  235.   v19 = *((_DWORD *)v1 + 578) == 0;4 d5 a' ]; T9 K$ {
  236.   v52 = (const char *)827611204;: b4 K7 p3 I) Y( N
  237.   v51 = (const char *)3;' v1 R8 u% k* c- Q# V, [, t5 a3 k
  238.   v50 = 0;
    ; u- z' t1 J- ^: O/ @3 N; H
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;$ Q- e# y8 o/ c9 {) S
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))(
    1 {) V' g; p4 @  P/ i+ G
  241.           v18,
    . j( \/ t4 M: w: ]) d8 x4 V% P( j
  242.           0,
    7 j+ ]0 U; N! `# v- R
  243.           1,
    2 w. x1 r# f( }1 A
  244.           v61,! u( }% M+ G- m: d9 Q- [
  245.           v50,
    2 Q" A- i7 M+ n( @. k6 H0 W
  246.           v51,
    $ |) f3 y7 Q9 Q% q" z
  247.           v52);
    1 z, j) F# w/ l% F2 z& W
  248.   v21 = *((_DWORD *)v1 + 425);' t$ I% h- ~# ]6 C$ q# A
  249.   v22 = v20 < 0;9 M8 F' |5 o0 H# G! ^
  250.   v23 = *((_DWORD *)v1 + 384);" I1 k; z4 j5 u: i9 m6 z& i" _
  251.   v1[2316] = !v22;3 P  V* B$ `2 u! w  [# a+ g! r
  252.   v52 = v1 + 1540;
    ( Z2 P& ^; |( \& |, S
  253.   v51 = v1 + 1584;
    # I& Y: w# `7 A
  254.   v1[2317] = (v21 >> 14) & 1;7 S# L' q- W- V' j5 D' b
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    ) C8 z% B" Y2 U0 _8 Y
  256.                        v23,
      x9 O* s3 B; v+ H' o1 K
  257.                        0,  V+ p) b+ o  ?( l3 w* f" t$ R7 b
  258.                        1,
    # v$ p' L) u5 A* Y
  259.                        hWnd,
    9 ]2 w1 L9 T/ q  N" _) E
  260.                        64,
    " Y8 B; P0 m+ F6 {0 i9 w7 d
  261.                        v51,
    " F  y+ w* ?* j+ }: a
  262.                        v52);
    - }2 ^( X) Q4 J' f4 _+ U$ t. `
  263.   if ( (signed int)v5 < 0 )& v, h) K1 g- L# G  ?
  264.     goto LABEL_27;# N$ D7 n4 D& T0 I$ J
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )4 u! K, j/ i9 Z
  266.   {
    # V# `, ?/ A# V# j
  267.     v25 = *((_DWORD *)v1 + 609);9 @. @7 [0 `. t6 B2 V
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));- w% F2 Y! I( \# t
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);
    $ C& O; \/ T2 Y. @8 |8 d
  270.     v27 = *((_DWORD *)v1 + 609);
    % T" m: c+ |& U& O; O4 [
  271.     *((_DWORD *)v1 + 496) = v26;! K" r1 U# m7 y6 s9 T: A
  272.     v28 = (const char *)sub_418670(v52);+ P' x2 e" P+ f. i8 v0 r
  273.   }
    . h6 e7 G) k4 J3 q# a  S; N
  274.   else7 C$ ]2 e0 d7 S$ [; g
  275.   {: B% C/ u: h% f9 ~
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);& D' x6 S3 }1 g: D- k3 E, `
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);( [9 K& B9 x4 G: S( s! E8 e+ ?0 d
  278.   }
    4 d. j1 G* [, e) R/ w  I8 `8 U4 i  H
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);
    # w3 [" V! o% J
  280.   v52 = v28;4 j, @' c: p$ o, [  n
  281.   v51 = v29;0 S. A, m7 z% k9 q% y/ \, Y
  282.   v50 = "PostProcess Surface is %d x %d.\n";
    ! m9 O1 b1 w/ l, R
  283.   *((_DWORD *)v1 + 497) = v28;6 C) I5 y3 w  Y4 B8 R6 {8 j
  284.   v30 = (FILE *)sub_4D7E8F(v50);& _5 X! O; q0 ^" u
  285.   fprintf(v30 + 1, v50);
    8 b2 Z# F- |" I1 W
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);! A- O3 c  b7 c2 q& a9 L
  287.   sub_413100(v1);: I3 e# {. ]# Y( y$ E+ y, j
  288.   sub_411D60(v1);3 }; j( N  f5 a" W5 F2 Y
  289.   v31 = malloc(0x78u);
    + w$ J- w+ n$ d: |& \# z& _
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    6 |/ B) I* e( L, {3 ^
  291.   *((_DWORD *)v1 + 599) = v31;: N2 n) c- V4 n' v9 u* U
  292.   *((_DWORD *)v1 + 600) = 0;
    # O! ?- ?# t/ |, ^% Z. Q
  293.   *((float *)v1 + 526) = v32;0 ~$ n( T& `+ d  T
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);
    1 [: \% V3 J5 ~2 N
  295.   sub_411CC0(v1);  k4 R$ f$ T4 c
  296.   v33 = v53;
    5 o! \* A6 d9 c
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(
    9 F8 e: w' T4 H) m& [" o  b' a
  298.                        dword_559B7C,
    3 X5 \% D6 n- f+ p7 Q) R
  299.                        80,& r2 r- W; E# A
  300.                        8,7 a7 q4 ^6 t& B  x1 I4 E1 i5 [
  301.                        258,
    - a+ m; q, @% ^% S. q* R6 z) {5 z+ [
  302.                        1,) l& P" A' s  k. y/ b
  303.                        v53,5 I/ {; X) z% k
  304.                        0);
    * d6 G4 S) X& ^$ ^
  305.   if ( (signed int)v5 < 0 )% s% e0 `, F7 F* {1 k2 N; d
  306.   {0 ^% j" U! W5 O3 T8 h7 H
  307. LABEL_27:
    # O3 i* u, v. Z: |
  308.     v52 = v5;- ^8 ~' [3 L! d: [$ B5 M
  309.     v51 = v4;
    3 C- d4 G3 Z2 F( G$ n4 ], L2 `
  310.     v55 = COERCE_FLOAT(&v51);
    ) J' Q4 `% j4 R5 Y+ f
  311.     sub_456DD0("Direct3D initialization failed.");9 O6 `: ^: }& E2 b, k; q
  312.     v50 = v48;
    3 Q0 D3 u$ o% m2 l
  313.     v54 = &v50;  ^# e5 X8 @* @# K" T5 L7 R( k3 N
  314.     v62 = 1;) C; i, o& L# P3 J% D2 [3 [
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");) B8 A: c: x) H0 N$ j
  316.     v49 = 205;' @, o7 |4 ?: C: e* N
  317. LABEL_28:( T1 @/ k/ Q$ {. u/ h  ^/ f# L
  318.     v62 = -1;
    % s4 @7 d) w* U; ~3 [' W" G
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);$ M' b/ F; i8 E- m
  320.   }
    4 X& _4 R2 X4 x
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);- n4 p4 r! }; n1 s; q( t# I
  322.   v58 = -1.0;! m/ d+ N7 G% U
  323.   *(float *)v53 = -1.0;' t, X- z( o2 }- Z+ E1 n' e7 E+ k( |
  324.   v59 = 1.0;7 j+ A, x# `8 E# S  J& f8 l4 g
  325.   *((float *)v53 + 1) = v58;
    : `% c0 y$ S) @" z5 G
  326.   v57 = -1.0;
    2 n$ ?( x; `$ o$ e/ Y( b
  327.   v58 = 1.0;
    ! U. w* H9 }3 L+ R
  328.   *((float *)v53 + 2) = v59;9 V- l; L6 C- x, z
  329.   v59 = 1.0;6 B. h* }' W7 ]6 L* E
  330.   v34 = (float *)v53;1 T9 f: U  m% f1 Y3 V
  331.   v35 = v57;
    3 ]% r0 E( P) Q! J0 L
  332.   v57 = 1.0;
    + _% g: @; W; R" f: `9 [
  333.   v36 = v58;0 R) E9 f/ D; k; U: W+ K. O
  334.   *((float *)v53 + 5) = v35;. H+ q& s. E  W' k7 x
  335.   v37 = v59;$ x# Q7 d* d! S5 W" q
  336.   v59 = 1.0;
    7 P8 C4 o. ?' J& h
  337.   v34[6] = v36;
    ' r: g& s; W+ ]. S, ]% f+ S' @
  338.   v38 = v57;
    + `$ V: l' ~( X. z# ^) A5 k6 b
  339.   v58 = -1.0;
    " C1 w% G& r: ^( c$ ]6 R& m  Z
  340.   v34[7] = v37;5 [8 M- U$ H1 o& _- L7 A  s' _2 g2 p
  341.   v39 = v58;
    ' f. Q4 m& }' k4 {
  342.   v57 = 1.0;
    # @7 y1 ~, V$ B1 N
  343.   v58 = 1.0;
      p$ ^5 Q8 p* Y' K7 \
  344.   v40 = (float *)v53;
    ! M7 O2 n" a- p8 \" z1 b6 a# P. i
  345.   *((float *)v53 + 10) = v38;
    " {9 }7 C0 T% z
  346.   v41 = v59;
    8 ~0 |1 l2 W% ~4 n* u2 I
  347.   v59 = 1.0;6 M1 e8 N6 g, Z. n3 _: `& o
  348.   v40[11] = v39;
    4 }8 ^9 s2 ~" Z& r5 P. k$ q  Q
  349.   v42 = v57;" j- K' m5 q$ m: [
  350.   v40[12] = v41;7 q7 b: u3 L. h6 x6 F% X9 \
  351.   v43 = v58;! P' D' @  m7 {+ l
  352.   v44 = (float *)v53;! T8 w5 b. \! |' x: L- s8 ]
  353.   *((float *)v53 + 15) = v42;
    . Q. j) o3 H7 N
  354.   v45 = v59;
    7 r# \/ c) w+ C6 ?8 b4 B/ X
  355.   v44[16] = v43;
    ; Y5 x; f) y$ v4 q1 g
  356.   v44[17] = v45;
    # Z# D5 e2 t2 p% X, ?4 T
  357.   *((float *)v53 + 3) = 0.000099999997;
    $ F/ C9 ?, t7 `. Y; b9 J7 |
  358.   *((float *)v53 + 4) = 1.0001;
    ( a6 D$ d  b" ^% R! h# k  @& W. r
  359.   *((float *)v53 + 8) = 0.000099999997;/ V* S& c  k, W+ y
  360.   *((float *)v53 + 9) = 0.000099999997;  s' z: d$ j% E; ~; R) X
  361.   *((float *)v53 + 13) = 1.0001;
    8 [; G  f) T" `: @3 O' J% r) L
  362.   *((float *)v53 + 14) = 1.0001;
    8 e- h4 P, m- F! U
  363.   *((float *)v53 + 18) = 1.0001;
    8 N. ^% d5 D- `; ]
  364.   *((float *)v53 + 19) = 0.000099999997;
    + G3 j0 t+ M6 H/ i+ `  H; z% d
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);6 M* N, H& M. a, I: v. ?
  366.   return 0;5 \  @- ~1 i5 N0 }/ _% R5 G8 z
  367. }
复制代码
0 {: i, K" T$ E1 Y
用Cheatengin寻找一个字幕之后,在以下地方断下
( m% s0 f7 r& j7 ?) W# {
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

7 o" L4 M& X; E/ T/ q- K- P2 |( n' E3 m0 ?! o1 _3 z! [
在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
' l2 y$ n2 }6 t7 i稍后需要仔细分析。字幕显示函数应该在本函数上下。' l* S; t( L  K6 R; c0 V* G
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

* P6 ?) _% W0 X* B. B1 L6 x2 u
& C! h/ t8 x' }6 |6 u' q
: ^& [  Z4 {$ O+ I% w




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