冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2023-8-25 17:45
标题: 【Directx9游戏汉化 #4】 记忆过载 (Overclocked) 寻找CreateDevice
本帖最后由 shane007 于 2023-8-26 16:32 编辑 1 I( |$ q$ q* ?8 z, W
1 M7 l/ c4 D! U3 d. m& k
这个游戏以前分析过,这次再写仔细些,
3 v2 k( N1 D) O1 c( s5 t  ECreateDevice应该就是以下这处了,我用ida pro的F5功能看了一下伪代码,更确定了。1 d. }- r5 {8 U. J: ^/ Z6 l* v$ U
这游戏构造比较简单,CreateDevice是在exe文件内完成的。dxwnd窗口化成功。! C% z( b" D  b

2 ?- }9 M0 c' H1 {$ y+ M! \' c5 G+ q
  1. .text:0041641A                 push    ecx
    2 {4 E$ g% k8 }0 s0 p* ]- A, z3 W# [
  2. .text:0041641B                 mov     [esi+90Dh], dl$ T. ^" N, m& x" l: ]5 b  a
  3. .text:00416421                 mov     ecx, hWnd
    ( X" @4 L% E4 @6 f, M
  4. .text:00416427                 mov     edx, [eax]  X* {  \8 C1 N  N3 }( {$ I
  5. .text:00416429                 mov     edx, [edx+40h]$ S, I& p& R: s: Y( k; s$ \
  6. .text:0041642C                 push    40h
    0 b) ^6 q, y! C3 R4 F2 n- {; K
  7. .text:0041642E                 push    ecx9 `- [0 }% a2 P" U/ o2 Q
  8. .text:0041642F                 push    1
    $ H' F: u; u2 A' t) v$ ]  d0 h0 ?
  9. .text:00416431                 push    ebx
    ' ^& I0 u2 P8 q4 Y: P
  10. .text:00416432                 push    eax; W4 l: c6 |8 J! S! n
  11. .text:00416433                 call    edx
复制代码

  1. 1 o9 a  o5 X1 \: Y* K. y; C
  2. int __thiscall sub_415FF0(char *this)" M( N: X; `8 Y* M: g) E
  3. {% p* T$ z& ?, b
  4.   char *v1; // esi
    3 [' ]% Q: V( n9 [4 u6 t+ c
  5.   FILE *v2; // eax
    ! [: J- ^2 u# _0 ^9 x
  6.   IDirect3D9 *v3; // eax( M, R' D. F4 E9 I  f
  7.   const char *v4; // ecx
    7 \( E+ v! F4 M! a' N) ~$ l
  8.   const char *v5; // edi
    0 j: v) @+ \: _2 V
  9.   const char *v6; // edx7 _( A+ R% n% i5 y5 A: w* Z2 J- T
  10.   const char *v7; // eax
    9 [! W8 z5 A  q6 N
  11.   FILE *v8; // eax. x( s. o" y  o0 o
  12.   signed int v9; // ebp
    2 w' X6 ?7 Y$ U9 j( O+ C
  13.   const char **v10; // eax
    ; c( h5 o! A$ a. _0 [, l( C: ]2 l
  14.   double v11; // st7' R& j* x( u3 {/ V
  15.   double v12; // st6+ x9 m2 p+ t" E1 @' w  S
  16.   const char *v13; // ecx0 j# G# [  C2 q7 ?7 g) M
  17.   FILE *v14; // eax
    , Y* V1 G; ]3 G: y9 X0 e. p* N
  18.   unsigned int v15; // eax
    - c* C4 T# X2 m1 N$ A: a; ~
  19.   int v16; // ecx( k- R" U2 Q! D* y1 l
  20.   FILE *v17; // eax
    6 S& O0 Y: y2 i' |$ `$ i
  21.   int v18; // eax" Q7 e# x: f7 z- ~7 M" d
  22.   bool v19; // zf
    : ~- |! ]3 I4 x! N! s4 V4 a  i# b
  23.   int v20; // eax
    4 n) M7 \2 k; V
  24.   unsigned int v21; // edx5 R) s- R2 S& h+ n; A& H1 \2 V
  25.   bool v22; // sf
    & u6 _1 k% B" w6 B( Z
  26.   int v23; // eax
    * g9 ~9 e$ s6 f8 c, i2 B
  27.   int v24; // eax
    & N0 P0 A/ U7 m, M3 o$ R
  28.   int v25; // ecx. [! d8 I* m& m3 B7 m
  29.   int v26; // eax
    8 B& \5 s2 t2 w$ z8 Q% W
  30.   int v27; // ecx
    4 d/ j. Z4 k; u' F9 k
  31.   const char *v28; // eax! V8 @* J. u4 {  u
  32.   const char *v29; // edx
    4 d5 ?; s6 f4 m. ]! G
  33.   FILE *v30; // eax+ m3 W( V! N7 P/ G( G7 K
  34.   void *v31; // eax, Q+ o, C& @4 F2 ?
  35.   double v32; // st7$ y# z2 z7 a* I- I5 c5 C
  36.   _DWORD *v33; // esi6 [2 P8 `, C# j. i2 f7 }% v1 m- Q
  37.   float *v34; // eax  O+ B! e- ?- @2 C' L. g/ _+ B
  38.   float v35; // ecx
    " v- j6 Y0 v, J% W% S% \
  39.   float v36; // edx& i2 S/ A( \$ Z! S6 F. A' J% G
  40.   float v37; // ecx
    / K& m: z( n% g7 u/ H
  41.   float v38; // edx
    ! o& F1 B7 m7 o% q! _
  42.   float v39; // ecx
    1 v6 v3 f* s  c8 ~
  43.   float *v40; // eax
    6 U7 R4 I  r7 x  r8 f  y1 g+ m. L
  44.   float v41; // edx
    3 s% Z0 l# B) K: {
  45.   float v42; // ecx
    1 z9 y& f2 y( G
  46.   float v43; // edx
    1 c# J5 i7 ?$ T7 |1 `
  47.   float *v44; // eax1 A  Y4 J- k! j0 i) f! P. I, p2 \
  48.   float v45; // ecx
    - O6 y: [* k/ \% T
  49.   const char *v47; // ecx- D( ~. X$ @8 h! }  C; ]
  50.   const char *v48; // ecx$ |& t1 n+ q/ \' W& p
  51.   signed int v49; // [esp+A0h] [ebp-5Ch]
    + v9 X9 D) C( U/ P. @. e' h
  52.   const char *v50; // [esp+A4h] [ebp-58h]( U' G* q8 _2 y# E+ t
  53.   const char *v51; // [esp+A8h] [ebp-54h]% f$ U: q+ w9 v/ `/ ~+ \
  54.   const char *v52; // [esp+ACh] [ebp-50h]4 x' j% z7 S) o2 f
  55.   _DWORD *v53; // [esp+C4h] [ebp-38h]% c8 ]4 Y. b, y& V  g5 s6 W$ v! ~
  56.   const char **v54; // [esp+C8h] [ebp-34h]
    8 Y" _+ P7 B5 f: n  f" \7 N
  57.   float v55; // [esp+CCh] [ebp-30h]" E- s% w& B, P) v$ Y$ W. @! r1 n
  58.   const char *v56; // [esp+D0h] [ebp-2Ch]& C$ O( [& _, s3 A
  59.   float v57; // [esp+D4h] [ebp-28h]
    ! [; d7 j6 c1 |0 V+ h$ C
  60.   float v58; // [esp+D8h] [ebp-24h]: g$ m$ f( ]6 W" L/ Z6 |
  61.   float v59; // [esp+DCh] [ebp-20h]
    2 Q* d& ]2 j& p9 w" K
  62.   char v60; // [esp+E0h] [ebp-1Ch]
    8 @; {9 G# O; r
  63.   int v61; // [esp+ECh] [ebp-10h]
    % d7 i6 ~' k% X6 ?- b
  64.   int v62; // [esp+F8h] [ebp-4h]! V7 u. K5 R: s+ }
  65. & O! l* v% Q- ~6 U5 {, b& K2 A
  66.   v1 = this;4 L8 W" I, A# ?  r: ?. b# n
  67.   v2 = (FILE *)sub_4D7E8F("Initializing graphics...\n");# v1 p" Z' Z: k" q+ F$ O( `" N. n* w
  68.   fprintf(v2 + 1, v52);1 Y2 X. h5 d7 T, E
  69.   *((_DWORD *)v1 + 492) = 0;$ B+ }/ f9 n4 X6 {0 Y0 T3 v2 H. }
  70.   *((_DWORD *)v1 + 609) = 0;" |: R' ?1 B. [2 \7 g0 X
  71.   *((_DWORD *)v1 + 611) = 0;
    - z# Y) X- d: a
  72.   *((_DWORD *)v1 + 610) = 0;, Z6 U/ A2 p# w/ l1 M+ F( D9 m
  73.   *((_DWORD *)v1 + 613) = 0;
    3 M1 k0 s8 V' n1 @. R/ @- l
  74.   *((_DWORD *)v1 + 612) = 0;4 ?& F% n4 [- C8 V
  75.   *((_DWORD *)v1 + 614) = 0;
    ( ?; s# h  [1 {" q$ o3 W6 u
  76.   *((_DWORD *)v1 + 601) = 0;
    " c+ M6 A2 i9 y+ V% K# y( p
  77.   *((_DWORD *)v1 + 600) = 0;
    2 q! B+ L# U/ R6 R7 [. g( h. b
  78.   *((_DWORD *)v1 + 615) = 0;6 Z+ Y# v, d; H. N6 z8 }; P# D
  79.   *((_DWORD *)v1 + 395) = 0;
      U- ^% b! b2 F" V4 t2 p) U. @# O
  80.   *((_DWORD *)v1 + 488) = 0;" _0 e, w2 S3 c, E1 e
  81.   *((_DWORD *)v1 + 486) = 0;
    ; q/ g! H, E9 p
  82.   *((_DWORD *)v1 + 487) = 0;
    1 c4 F$ k, E- \4 d- J4 A
  83.   *((_DWORD *)v1 + 489) = 0;1 I5 j0 |; L& Z/ G* y$ G
  84.   *((_DWORD *)v1 + 491) = 0;, H5 Z0 r& o* l# A
  85.   *((_DWORD *)v1 + 514) = 0;
    & A" B* ^  O# Y
  86.   *((_DWORD *)v1 + 597) = 0;
    4 w  P, m1 b7 T% `! {2 _% A
  87.   v53 = v1 + 1968;
    9 z/ F9 l$ d! y% f
  88.   *((_DWORD *)v1 + 498) = 0;
    : l0 a' Z- y7 V6 w
  89.   *((_DWORD *)v1 + 499) = 0;
    8 x% A7 C$ z% W. n, h/ p! H
  90.   *((_DWORD *)v1 + 500) = 0;
    # ]1 O  E( e$ e
  91.   *((_DWORD *)v1 + 501) = 0;
    ! G1 @" T6 e9 `% a5 G5 |3 k/ E
  92.   *((_DWORD *)v1 + 502) = 0;, {* ^) Q. N! w: X5 j& k
  93.   v52 = (const char *)32;- P$ G. s. S# J& K4 g2 p) K+ b
  94.   *((_DWORD *)v1 + 578) = 0;9 D$ V9 l# T+ q6 s# y
  95.   v1[2316] = 1;
    2 p& o& X) ?! b) b  {5 R
  96.   v1[2476] = 0;1 _2 n4 r2 w% J. e# p
  97.   v3 = Direct3DCreate9((UINT)v52);
    : ~( ?1 _4 ?) L8 z/ [$ K9 e- F
  98.   *((_DWORD *)v1 + 384) = v3;$ E* u, V/ P8 O
  99.   if ( !v3 )
    7 D: y! f# l5 m1 [: n
  100.   {
    + ?4 w& e+ [+ _" x- X3 H
  101.     v5 = v56;& i  Y0 [% {3 g0 w  a& Q
  102.     goto LABEL_27;& t2 ?' y6 J% |/ b5 P0 ]& y/ p& C
  103.   }
    5 @6 Q* {+ z7 x6 N3 z8 p! Z
  104.   v5 = (const char *)v3->lpVtbl->GetAdapterDisplayMode(v3, 0, (D3DDISPLAYMODE *)&v60);
    % N0 t. S6 z- \; G
  105.   if ( (signed int)v5 < 0 )1 k7 s  a' H% W  R- [+ d& A
  106.     goto LABEL_27;
    4 x5 ~0 ~! H8 F+ ?
  107.   (*(void (__stdcall **)(_DWORD, _DWORD, signed int, char *))(**((_DWORD **)v1 + 384) + 56))(
    : S5 d1 y6 w6 t& o9 i/ A
  108.     *((_DWORD *)v1 + 384),
    3 h- H' }1 c' k
  109.     0,& _; C: O5 P9 `* f
  110.     1,+ `9 d) ]+ \- _8 Y* N, O0 T
  111.     v1 + 1640);; y# b3 W* l" T# a/ o: i
  112.   memset(v1 + 1584, 0, 0x38u);8 w' Y2 n( X% T( e  F2 }
  113.   *((_DWORD *)v1 + 404) = 0;$ q; Q6 N. ^  A8 }# g) x1 p% T
  114.   *((_DWORD *)v1 + 402) = 1;# N" v; }2 J  K; W8 `
  115.   *((_DWORD *)v1 + 403) = hWnd;3 M+ F$ r5 f' ?% C; k
  116.   *((_DWORD *)v1 + 407) = 0;5 v7 o: x8 p" ?) E$ C' }
  117.   *((_DWORD *)v1 + 399) = 1;$ ]. A$ u7 S" x
  118.   *((_DWORD *)v1 + 398) = 21;4 t5 T# }7 H# \! M$ ?2 u9 A
  119.   *((_DWORD *)v1 + 405) = 0;
    / ]8 g; b# U: |$ Z
  120.   *((_DWORD *)v1 + 522) = (unsigned __int16)word_558176;: N! c' I& g- h: s6 N' C% V* N
  121.   v6 = (const char *)word_558174;
    9 |# Y4 d% l3 }. e- [$ a
  122.   *((_DWORD *)v1 + 523) = word_558174;$ Y7 @6 G3 j' {! }. J
  123.   v7 = (const char *)*((_DWORD *)v1 + 522);
    , G; {9 N6 @% ~" x( T* {& F
  124.   v52 = v6;
    ' u6 ]# |4 J0 c
  125.   v51 = v7;
    ; V. i. \* l- K0 Z* c
  126.   v50 = "Screen resolution is %d x %d.\n";. \7 ?; @  a* S2 X, S+ q
  127.   v1[2076] = *(_DWORD *)&word_558174 == 67109632;
    0 \' Z  S! x9 K0 v% y0 l& }/ |7 W
  128.   v8 = (FILE *)sub_4D7E8F(v50);. Q' r  U- r' C- L0 I0 a
  129.   fprintf(v8 + 1, v50);! u. s2 r: ]1 Y4 [+ s" r
  130.   v9 = *((_DWORD *)v1 + 522);
    ! J' T' E$ q) c; B( ^
  131.   v54 = (const char **)*((_DWORD *)v1 + 523);7 x  p' H6 g6 {! r! x9 H/ `8 U; A
  132.   v10 = v54;9 S% k5 m) u2 D6 h. ^6 t
  133.   *((_DWORD *)v1 + 396) = v9;: z% F0 F- J; t: i' @+ n, O
  134.   *((_DWORD *)v1 + 397) = v10;7 r! P- B" W" K: F; G/ m
  135.   v55 = (double)v9 * 0.0009765625;
    - t  q" E* J- k
  136.   v11 = v55;6 ]5 E! I. H- g1 o
  137.   *((float *)v1 + 520) = v55;& f& C2 A! M8 N' N% {+ P
  138.   v55 = (double)(signed int)v54 / 768.0;  m3 B2 {& C- f  ?! d) I
  139.   v12 = v55;
    . g  a2 n8 l/ B
  140.   *((float *)v1 + 521) = v55;
    4 I. M) W% Q/ e/ J1 o
  141.   *((_DWORD *)v1 + 524) = (signed int)(v11 * 1024.0);
    5 e! x; H( u: [- y
  142.   v52 = (const char *)1;1 o0 I4 ?. |+ k8 ]
  143.   v51 = (const char *)(v54 + 11);2 I9 J( N5 E: Z3 I2 n1 D
  144.   v50 = (const char *)(v9 + 6);7 y. N" t" U2 H
  145.   *((_DWORD *)v1 + 525) = (signed int)(v12 * 512.0);
    7 s7 M+ ~2 I+ P5 v
  146.   *((_DWORD *)v1 + 515) = 0;
    " ?, y! R* f- k- D3 |; f) ?
  147.   *((_DWORD *)v1 + 517) = 1024;
    3 C- `4 F) n/ K* P- f
  148.   *((_DWORD *)v1 + 516) = 128;
    " L/ u9 s' O! n' _2 z
  149.   *((_DWORD *)v1 + 518) = 640;
    ( V* t! G  i( t+ O9 v9 c
  150.   MoveWindow(hWnd, 0, 0, (int)v50, (int)v51, (BOOL)v52);' E! U7 D& f# W+ B$ U2 Z8 e* K3 g
  151.   if ( (*(int (__stdcall **)(_DWORD, _DWORD, signed int, int, signed int, signed int))(**((_DWORD **)v1 + 384) + 48))(+ L, a; M0 @# x4 _0 {4 G
  152.          *((_DWORD *)v1 + 384),
    5 F5 M- U0 u* `  d$ ^0 y7 l7 b- ~- C
  153.          0,
    - s% O: u2 b' ]; M3 z
  154.          1,
    7 d1 a& A" l/ v/ b+ N5 W. m
  155.          v61,; _% Q, N3 q, v" c7 E; v
  156.          21,( j" t) ?5 t. [0 |2 ?
  157.          75) < 0 )6 V- N8 C) W& b6 g8 d1 e0 q$ \
  158.   {. ?. c; j) R. D
  159.     v52 = v5;
    - q+ n) d( |& c! U4 f! T  l
  160.     v51 = v13;
    - I6 R- s8 |" `' S
  161.     v55 = COERCE_FLOAT(&v51);5 o/ c& S' J5 f
  162.     sub_456DD0("Direct3D initialization failed. No appropriate Depth/Stencil-Buffer-Format found.");
    $ h/ U/ w5 {  `% N: ~
  163.     v50 = v47;
    9 x7 P* q; q/ z. i0 \
  164.     v54 = &v50;
    5 ^$ \$ V* S1 O0 w0 Y( A; q
  165.     v62 = 0;
    . W+ p/ k' |: p5 @* w
  166.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    4 a3 ?1 d1 H1 ?" h3 y9 |9 a
  167.     v49 = 118;
      u8 K$ h# M, n8 y
  168.     goto LABEL_28;) q: s1 j0 C7 i* w
  169.   }: a3 i0 t& H3 U& X0 |) [0 _, o$ C
  170.   v52 = "Depth/Stencil Buffer is D24S8.\n";# |( S3 K' f7 V; s1 h5 X
  171.   *((_DWORD *)v1 + 576) = 24;
    6 T7 A3 [9 }, N; L& q# N
  172.   *((_DWORD *)v1 + 577) = 8;( x: ]0 t& e/ i6 u* c" E
  173.   *((_DWORD *)v1 + 406) = 75;9 m; D& e6 J- f5 h
  174.   v14 = (FILE *)sub_4D7E8F(v52);
    " R" k7 Y! {2 J( D* Q
  175.   fprintf(v14 + 1, v52);, O/ d0 M) ?+ q, Z7 u* Y
  176.   *((_DWORD *)v1 + 409) = 1;2 X. r1 W+ Q8 i# F+ C  D) ?) ~
  177.   if ( dword_558178 != 4
    " ~' h% w4 o6 Y6 U( Z5 ?( u
  178.     || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)  \! d+ s9 r  @1 w) t0 @$ i- b) [
  179.                                                                                                 + 44))(# b. _" i3 r  I' j8 [% e
  180.          *((_DWORD *)v1 + 384),7 J% g% h3 O% G9 A+ v. g/ ^% @
  181.          0,
    . ^% Z: L2 K% H
  182.          1,9 M+ c: V/ H* l/ j0 c
  183.          21,0 Q6 s/ [! ?# Z" Z9 L- D% C/ j
  184.          *((_DWORD *)v1 + 404),' u8 p, f0 S4 v' e2 t4 j
  185.          4,
    & v8 a& x5 T4 G7 U% P& K
  186.          0) )- s; s4 w8 k+ z
  187.   {
    9 t( |) {8 D: @
  188.     if ( dword_558178 != 2
      t" d' s/ V( `
  189.       || (*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, _DWORD))(**((_DWORD **)v1 + 384)/ u* Y8 u) \. w! _
  190.                                                                                                   + 44))(9 C& d+ Q2 S. ?1 Q' e, n
  191.            *((_DWORD *)v1 + 384),  H3 @" Z# G+ \8 O7 u4 R7 F' A) K4 n
  192.            0,
    ( k8 T# c1 F8 |  G$ n( U
  193.            1,% X1 U" U7 e5 l7 e
  194.            21,
    & L* ~3 P, I  U4 Y: ~
  195.            *((_DWORD *)v1 + 404),! Z9 Y( y, `: j, y4 \
  196.            2,
    & v9 l1 K) `2 u8 h  G% U
  197.            0) )
    . v5 f& e1 q$ X$ l# @# i4 Q4 n( V1 ]
  198.     {( @% P# i- P9 w# [# P/ X; C
  199.       if ( (unsigned int)dword_558178 > 0
    . V+ M" G- G- D) ^7 k; _) [
  200.         && !(*(int (__stdcall **)(_DWORD, _DWORD, signed int, signed int, _DWORD, signed int, const char **))(**((_DWORD **)v1 + 384) + 44))() I# y1 H% s& O* Z: k* S% A
  201.               *((_DWORD *)v1 + 384),
    1 K7 K5 l3 {0 G* }
  202.               0,4 _( b2 @& }+ I7 O' w4 @
  203.               1,
    2 T9 O# ]" W, E% a+ i- B
  204.               21,2 M) ^( |" R4 c, c9 P0 u! W
  205.               *((_DWORD *)v1 + 404),
    ! u/ y% N( A+ ]3 g* W7 A8 C! ^
  206.               1,: p. e9 j: l/ `/ O
  207.               &v56) )
    $ l& b  J+ H; ]
  208.       {- \. X2 y  Y$ V7 q5 f1 k
  209.         v15 = (unsigned int)v56;
    , `  j% Y, c2 }, V
  210.         *((_DWORD *)v1 + 400) = 1;6 U! u  P7 w4 G5 h9 k3 |
  211.         v16 = dword_558178;% x/ i+ w& Q) Z! C
  212.         if ( dword_558178 >= v15 )
    ; E8 \- V; e* L6 p3 }$ J8 F/ S5 u# W
  213.           v16 = v15;
    + u3 v! C% a; }/ m
  214.         *((_DWORD *)v1 + 401) = v16 - 1;
    & ]5 n- E: S. p' ?: D6 z
  215.         if ( dword_558178 < v15 )" x+ }. u) R) c+ Z, I, D+ v
  216.           v15 = dword_558178;' e' y1 t+ b" s6 n  \
  217.         *((_DWORD *)v1 + 578) = v15;
    + O& Z+ h3 x& h5 e' L3 ^4 Z
  218.       }$ u" m. F& M. o8 k- J. [  I
  219.     }
    % Y/ j6 K. c- v! @; u
  220.     else
    0 m) l* X# z. D! ?6 n# W) l
  221.     {
    0 g0 x, ^% r7 t
  222.       *((_DWORD *)v1 + 400) = 2;8 Q7 i3 S% Q+ O8 X# o
  223.       *((_DWORD *)v1 + 578) = 2;8 i( }9 r/ c7 |% R) K$ n
  224.     }3 m" t5 b, ^; _# f; |- ^
  225.   }
    ) b( x" G+ Y0 r. y8 @2 K1 o
  226.   else) V, g1 i* G, q% @
  227.   {
    " B& D' g$ K5 g
  228.     *((_DWORD *)v1 + 400) = 4;* Q, a% }' A) f4 A
  229.     *((_DWORD *)v1 + 578) = 4;
    ( o9 U8 Y# s' t; D7 U
  230.   }/ }* h5 W/ N. m  W1 e2 u
  231.   v52 = (const char *)*((_DWORD *)v1 + 578);# P3 S& z  S3 E
  232.   v17 = (FILE *)sub_4D7E8F("AntiAliasing is %d.\n");( @% I0 q; Y& k5 r4 S
  233.   fprintf(v17 + 1, v51);
    " O& Y% Q4 o8 Y& Y/ E
  234.   v18 = *((_DWORD *)v1 + 384);
    4 ]! h7 X# P. z9 t% Y% W
  235.   v19 = *((_DWORD *)v1 + 578) == 0;8 T+ J1 A. D; N$ e2 ^3 k; z  X
  236.   v52 = (const char *)827611204;
    . W$ A0 o! T6 F) U% ?
  237.   v51 = (const char *)3;
    1 ^0 K8 S8 H# v' R* U
  238.   v50 = 0;& I1 f" Y0 ?- n) P  e
  239.   *((_DWORD *)v1 + 402) = 2 * v19 + 1;/ c, j" R5 C5 V4 x2 h
  240.   v20 = (*(int (__stdcall **)(int, _DWORD, signed int, int, const char *, const char *, const char *))(*(_DWORD *)v18 + 40))($ p* j& i, @. q5 J6 k
  241.           v18,3 [: M- k/ z' E5 d/ z
  242.           0,
    7 F; t2 A. N, l3 q# f/ f! I
  243.           1,2 z4 a" k1 G$ K& H1 C( d7 Q
  244.           v61,
    % {  X+ ~6 ~! Z5 z- K5 e  d
  245.           v50,
    : o  j, i, I) Z4 B
  246.           v51,
    2 P' R& a2 u& S7 N* q
  247.           v52);$ }4 e+ ]9 V8 v7 z
  248.   v21 = *((_DWORD *)v1 + 425);3 v9 h1 V6 ^3 W6 m$ ?5 d
  249.   v22 = v20 < 0;/ ^, n1 G. f% w* @: z/ M& ^
  250.   v23 = *((_DWORD *)v1 + 384);9 e# V8 }  S0 a5 u  @
  251.   v1[2316] = !v22;0 w1 v/ E7 b$ ~/ k
  252.   v52 = v1 + 1540;2 s& I; @: a4 R2 R& F# J! v
  253.   v51 = v1 + 1584;
    5 p9 G" }# E8 |' d2 f# k( @& p
  254.   v1[2317] = (v21 >> 14) & 1;
      P* Q4 ]' t3 G! S: C, f
  255.   v5 = (const char *)(*(int (__stdcall **)(int, _DWORD, signed int, HWND, signed int, const char *, const char *))(*(_DWORD *)v23 + 64))(
    % M6 u# m# ]6 A( Q
  256.                        v23,! h5 l( D* ^( h% \' m, _
  257.                        0,
    2 u: \; w! |3 F$ z' w+ J+ x9 P/ z
  258.                        1,
    ) {% C. _" K7 E1 a3 x" c
  259.                        hWnd,
    6 u2 O/ y: y$ n  g" p& l9 G  Y- Z4 ]3 _
  260.                        64,
    . [' l; ?# w! x, L: ?3 A
  261.                        v51,
    0 o) t/ y- `6 t; @' `
  262.                        v52);& u) |9 E" f* R& o
  263.   if ( (signed int)v5 < 0 )/ p' ^- C( Q% W7 ?5 E
  264.     goto LABEL_27;' L, y2 G7 K  s& _+ u5 ~! q# A% a
  265.   if ( dword_558180 && ((v24 = *((_DWORD *)v1 + 425), v24 & 2) || v24 & 0x100) )6 ^/ p. i, D( d6 s
  266.   {: S8 C& b+ n5 P6 O8 q* h8 g
  267.     v25 = *((_DWORD *)v1 + 609);0 }. d5 L% u4 @2 A: u9 Z
  268.     v26 = sub_418670(*((_DWORD *)v1 + 522));
    # g6 h5 l) P3 ~4 j6 K
  269.     v52 = (const char *)*((_DWORD *)v1 + 523);4 f, r: ?$ b2 L/ }
  270.     v27 = *((_DWORD *)v1 + 609);) p9 R( L7 T9 W, ]' |
  271.     *((_DWORD *)v1 + 496) = v26;% f0 `* \4 D) K  O: r* Z/ P
  272.     v28 = (const char *)sub_418670(v52);
    - H; _% X/ F; c! A
  273.   }: t5 p1 i8 Q  O, e5 z% S' A
  274.   else; @. s6 x( ^4 s2 H; g2 A7 N: h
  275.   {  ]2 i( V& E+ @, ?4 M2 G, V9 O
  276.     v28 = (const char *)*((_DWORD *)v1 + 523);
    9 ^4 j) r2 g  I5 y
  277.     *((_DWORD *)v1 + 496) = *((_DWORD *)v1 + 522);0 q# g- C2 L6 M# P( S
  278.   }* |/ X! `$ W: k
  279.   v29 = (const char *)*((_DWORD *)v1 + 496);3 A- {9 y, Y) r6 I! M
  280.   v52 = v28;/ U' d& l& i7 \$ X1 N
  281.   v51 = v29;
    8 R2 J  E7 w0 d$ B* n  f  H
  282.   v50 = "PostProcess Surface is %d x %d.\n";0 T3 b4 I+ \3 S8 e0 h7 L' \
  283.   *((_DWORD *)v1 + 497) = v28;: t: h: q+ c4 D' X; o" h
  284.   v30 = (FILE *)sub_4D7E8F(v50);
    ( u: s$ ?2 R! U7 \. I( T
  285.   fprintf(v30 + 1, v50);
    1 a. J, B+ l, j3 _+ Q* ~9 H
  286.   (*(void (__stdcall **)(_DWORD, _DWORD, char *))(**((_DWORD **)v1 + 385) + 88))(*((_DWORD *)v1 + 385), 0, v1);6 p$ h1 X- |* k* R' \1 K
  287.   sub_413100(v1);
      A4 D# B  W1 g9 I) E2 A6 P
  288.   sub_411D60(v1);/ y# r, R& W" r% _. h
  289.   v31 = malloc(0x78u);# }7 o( [6 U1 |4 X! N
  290.   v32 = -0.5 / (double)*((signed int *)v1 + 522);
    # ^, _- r0 h& V3 C; `  d! t8 R
  291.   *((_DWORD *)v1 + 599) = v31;5 a% ?* K4 e$ Q2 @
  292.   *((_DWORD *)v1 + 600) = 0;. g- a, O, K$ r( B3 C( _& C7 M
  293.   *((float *)v1 + 526) = v32;
    7 b% Q  _0 b$ Q1 m- w/ v: M* Q! W# v
  294.   *((float *)v1 + 527) = -0.5 / (double)*((signed int *)v1 + 523);: {. r5 q3 y) g" G; F  H2 S
  295.   sub_411CC0(v1);
    , q1 h+ ]" M& D; m: ?, K9 F1 p
  296.   v33 = v53;3 o  z3 h1 o0 c
  297.   v5 = (const char *)(*(int (__stdcall **)(int, signed int, signed int, signed int, signed int, _DWORD *, _DWORD))(*(_DWORD *)dword_559B7C + 104))(# _0 `5 W, E4 T& n* k
  298.                        dword_559B7C,
    1 W$ ?+ I# ~$ S, q
  299.                        80,
      Z; s: D7 ]  u" X. }3 B
  300.                        8,+ K9 C' c* C0 g9 N, z# t
  301.                        258,# u4 j& Y# ~/ l. k! }5 y3 t& @
  302.                        1,% }9 W8 C/ E' p
  303.                        v53,
    . u. f5 A/ G7 a4 ?/ l
  304.                        0);4 F: F8 f  ?$ g3 N
  305.   if ( (signed int)v5 < 0 )
    ; |. P# w7 u. }4 [9 O0 a) S
  306.   {
    / H+ }# f' Y$ G9 }9 f) J$ q% _; h9 h
  307. LABEL_27:
    ; H4 ^6 ~! d  `$ T0 q
  308.     v52 = v5;
    $ u- ^) g- m5 P9 \! k
  309.     v51 = v4;' U2 {8 K" P- k3 N4 }
  310.     v55 = COERCE_FLOAT(&v51);
    ( y- a# z3 ]5 L. @+ w
  311.     sub_456DD0("Direct3D initialization failed.");( \/ H( {8 E: ?" k  q
  312.     v50 = v48;; M. D. j6 F- R, {/ B
  313.     v54 = &v50;  V2 a5 x# _& w8 Q# L' |7 @3 S
  314.     v62 = 1;; f7 `. v! k7 k8 X
  315.     sub_456DD0("cCougarGraphics::cCougarGraphics");
    " a- Q& I, w7 O! W7 b/ F
  316.     v49 = 205;
    & M' ]" g: ~$ v3 v1 c$ J2 U
  317. LABEL_28:
    ) y8 U+ R/ @, f+ ^
  318.     v62 = -1;
    : R% z4 d" q9 f- f. @! f
  319.     sub_40CB30(1, ".\\source\\class_graphics.cpp", v49, (char)v50, (char)v51, v52);
    8 S# f; h$ a* B7 c. s: {6 @
  320.   }2 R+ l  I/ K' _+ g, j
  321.   (*(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD **, _DWORD))(*(_DWORD *)*v53 + 44))(*v53, 0, 0, &v53, 0);5 M) Z0 I7 v! R
  322.   v58 = -1.0;
    % O0 w2 Q& ^5 Z# ~  m2 J1 k& O
  323.   *(float *)v53 = -1.0;
      i1 T( ?, a; p' a/ ]
  324.   v59 = 1.0;
    1 q- D+ o; \) f4 g0 l/ ]% u
  325.   *((float *)v53 + 1) = v58;4 v( Y0 p2 G1 ?: z9 f1 `
  326.   v57 = -1.0;6 e, D) p+ I2 P  B. q4 S
  327.   v58 = 1.0;: D* g* _" }  M5 p8 T
  328.   *((float *)v53 + 2) = v59;! u/ P$ e- [& S6 B- P% @
  329.   v59 = 1.0;
    9 W" a. @" m) Y' T- M3 S! k, a
  330.   v34 = (float *)v53;
      X; B! {4 E6 Z+ T& Q
  331.   v35 = v57;4 Z# R4 d: l. g0 N
  332.   v57 = 1.0;
    : L* m  f' C9 d* G  h, ?
  333.   v36 = v58;
    7 l  ^* }0 C" j$ j7 p
  334.   *((float *)v53 + 5) = v35;
    9 `8 Q% A+ U" g* O
  335.   v37 = v59;( M# y, ^9 M. I, g/ A  B5 }5 S
  336.   v59 = 1.0;
    - q- H8 d1 N! r" C) y6 ~9 C
  337.   v34[6] = v36;1 ]% o+ L- k6 q
  338.   v38 = v57;
    ) Y" B$ M" t, I" e
  339.   v58 = -1.0;
    % d4 g1 u# ]; I  G7 O: R6 Y
  340.   v34[7] = v37;
    ! r8 t0 t1 z" k3 b" f2 T
  341.   v39 = v58;0 D2 a1 r5 a) b; @3 |1 U0 `
  342.   v57 = 1.0;
    / |# E1 a4 |1 W: S/ K( a
  343.   v58 = 1.0;
    % A+ t, ]! s. z3 n! G& A0 a
  344.   v40 = (float *)v53;
    6 r% t9 q: ~* f2 [* ~6 k) O6 A
  345.   *((float *)v53 + 10) = v38;" v6 l' Y5 p1 O6 E* B
  346.   v41 = v59;
    3 `' c. a1 B5 v% J5 ~+ N
  347.   v59 = 1.0;
    % {& _! E' u+ |3 P4 H7 v
  348.   v40[11] = v39;
      h8 l9 e4 D5 W6 ]& g  K
  349.   v42 = v57;8 g7 M6 d% E1 f4 _
  350.   v40[12] = v41;
    $ H/ P# ^" j+ K
  351.   v43 = v58;9 l5 a$ s6 [0 Q
  352.   v44 = (float *)v53;
    0 \7 r! g) V. r5 G$ \. y( Y- }
  353.   *((float *)v53 + 15) = v42;
    # W8 N2 z5 O+ E# Q' ~( P
  354.   v45 = v59;* e  c! H: h3 s! L6 I
  355.   v44[16] = v43;
    5 f& z, |( P: E  |4 ^
  356.   v44[17] = v45;
    ! C2 x8 P5 ^$ s7 A7 |4 q; q
  357.   *((float *)v53 + 3) = 0.000099999997;! c4 t9 ?- f) }
  358.   *((float *)v53 + 4) = 1.0001;  C+ v3 ^& i) q9 e  v1 `2 g
  359.   *((float *)v53 + 8) = 0.000099999997;
    - V4 Q# I! x$ {1 ^+ ^, F, m
  360.   *((float *)v53 + 9) = 0.000099999997;& r. h+ g3 z5 @$ r5 a2 n! u
  361.   *((float *)v53 + 13) = 1.0001;
    7 t0 n$ ]* `" F; w* \( {
  362.   *((float *)v53 + 14) = 1.0001;
    & W5 ~/ z3 ]; ^2 |* Q  V
  363.   *((float *)v53 + 18) = 1.0001;4 o1 U5 b  \7 Y6 a
  364.   *((float *)v53 + 19) = 0.000099999997;. o! j" M& |5 p6 N# F
  365.   (*(void (__stdcall **)(_DWORD))(*(_DWORD *)*v33 + 48))(*v33);( \, B4 F! L1 ~3 R& P0 c# F4 v
  366.   return 0;; T2 G# W" d; j9 q% \6 [' Z
  367. }
复制代码
3 M& H. B! U/ ?7 I% i( j6 T0 F  `
用Cheatengin寻找一个字幕之后,在以下地方断下0 [8 k* ]9 R( ^7 p, A# \) x( t
  1. <div>ocd.exe+425B9 - 0FB6 D9               - movzx ebx,cl</div><div>004425B9</div>
复制代码

: j  @; q% H/ L2 Y" V3 h
% |$ |6 J( ?# }( ~在ida pro下查看,是这个函数,从代码看a2字符像是索引号。
4 z- t5 S5 A+ ^3 m) K8 V8 Y8 v' f稍后需要仔细分析。字幕显示函数应该在本函数上下。
* A8 Y( L. W9 p; g- C: {/ b
  1. int __thiscall sub_442510(unsigned __int8 **this, int a2)
复制代码

* j. q7 Z. Q+ Z: T
. T/ X: y8 p* s& }% Q$ e1 E
6 a2 o+ ]/ g$ S7 E5 h




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