看了一下惊恐鬼屋Scratches这个游戏。2 o1 X& Z% A8 B
包文件有2个,scratches.res和scream.res,
1 w5 }/ D6 E! {, q% E: [! \& \包文件的格式如下,可以用Game Extractor来解开。
0 I" u0 _8 N# yhttp://wiki.xentax.com/index.php/Scratches_RES
% I+ M' J3 N+ x2 Q9 F x2 ~" y0 K- P( [8 A从scratches.res里面解出一个font-michael.tga文件,就是在游戏利用的字体。; O9 m$ {7 A# D
scream.res里面也有一个字体文件,但是游戏好像没有用到。% u+ H6 K5 N# b( Q" C
2 V) }" `6 y) H8 e用OD调试后,发现这是一个使用opengl API的游戏。 }: D1 L6 f/ n/ d/ d5 }
在某句字幕上下了内存断点,断下来之后找到了和显示有关的代码段。 d& G) L, @& b8 E. ]; A& u
- o2 d- U; @, y! ^, ^. n' m9 ~7 @0040C5D0 /$ 53 push ebx
9 E/ _; d. v; D9 \0040C5D1 |. 51 push ecx
1 N) @- ?* ?# z+ @8 V7 A, J& N( I) V0040C5D2 |. 52 push edx; H: g- V( j t+ ^
0040C5D3 |. 56 push esi
: S p3 {, l/ b3 M7 S/ [+ s9 B0040C5D4 |. 57 push edi
5 J9 G: p1 _$ c0 ^1 d0 g0 @. W0040C5D5 |. 55 push ebp" f3 X3 a& K1 a# ?( [: _# @4 r
0040C5D6 |. 81EC 10010000 sub esp, 1101 a: o3 m6 W/ d3 {8 j& [1 W$ D# F
0040C5DC |. 89C6 mov esi, eax% O9 f3 T P: G }7 f+ e# D% T' @
0040C5DE |. 89C7 mov edi, eax. y& t d0 a; Y) ^1 n
0040C5E0 |. 29C9 sub ecx, ecx' l/ d9 G7 S) E& V* p
0040C5E2 |. 49 dec ecx$ V: d, x& X8 V& H' o" E
0040C5E3 |. 31C0 xor eax, eax
D( J5 b4 B& v6 m! w# I0040C5E5 |. F2:AE repne scas byte ptr es:[edi]
( N0 w2 M: g) o9 w9 H0040C5E7 |. F7D1 not ecx# f: R9 e% P P; J
0040C5E9 |. 49 dec ecx7 w" ?$ B, N2 P3 ^
0040C5EA |. 31DB xor ebx, ebx, E" V! V) S4 P1 c6 ~5 L
0040C5EC |. 31ED xor ebp, ebp
# F9 q' ~+ u$ @+ ~0040C5EE |. 81F9 00010000 cmp ecx, 1000 f" A4 S m+ x2 A" ?9 p5 W
0040C5F4 |. 72 0D jb short 0040C603
8 t/ X' t3 ^' @6 l0040C5F6 |. 81C4 10010000 add esp, 1109 \4 w' N$ f/ V! a/ W0 [
0040C5FC |. 5D pop ebp- Q |! f* N8 {+ D( Q1 C
0040C5FD |. 5F pop edi
8 h( d- b4 U# e0 Y$ D+ M0040C5FE |. 5E pop esi
) J8 x4 M; j) ~. D8 o' n( Y0040C5FF |. 5A pop edx
" q+ @) m0 R! A% a0040C600 |. 59 pop ecx# @0 M* Z5 O$ G! S/ Z
0040C601 |. 5B pop ebx
; I. q6 N# C# y+ `0040C602 |. C3 retn( A6 Y" X) d- Y' G! e0 R3 r+ t
0040C603 |> 89E7 mov edi, esp5 z# X- L4 ]$ t- u
0040C605 |. 57 push edi
9 W3 Y$ m* z; E; P0040C606 |> 8A06 /mov al, byte ptr [esi]% D% i C! T2 F, P% v) B1 b- _$ [
0040C608 |. 8807 |mov byte ptr [edi], al6 q2 k6 [& @$ G
0040C60A |. 3C 00 |cmp al, 0
B0 _( h8 Z0 C: |: x2 I- Q9 C% g0040C60C |. 74 10 |je short 0040C61E5 s& e( j( d) s6 i T. o7 `
0040C60E |. 8A46 01 |mov al, byte ptr [esi+1]
. _9 s9 H1 D3 Q) [" U d- u2 U2 c5 V0040C611 |. 83C6 02 |add esi, 2
- @8 k7 H9 ?8 c# d& ^0040C614 |. 8847 01 |mov byte ptr [edi+1], al
9 t) s( K- k' i0040C617 |. 83C7 02 |add edi, 20 Q" z4 O3 j# |7 I
0040C61A |. 3C 00 |cmp al, 0
Y; R( X2 K0 s! m7 S+ Q" h; h0040C61C |.^ 75 E8 \jnz short 0040C606
. j0 |" P1 `7 _. `$ L3 _4 O0040C61E |> 5F pop edi4 Z2 p8 d/ Z" w4 y1 @" r1 H) Q; ]
0040C61F |. 8A1424 mov dl, byte ptr [esp]
5 C, W$ U" D) Q$ n0040C622 |. 89E0 mov eax, esp
, p4 {4 E2 g6 y/ G5 n9 S0040C624 |. 84D2 test dl, dl! r; I1 d$ X% `" e! W) r
0040C626 |. 74 09 je short 0040C631
' H4 _" h# V+ P' u' u0 T0040C628 |> 8A70 01 /mov dh, byte ptr [eax+1]
0 r% o: w6 f* q! J3 {; w9 C0 G. {: C0040C62B |. 40 |inc eax& r! ^$ J4 G# e2 {2 A# }
0040C62C |. 45 |inc ebp( |# ]+ L2 G% G. w
0040C62D |. 84F6 |test dh, dh* ?8 Z) a3 q7 Y
0040C62F |.^ 75 F7 \jnz short 0040C628* ]$ u1 P. t5 r$ i$ N
0040C631 |> 81FD D2000000 cmp ebp, 0D2% j0 b/ O9 I* E( k! W
0040C637 |. 0F8E 61010000 jle 0040C79E" O' V* n' X; g, G2 e
0040C63D |. 89EA mov edx, ebp3 `* T2 U S5 L
0040C63F |. 89E8 mov eax, ebp {2 Q7 b* A$ R' B
0040C641 |. C1FA 1F sar edx, 1F1 N5 u$ H! d# K) I
0040C644 |. C1E2 02 shl edx, 2
7 T" t" H+ p9 ~( ~4 l0040C647 |. 1BC2 sbb eax, edx
9 b( G& f7 z: R, H5 Y( R0040C649 |. C1F8 02 sar eax, 2
' S! l5 t" l( i2 Q8 a/ P0 O0040C64C |. 89C7 mov edi, eax' N9 v( ~/ K5 a( H- F
0040C64E |. C78424 040100>mov dword ptr [esp+104], 3
+ C. Y3 U* s& L6 T0 T, ]3 l0040C659 |> 89E0 mov eax, esp) E4 e$ Y/ Y# e! g7 Q6 p5 q4 ?
0040C65B |. 31D2 xor edx, edx9 q5 _, ^2 E, s S1 ~
0040C65D |. 8A0C24 mov cl, byte ptr [esp]
! {( u3 z" X+ e- w# y, ^: g( e0040C660 |. 8915 8477EF02 mov dword ptr [2EF7784], edx7 ~4 H1 | R% _( v. q1 V
0040C666 |. 8915 8C77EF02 mov dword ptr [2EF778C], edx- ?5 _; @4 d- ~6 I$ ~! P
0040C66C |. 899424 080100>mov dword ptr [esp+108], edx
: e0 g: t2 f K' Z$ }7 v& {' d0040C673 |. 89E2 mov edx, esp P/ M G- \. [- a) R
0040C675 |. 84C9 test cl, cl
+ o8 f( a' N) G9 v0040C677 |. 0F84 89000000 je 0040C706
- p# C; L# T& q" H0040C67D |. 8B8C24 040100>mov ecx, dword ptr [esp+104]% M3 P, H" ?1 h3 H
0040C684 |. 4F dec edi
& [* u4 B2 s2 I0 z, I! ^' m0 V0040C685 |. C1E1 02 shl ecx, 2
# n+ ^ O( a1 J. s4 B0040C688 |. 89BC24 000100>mov dword ptr [esp+100], edi0 H; x& d, n7 k/ |
0040C68F |. 898C24 0C0100>mov dword ptr [esp+10C], ecx
6 g% P4 m' Z3 t+ b3 B1 e0040C696 |> 8A0A mov cl, byte ptr [edx]
. ^5 W4 c o; r, Q0040C698 |. 80F9 20 cmp cl, 20
( F# s0 c" j- |8 ?/ U0040C69B |. 0F85 6A010000 jnz 0040C80B
0 d1 o4 H% z3 |. E0040C6A1 |. 3B9C24 000100>cmp ebx, dword ptr [esp+100]
$ g8 U' n1 z: I2 ~4 u0040C6A8 |. 7C 53 jl short 0040C6FD
8 j. o- F+ W5 J' B, m# C3 L0040C6AA |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]9 Y3 c% [5 d# q. l5 P0 ]0 o- }1 k! `7 t
0040C6B1 |. C602 00 mov byte ptr [edx], 0
6 t; }! q; k: Q" ^5 v0040C6B4 |. 89C6 mov esi, eax& v. C- o E6 C. q6 k& h/ A: Q
0040C6B6 |. 8BBF 7477EF02 mov edi, dword ptr [edi+2EF7774]
0 t! E& {# c9 v4 z1 \7 n. `0040C6BC |. 31DB xor ebx, ebx
) q$ W- \% A8 H, }* i$ ]& }0040C6BE |. 57 push edi2 R2 I; k% k8 h2 Z/ }
0040C6BF |> 8A06 /mov al, byte ptr [esi]+ ^7 Y. n- ~' ^' n* q5 n6 v5 m% t4 S
0040C6C1 |. 8807 |mov byte ptr [edi], al
$ q- ` w% b6 {/ e+ ?; U0040C6C3 |. 3C 00 |cmp al, 09 c3 W* h' J) _7 |& U' r3 o0 L
0040C6C5 |. 74 10 |je short 0040C6D7
8 o, F8 ^4 O- l% L7 N0040C6C7 |. 8A46 01 |mov al, byte ptr [esi+1]
0 n0 Z% O* o( Y6 A3 \: I0040C6CA |. 83C6 02 |add esi, 2
* F3 t) e5 w! `( n7 F! o0040C6CD |. 8847 01 |mov byte ptr [edi+1], al( e- {8 m, G. G1 o
0040C6D0 |. 83C7 02 |add edi, 2
, y3 X' j% w; T/ _ }& F0040C6D3 |. 3C 00 |cmp al, 07 B. p& ^ b0 K8 K+ N
0040C6D5 |.^ 75 E8 \jnz short 0040C6BF1 b$ K5 P7 n$ [ N3 ]) i& h8 M0 ?6 M
0040C6D7 |> 5F pop edi
/ Q- w) i( j3 K5 e9 e$ W0040C6D8 |. 8D42 01 lea eax, dword ptr [edx+1]
# t! o% U; L) g0040C6DB |. 8BBC24 0C0100>mov edi, dword ptr [esp+10C]2 W# B. n1 q1 A3 T$ j5 [
0040C6E2 |. 8B9424 080100>mov edx, dword ptr [esp+108]% i8 q; V% h0 B+ P
0040C6E9 |. 83EF 04 sub edi, 47 k- d f/ k- {& p
0040C6EC |. 42 inc edx7 U0 { J7 {9 Q- {9 k6 r
0040C6ED |. 89BC24 0C0100>mov dword ptr [esp+10C], edi
& x9 m0 @& }9 r+ X1 w' l( v0040C6F4 |. 899424 080100>mov dword ptr [esp+108], edx+ Z j9 S- s6 f8 N
0040C6FB |. 89C2 mov edx, eax
2 {1 \! ?2 \. d3 J( [+ ?6 t0 a0040C6FD |> 43 inc ebx
# T1 [$ F( [9 Z1 o0 P: ~* j$ U* d0040C6FE |. 8A6A 01 mov ch, byte ptr [edx+1]
?' Y7 a2 B3 h+ y, D0040C701 |. 42 inc edx
( K; m* a5 f+ c, b0040C702 |. 84ED test ch, ch0 H+ e6 s9 R4 w2 ]# m5 M/ [% Y' f
0040C704 |.^ 75 90 jnz short 0040C696
! n+ r. n* ^2 b! m {, F0040C706 |> 83FD 10 cmp ebp, 10- k' ]4 L. y& q0 t7 O- c
0040C709 |. 7F 05 jg short 0040C710) }9 }1 v0 b1 L4 O4 w
0040C70B |. BD 20000000 mov ebp, 20+ v* K( K7 ^% Y' y3 p$ s1 ?$ d. X D
0040C710 |> 8B9424 040100>mov edx, dword ptr [esp+104]! f' w: p7 `3 s7 R* k) o
0040C717 |. 2B9424 080100>sub edx, dword ptr [esp+108]
; U5 y' O; i& P0040C71E |. 85D2 test edx, edx
! Y9 a9 ~" E5 V2 m; E2 e4 H7 E0040C720 |. 7C 23 jl short 0040C745
3 f: O5 j9 ^4 a2 M" |0040C722 |. 89C6 mov esi, eax
2 X' R) O! }: a( H0040C724 |. 8B3C95 7477EF>mov edi, dword ptr [edx*4+2EF7774]
$ g. F4 m9 @" A0040C72B |. 57 push edi
% H. v k1 c9 V6 @. |0040C72C |> 8A06 /mov al, byte ptr [esi]1 y7 V% F: X* n& v- ?( I
0040C72E |. 8807 |mov byte ptr [edi], al. E$ B2 Q$ o" s
0040C730 |. 3C 00 |cmp al, 0
+ z. |6 ]8 d0 J- j0040C732 |. 74 10 |je short 0040C7441 n: l" w4 c2 W5 N- g& Y O
0040C734 |. 8A46 01 |mov al, byte ptr [esi+1]
9 `/ n; {0 {0 Z4 T' d1 R5 t# J0040C737 |. 83C6 02 |add esi, 2
% b8 k9 ?/ U- s* D" e# @0040C73A |. 8847 01 |mov byte ptr [edi+1], al
4 j& ~& ^4 [$ A+ ^( S+ j0040C73D |. 83C7 02 |add edi, 2# K6 C( S5 ]7 Y" H& K9 W8 B
0040C740 |. 3C 00 |cmp al, 0% [# l6 Z+ G( i
0040C742 |.^ 75 E8 \jnz short 0040C72C, f- d2 |2 d: C: I8 n" |
0040C744 |> 5F pop edi
6 }( {, S; j; s; T0040C745 |> E8 E6500100 call 004218301 B/ {, V* g4 V# p' w+ W
0040C74A |. A3 8877EF02 mov dword ptr [2EF7788], eax
" S6 E4 t0 H: T" V- S" [0040C74F |. 8B8424 040100>mov eax, dword ptr [esp+104]
/ b2 C- M6 R; Q. h0 [0040C756 |. 40 inc eax
) h5 R& k2 L6 {$ h1 z! W0040C757 |. A3 8477EF02 mov dword ptr [2EF7784], eax
4 K0 I% _7 k P. v0040C75C |. C705 8C77EF02>mov dword ptr [2EF778C], 1
+ S2 Y2 E6 b) u6 [ y$ u+ ?( o; S0040C766 |. B8 64000000 mov eax, 64; R* i Q2 T- s' d2 m( O
0040C76B |. 89C2 mov edx, eax1 t4 \; P+ U# E1 p; n, j" R" c
0040C76D |. 8B0D E880EF02 mov ecx, dword ptr [2EF80E8]
6 u% }: `' s' K0040C773 |. C1FA 1F sar edx, 1F9 S' a. O7 j) y, ^; o9 {$ R+ `( g
0040C776 |. F7F9 idiv ecx
5 b* b" D$ [& S& z8 x+ ~4 M0040C778 |. 89C3 mov ebx, eax
: t2 A. t& E; E/ A( c* X+ U$ T0 E0040C77A |. 89EA mov edx, ebp
, S0 }9 l& S: D& g/ u: |0040C77C |. 89E8 mov eax, ebp+ G9 E9 f5 q& t! {0 A T
0040C77E |. C1FA 1F sar edx, 1F' ~# U J( S, P5 C: ~
0040C781 |. C1E2 04 shl edx, 4! T$ ^- C n6 m+ k# I
0040C784 |. 1BC2 sbb eax, edx
4 g4 `' n5 z- w/ _- q5 ? ~! v1 d2 [0040C786 |. C1F8 04 sar eax, 4
! S" \0 _! k) l$ }9 B8 b x+ j# v7 n! K0040C789 |. 01C3 add ebx, eax
$ }9 O/ ~- l0 N5 A1 t: A0040C78B |. 891D 9077EF02 mov dword ptr [2EF7790], ebx
9 A) x4 \* n7 a; z* G! u) ~0040C791 |. 81C4 10010000 add esp, 1107 p; c# v; f8 [- g6 x$ a
0040C797 |. 5D pop ebp
0 T) ~, S* [" t5 V: k) X5 m6 q0040C798 |. 5F pop edi" l) ^& [; e* j( u
0040C799 |. 5E pop esi
5 V. f0 m* D1 N% Y, R" g- R0040C79A |. 5A pop edx, q* }6 @3 D% @; d: Z/ P
0040C79B |. 59 pop ecx$ Y; W$ F' g) A9 U# L5 E" A
0040C79C |. 5B pop ebx; f0 A" |9 g: I$ H: E5 B" v
0040C79D |. C3 retn/ L! W0 z; t. R" \
0040C79E |> 81FD 8C000000 cmp ebp, 8C* i2 b$ w2 Z" }+ D0 F% @6 ?
0040C7A4 |. 7C 28 jl short 0040C7CE
3 r4 ]* R4 L* b( }3 D9 G0040C7A6 |. 81FD D2000000 cmp ebp, 0D2
7 ]- u5 v0 y) X+ v* j0040C7AC |. 7F 20 jg short 0040C7CE
$ M. ^+ Y! g4 {6 k6 b$ m1 U9 @0040C7AE |. B9 03000000 mov ecx, 3
0 `9 S9 O4 | B1 X0040C7B3 |. 89EA mov edx, ebp4 o0 h' a" U8 ^' |8 z
0040C7B5 |. 89E8 mov eax, ebp. s8 [, o5 `+ E' M) Z$ l
0040C7B7 |. C1FA 1F sar edx, 1F8 p c* U7 L+ b, z! X' S s8 H$ a
0040C7BA |. F7F9 idiv ecx
& _; j2 |! d/ l! x+ ?0040C7BC |. C78424 040100>mov dword ptr [esp+104], 2
# W# a+ y8 i9 l. a: [: }0040C7C7 |. 89C7 mov edi, eax" u* S2 u" w5 t" \* u9 p
0040C7C9 |.^ E9 8BFEFFFF jmp 0040C659
+ P& ?7 f8 u+ b' v3 F% q* H* ~% V0040C7CE |> 83FD 46 cmp ebp, 46" N* @7 v$ j8 s; D* ?2 y3 |
0040C7D1 |. 7C 25 jl short 0040C7F8
. _3 [9 {; z8 L3 l, A ?9 y: K6 P0040C7D3 |. 81FD 8C000000 cmp ebp, 8C! v4 D" w) T% l/ o; f5 _% c5 Z+ R
0040C7D9 |. 7F 1D jg short 0040C7F8
+ p- I! s8 m W0040C7DB |. 89EA mov edx, ebp
1 z1 S" D& y4 i6 z+ P5 ^% a3 D0040C7DD |. 89E8 mov eax, ebp
5 E. G% C, F. e* n+ H6 k0040C7DF |. C1FA 1F sar edx, 1F
" @2 L9 l; M+ ?3 a' n! s- Q0040C7E2 |. 2BC2 sub eax, edx
2 h3 G/ Z7 Z9 U9 n, L4 y l0040C7E4 |. D1F8 sar eax, 1% S, T' Y% x8 X+ ?
0040C7E6 |. C78424 040100>mov dword ptr [esp+104], 1, H0 E. V3 N# [7 F" D) l% F
0040C7F1 |. 89C7 mov edi, eax
2 V+ s9 j: e! a p ~0040C7F3 |.^ E9 61FEFFFF jmp 0040C659
! K8 G9 ~0 _8 n5 H* u0040C7F8 |> 31D2 xor edx, edx
* _* s) `0 Q4 O& s# A0040C7FA |. BF 46000000 mov edi, 46) W) @/ `( F s/ E
0040C7FF |. 899424 040100>mov dword ptr [esp+104], edx0 {' r$ y% {6 R
0040C806 |.^ E9 4EFEFFFF jmp 0040C659
' E) b4 _/ W. k1 M( a0040C80B |> 80F9 7C cmp cl, 7C0 ]# d1 G1 G) D* i* s
0040C80E |.^ 0F85 E9FEFFFF jnz 0040C6FD
$ `$ ?- h2 p% |8 m+ }/ A0040C814 |. C602 20 mov byte ptr [edx], 20
/ u* n1 Y# `, d5 a' G6 q0040C817 \.^ E9 E1FEFFFF jmp 0040C6FD
2 w# b8 ^) s9 ^; p @. K& k) G
5 B& j: Y; i) p# k在scratches.sc和scream.sc里面有lua的脚本,保存有字体文件名。. b" {$ k0 M( H
估计要汉化就要在上面的代码段下功夫了,以后继续研究。# W, j; ~# J3 x) j' V/ o
5 M# T7 W( Q7 s: w
找到2个俄文的补丁,也许对以后研究有用。 a! L0 v' F# w- l8 g% w; g) ]
http://www.megaupload.com/?d=EZH6X672& x* C3 S( S& e$ u ^7 t1 R
http://rapidshare.com/files/94227080/ScratchesDC.7z |