由于这个程序很短,OD里面的汇编代码也很短。
8 [% z; G( m, ?; U* R请看红色的部分,这就是和0x80比较的部分。 . ^; v( B- Q z7 _1 g) r& z
把这2句NOP掉,然后保存修改后的文件为exe。 ' v: p+ F. ^6 n* X1 [
我们发现input.txt里面的所有内容都能被输出了。 : |2 S a) X1 F0 c9 W; O; i* l% J
附上修改后的exe. . u( ^+ f' P+ I
深绿,你可以把这个操作过程试一下,练习一下. # |% d* h7 z3 g; ^8 a
" z+ N* n. E# } I! @9 B00401000 /$ 55 push ebp
* ^$ b9 B9 M1 ^( ]00401001 |. 89E5 mov ebp, esp 4 M9 f" G- B, n+ Y+ B0 }/ k
00401003 |. 83EC 18 sub esp, 18 - W0 Y, W" G6 Q" H. C
00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0 9 M; H: G `$ m6 u9 |
0040100D |. 83C4 F4 add esp, -0C
4 S4 J4 h5 i' ^: Q# C00401010 |. 8D45 FC lea eax, dword ptr [ebp-4] - [- J- A7 ]$ o! j8 e+ A, i9 I
00401013 |. 50 push eax ! H+ J& {3 | z
00401014 |. FF35 08204000 push dword ptr [402008] 9 Y, S. b- @+ I* _$ h5 _
0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8] ) P! Y! l- Y: {3 `7 x+ g
0040101D |. 50 push eax ' q* J; u& b) D
0040101E |. 68 04204000 push 00402004
8 {7 Z% v( X& p0 p3 p' t, v00401023 |. 68 00204000 push 00402000
1 {1 [) f1 B9 T# R& y8 c* \4 Q00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs> : @* H0 o7 U% q+ U+ U( _
0040102D |. C9 leave 4 Y* I9 o3 x: E( }4 v% O0 U
0040102E \\. C3 retn 7 w8 U$ c2 w% D2 A4 l& t
0040102F 90 nop 7 {; s5 v2 y9 f! y* M" I- ]/ L: p
00401030 /$ 55 push ebp 3 U% y% N& `2 E
00401031 |. 89E5 mov ebp, esp : M& a0 _' P! V2 I
00401033 |. 83EC 08 sub esp, 8 ' P' l" a# f. R2 p5 R
00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C]
; B' t0 x' `! d: Q+ T0040103C |. 85D2 test edx, edx
8 _" o7 A4 F3 Q/ M. t' G0040103E |. 74 7B je short 004010BB ) V) S6 p- }& O- U" S
00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>> 6 m# y1 e' h( |5 O W3 `
00401045 |. 8910 mov dword ptr [eax], edx $ K2 ?7 W8 w9 j8 Y
00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
4 b! l8 ` _# A9 Z4 B- B( ^0040104C |. 85C0 test eax, eax
8 }" K5 @" `% d, b; g0040104E |. 74 1E je short 0040106E
0 m6 c4 h5 n( C7 I1 i00401050 |. 83C4 F8 add esp, -8 8 r! i4 l5 l2 f' ]7 v. R7 j, ? A
00401053 |. FF35 0C204000 push dword ptr [40200C] ) q# z0 P5 ]; Q
00401059 |. 83C4 F4 add esp, -0C ' H5 f* ~/ x4 E6 a# H, J) ^& V
0040105C |. 50 push eax ; /pstream => offset msvcrt._iob
$ |+ e; r% q3 ?2 S9 a& C6 U, x9 u! b4 o0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno 4 a9 P' a5 E# {+ ]) |2 a
00401062 |. 83C4 10 add esp, 10
8 ~* h2 ~ E5 R' p/ l7 h1 W6 [00401065 |. 50 push eax ; |handle
" w: _8 Q' D, h9 e; K4 ~6 |9 E00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode . d. q/ T6 V- O* H* w
0040106B |. 83C4 10 add esp, 10 ) R: \. n% S. S0 p- U6 o
0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] 8 N9 L l4 O Q( u! z) d
00401073 |. 83C0 20 add eax, 20 0 o) P- H) d. \1 @- y) T
00401076 |. 74 1E je short 00401096 : X& P4 D2 \8 X F1 u
00401078 |. 83C4 F8 add esp, -8 ! }" [" f" S' a J$ C1 U3 W6 ]+ m
0040107B |. FF35 0C204000 push dword ptr [40200C] 9 e" S% ` v0 h W$ H
00401081 |. 83C4 F4 add esp, -0C
f7 F' ]. W2 o% g3 o8 `$ `00401084 |. 50 push eax ; /pstream & b1 I! C+ c4 }9 X
00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno
% u1 m( y* d5 R8 w0040108A |. 83C4 10 add esp, 10 $ F3 H2 c$ j4 z$ H/ i2 [
0040108D |. 50 push eax ; |handle ; i0 N% M6 a2 w3 Z
0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode & [1 M) c( @5 S/ ^9 ~
00401093 |. 83C4 10 add esp, 10
" n( s, c/ U6 _, H6 {. ? C00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
; y+ Z# q0 N/ n9 h# \* B0040109B |. 83C0 40 add eax, 40 , v) |5 {3 p* o( ]. `3 z
0040109E |. 74 1B je short 004010BB
. ?+ \7 h7 S# B8 {# X3 U004010A0 |. 83C4 F8 add esp, -8
. l' L- c1 x$ {) e* y* E5 P) }/ X004010A3 |. FF35 0C204000 push dword ptr [40200C] ; k9 t% l4 |6 q
004010A9 |. 83C4 F4 add esp, -0C
! Z% Q& D$ B# ~4 U004010AC |. 50 push eax ; /pstream
6 ^5 ^% E# p5 [/ a) e4 \004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno
9 U9 S: r7 ?3 U7 S004010B2 |. 83C4 10 add esp, 10 6 v& b% ?; q) z7 Q
004010B5 |. 50 push eax ; |handle + `' ?$ q: j# l" n0 @( Q9 O
004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode
; ?, s0 l6 d2 f- o004010BB |> C9 leave
& i" i, y T) y7 F+ w004010BC \\. C3 retn 8 I1 P( S. ]/ y; H
004010BD 8D76 00 lea esi, dword ptr [esi]
. W' @9 G1 X" y/ r004010C0 /. 55 push ebp " {2 G1 T. u/ f4 K
004010C1 |. 89E5 mov ebp, esp % u6 @9 |, {7 J# ~/ t: j
004010C3 |. 83EC 10 sub esp, 10
1 g8 |& `: P9 N1 w004010C6 |. 56 push esi * W" a' k9 C. b' f
004010C7 |. 53 push ebx
% @' a. F# y l; U004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8] / ]; s! z1 g3 L8 e1 X, d1 I. l
004010CB |. 31DB xor ebx, ebx
7 T c2 J9 u5 R8 o1 e004010CD |. 31F6 xor esi, esi + d$ H# ^( _9 `+ t6 P7 v6 P
004010CF |. 8B00 mov eax, dword ptr [eax] 0 y% z3 z$ }3 E: e1 x: d+ A
004010D1 |. 8B00 mov eax, dword ptr [eax] $ C6 U$ [2 e) y) x, I
004010D3 |. 3D 910000C0 cmp eax, C0000091 6 j# W0 ?" }( e* N, F! }5 s
004010D8 |. 77 16 ja short 004010F0 ( W& t6 z$ N8 v4 y/ i
004010DA |. 3D 8D0000C0 cmp eax, C000008D 4 i* f" |* |& \+ f3 {
004010DF |. 73 4F jnb short 00401130 ) l6 W# r: K$ i0 V; V. d
004010E1 |. 3D 050000C0 cmp eax, C0000005 ! d0 @; `- _1 d& _: y8 D/ D0 {
004010E6 |. 74 18 je short 00401100
8 N7 [' S1 r$ j5 ^+ M004010E8 |. E9 86000000 jmp 00401173 " y0 g% |( s, ]0 k3 C2 s
004010ED | 8D76 00 lea esi, dword ptr [esi]
5 I/ z% V% ~ i) f004010F0 |> 3D 930000C0 cmp eax, C0000093
% z) Q7 W1 D, U9 [2 p004010F5 |. 74 39 je short 00401130 u- M6 w0 `5 q. h, i9 V
004010F7 |. 3D 940000C0 cmp eax, C0000094 6 ~" S2 e$ r6 D! `8 S) P7 s0 p2 C( o. s
004010FC |. 74 37 je short 00401135 / W# ~0 h5 y8 ?. t5 f0 T" a; _7 d
004010FE |. EB 73 jmp short 00401173 2 }* n6 d5 x9 S( D
00401100 |> 83C4 F8 add esp, -8
; N3 s" K0 u7 ]0 N: p00401103 |. 6A 00 push 0 ; /func = NULL
% m" ?" ^" k& ]# a00401105 |. 6A 0B push 0B ; |sig = SIGSEGV . [2 A+ D% x) f$ @$ A5 C; I3 y8 j& s
00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal 5 _0 S# W4 {- A5 [6 [0 }) L) @
0040110C |. 83C4 10 add esp, 10 8 O& o- _6 F. ^! x5 j2 e9 @7 e( B" X
0040110F |. 83F8 01 cmp eax, 1
7 B3 d/ R0 B' K% Y" v3 h* w8 Q00401112 |. 75 0E jnz short 00401122
1 l& Z- Y8 `& L, A+ q$ g0 V7 q00401114 |. 83C4 F8 add esp, -8
3 S+ H; c; e& h( ?* u4 q8 j1 R00401117 |. 6A 01 push 1 ; /func = 00000001
) M6 w& C5 o, ?2 e; j00401119 |. 6A 0B push 0B ; |sig = SIGSEGV 9 y f4 A: W" G w* _6 a
0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal & \. ]' y# N% J$ @8 m; t
00401120 |. EB 4C jmp short 0040116E
3 c7 F# b5 w- {) ]00401122 |> 85C0 test eax, eax $ p$ t/ M C. D& F4 I, A: z
00401124 |. 74 4D je short 00401173
2 w; G- W0 P! H; D2 o00401126 |. 83C4 F4 add esp, -0C 1 Y, E4 ]- q7 ~* {( e/ M8 [
00401129 |. 6A 0B push 0B ; F& [" D9 v8 t! D/ E! o+ w3 b7 ?
0040112B |. EB 3F jmp short 0040116C
) Z2 m/ v3 m2 d- L( d( u8 v l0040112D | 8D76 00 lea esi, dword ptr [esi]
2 W+ i% U3 D8 l, ]6 ~9 ^0 Y+ F3 D00401130 |> BE 01000000 mov esi, 1
+ i0 j0 w. ~8 q) R ?# E00401135 |> 83C4 F8 add esp, -8
# S; |; ~% p! w2 P8 f" c1 g$ U9 K00401138 |. 6A 00 push 0 ; /func = NULL
' V! ~# H+ Z& `) P/ K" q4 u0040113A |. 6A 08 push 8 ; |sig = SIGFPE # H8 w2 h4 e0 K
0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal 8 @) t3 ~; f$ n8 l* R( }
00401141 |. 83C4 10 add esp, 10
4 V( Q3 @8 w1 U% ^0 R( j00401144 |. 83F8 01 cmp eax, 1 2 Q f# Y; c: Z i/ \* y
00401147 |. 75 1A jnz short 00401163 " p6 c2 {9 p2 W8 a8 i, q3 L
00401149 |. 83C4 F8 add esp, -8
: q3 a3 }' h# j0040114C |. 6A 01 push 1 ; /func = 00000001
6 q; `" S) ?# {& B/ G0040114E |. 6A 08 push 8 ; |sig = SIGFPE
4 r$ R% ^: u% o6 c6 F( M. w9 B1 S00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal
% P `# V: k' `' r! x( z00401155 |. 83C4 10 add esp, 10
( l. o) ~1 N+ j00401158 |. 85F6 test esi, esi
( z' E4 k- B6 l0040115A |. 74 12 je short 0040116E . s$ h' A% R# E0 _5 p
0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset 8 S" Z( A) T4 D. r0 g: E
00401161 |. EB 0B jmp short 0040116E " u/ {1 }$ e/ E* K6 P
00401163 |> 85C0 test eax, eax
5 N' r+ ^+ r: d" C00401165 |. 74 0C je short 00401173 # m) O! Q3 f6 d8 C! d2 e# w
00401167 |. 83C4 F4 add esp, -0C
C7 e% ~# ?" I+ Q& S* Y( F* ?0040116A |. 6A 08 push 8
2 ?& D& T" Z8 }0040116C |> FFD0 call eax 1 e/ C& b# C& i! H0 J0 Y) ^
0040116E |> BB FFFFFFFF mov ebx, -1 6 T2 y% l5 j3 A& P" w5 @) q. [3 y
00401173 |> 89D8 mov eax, ebx
6 m3 _$ y# w1 u" i2 B) V* q00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18]
: p* A5 j, T a# w6 A00401178 |. 5B pop ebx
* U+ V* m: u, h00401179 |. 5E pop esi 1 R$ \4 h z# l7 B* p( {
0040117A |. C9 leave ; j) T2 R+ e0 R0 s; X4 t* O7 Q
0040117B \\. C2 0400 retn 4 # j% U# ]$ z4 |/ m; j; p
0040117E 89F6 mov esi, esi ' I1 L% |( u0 G- P/ R Y
00401180 /$ 55 push ebp 1 D. B& z8 s+ e7 \8 _: e
00401181 |. 89E5 mov ebp, esp
. G4 T1 c# ^7 ~1 M$ h1 x; e- t00401183 |. 83EC 14 sub esp, 14
0 _, B0 C6 K, N$ b5 O P00401186 |. 53 push ebx
U. ^7 Y4 J4 }. Z& C3 B3 C. q00401187 |. 83C4 F4 add esp, -0C
3 ~' T; N2 z. `0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0 * z( p6 V5 z5 N$ `
0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter
, v9 H3 t: [1 O+ F% j00401194 |. 83C4 FC add esp, -4
! T2 E: v0 b& g* X% M# @% ~! k00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset 7 l. ~. U& i" d% o
0040119C |. E8 5FFEFFFF call 00401000
9 B9 j$ U, k9 A; V004011A1 |. E8 8AFEFFFF call 00401030 8 S3 Y7 e$ P. Z/ i0 e! f9 b# G
004011A6 |. 83C4 FC add esp, -4
# ^# x H- s a& k! U' m: n004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ> , G5 a4 g! ~3 d$ \& h
004011AE |. FF30 push dword ptr [eax] . a: |5 c, c# Y* w& z
004011B0 |. FF35 04204000 push dword ptr [402004] " U7 ^" [- i+ b' T
004011B6 |. FF35 00204000 push dword ptr [402000] # ~; F! ]( r5 a" R, ]
004011BC |. E8 AB000000 call 0040126C $ P/ Y* _2 P" c. X+ s/ [3 G
004011C1 |. 89C3 mov ebx, eax
* i: @. P4 b6 ]1 i% U& A6 g004011C3 |. 83C4 20 add esp, 20 I$ ~& g# e9 g. P. o/ P- v' r
004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit ) V/ ^5 ~/ Z2 s7 d2 [$ {
004011CB |. 83C4 F4 add esp, -0C . h3 `# J0 h/ U* Z
004011CE |. 53 push ebx ; /ExitCode
/ x! s) A0 d( d) h. x2 R004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess
3 N8 U* F' L1 P004011D4 >/$ 55 push ebp
) F# E" D4 L' [: c! S' {( C$ x- P004011D5 |. 89E5 mov ebp, esp 7 y4 ~: V' ?! l
004011D7 |. 83EC 08 sub esp, 8 ; `) l* E: ~% ^) q1 I
004011DA |. 83C4 F4 add esp, -0C
/ P* h' R8 {* ]1 X004011DD |. 6A 01 push 1
$ }; V0 F' b9 J7 f% V7 D004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
2 Y6 O9 _, U7 E5 J004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type> " P1 V+ b/ l J: _7 R
004011E6 |. E8 95FFFFFF call 00401180 $ ]/ p. w8 L# Y+ N. ]- J) F
004011EB |. 31C0 xor eax, eax
! `# A* x( |( ]* `, v5 i( @1 Q! m004011ED |. C9 leave
$ v1 y0 p" |' c. P004011EE \\. C3 retn " L0 {# t% y2 h, _
004011EF 90 nop 9 S, X- w! g* T4 N9 O
004011F0 /. 55 push ebp
2 A" [# l& s! T6 j004011F1 |. 89E5 mov ebp, esp
& D3 ]9 f4 x# b; {$ |- u004011F3 |. 83EC 08 sub esp, 8
& g9 ^1 f5 x5 \004011F6 |. 83C4 F4 add esp, -0C 7 X" p' G, r5 B
004011F9 |. 6A 02 push 2 ) ~( S1 x+ K7 g
004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
( |! O, A; N% h6 G00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type>
5 h( t, c8 q7 T: r# _! S00401202 |. E8 79FFFFFF call 00401180 3 ~1 G# a" T, k5 b4 H
00401207 |. C9 leave 0 t) b4 Z) S' X$ @' }) }5 _
00401208 \\. C3 retn " B0 u) l; c3 L; Z& M8 F. e
00401209 00 db 00 # A( l. F" f, H: L w7 T
0040120A 00 db 00
2 T! K% A) u5 {2 x0040120B 00 db 00 6 i; T C# @8 l0 ? v
0040120C 00 db 00
) e: U* r- \( T5 `& A" q" q0040120D 00 db 00 3 y* P7 Q/ e0 d, P& d
0040120E 00 db 00
$ k( W$ }: l I0040120F 00 db 00 * q+ M. Y, H( B- B4 e3 X
00401210 72 db 72 ; CHAR 'r'
' z8 y! U" q }: j00401211 00 db 00
3 E* F$ Z) k& V00401212 . 69 6E 70 75 7>ascii "input.txt",0 , `9 n4 E: Z$ o- B
0040121C . 43 61 6E 27 7>ascii "Can't Find input" n g x* j) H& h
0040122C . 2E 74 78 74 2>ascii ".txt!",0
+ G3 B4 V2 r! b8 E, q! o1 s* m2 t00401232 77 db 77 ; CHAR 'w' % X* |% c3 H! G+ I/ a# g- J
00401233 00 db 00 4 r: g. f! L$ F9 V+ L9 d- t7 }
00401234 . 6F 75 74 70 7>ascii "output.txt",0 - A/ j! Y2 `0 H
0040123F . 43 61 6E 27 7>ascii "Can't Create out"
! ?, B' L+ e2 m2 c0040124F . 70 75 74 2E 7>ascii "put.txt!",0 " a/ I9 t* I: j! R+ U4 p
00401258 . 6F 6E 65 20 6>ascii "one char outpute" 5 ?2 y/ q+ |0 z
00401268 . 64 0A 00 ascii "d % X% {6 S8 ]3 H7 }$ Z5 f$ B
",0 " X) U6 h8 e* _0 E
0040126B 90 nop
& ~% B% q' Q2 V6 z3 y' ?& D. H8 E% d0040126C /$ 55 push ebp
7 j g' e& h2 `+ T5 E0040126D |. 89E5 mov ebp, esp - U0 z* q6 X5 e" B8 O
0040126F |. 83EC 18 sub esp, 18 3 a1 C6 W+ `6 n
00401272 |. E8 39010000 call 004013B0 * f( y6 B1 u& `4 W( N
00401277 |. 83C4 F8 add esp, -8
$ h& c$ E8 S0 H5 j) z. [& B' q0040127A |. 68 10124000 push 00401210 ; /mode = "r" $ C- ~+ c& J* I l X2 t
0040127F |. 68 12124000 push 00401212 ; |path = "input.txt" o6 E7 c' ]5 p" ?: t% d
00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen ) c( O7 ~" j; T! V$ h" n
00401289 |. 83C4 10 add esp, 10
9 h! H3 q" K ^7 A0040128C |. 89C0 mov eax, eax
; P2 a; t1 ^: ^0040128E |. 8945 FC mov dword ptr [ebp-4], eax 2 A. O$ r4 ]# R( F% Z
00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0
0 l1 Q% d1 r: e# M/ y# |6 O4 n00401295 |. 75 10 jnz short 004012A7 + k5 u5 Z6 N) U( j# L0 j' n6 Y
00401297 |. 83C4 F4 add esp, -0C - L* r0 p: o0 N/ @
0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!"
% h/ @- r9 [" M4 x4 k0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf 0 ?2 y. ~- k' P
004012A4 |. 83C4 10 add esp, 10
3 {& r/ U9 g0 L' D, T004012A7 |> 83C4 F8 add esp, -8 5 V, F1 Y1 Z, `, n) c/ a9 b5 D3 a" K
004012AA |. 68 32124000 push 00401232 ; /mode = "w"
% C( U1 X) p4 S8 b$ s2 A" \% d004012AF |. 68 34124000 push 00401234 ; |path = "output.txt" , g% P& {2 u! L V b
004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen
7 N$ f1 H' ?+ D- s1 f& h$ g A) }004012B9 |. 83C4 10 add esp, 10
9 z) m o" c8 I5 C" S; f" V. z7 w004012BC |. 89C0 mov eax, eax
7 E( Z2 a- Y; ]004012BE |. 8945 F8 mov dword ptr [ebp-8], eax
2 I; T3 ~4 Y- K/ m _& ]4 P0 F004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0 9 ?6 d0 b% J* G
004012C5 |. 75 10 jnz short 004012D7
! U8 P7 u4 J! Y1 o8 {" E$ y- i004012C7 |. 83C4 F4 add esp, -0C 2 s" a) P0 n1 D% v
004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!"
; v2 N7 A% |; ~1 e004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf
" U4 N& Z+ J& j& |004012D4 |. 83C4 10 add esp, 10 # P) n7 i) E$ \3 f8 ^
004012D7 |> 83C4 F4 /add esp, -0C # M9 \ g8 e/ l. @" j' d9 G- i
004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4]
2 m' p% b: @3 Z3 s004012DD |. 50 |push eax ; /stream
# P% ]5 C4 p W; D# U) o/ `* h004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc N: ]* z. s7 k
004012E3 |. 83C4 10 |add esp, 10
; w' G8 J9 P6 O& M7 g* P2 C5 n004012E6 |. 89C0 |mov eax, eax
; ?) O! z6 q7 u3 f" W& Z7 t004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax
4 _, k# w: U6 }4 L5 l" |, {004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80
4 L$ i# ~6 B, Y2 |- n- I8 H7 f9 p- ?004012F2 |. 7F 23 |jg short 00401317 - q2 q7 g* S) C. w" o5 o/ m
004012F4 |. 83C4 F8 |add esp, -8 " M& k0 ]% _9 Y! d, ]
004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8] ! j- {1 `: y5 D# y. l6 m- _$ i/ r
004012FA |. 50 |push eax ; /stream $ @8 N; W8 d7 }8 g9 ~; g: w
004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; | # J. Y4 q6 C% P/ d( ?: n1 j" n
004012FE |. 50 |push eax ; |c ! ^& o# z: u/ ^9 @8 x8 ~7 \) Y; t
004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc : O9 K3 j1 ^+ Q7 D
00401304 |. 83C4 10 |add esp, 10
9 c5 U! D% D$ e S {00401307 |. 83C4 F4 |add esp, -0C 2 o/ f# P* D* H1 X+ @ k
0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,""
% L' v; K, r, ` E, U0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf
% b3 X" Z4 y; O1 [+ L/ j! M7 z00401314 |. 83C4 10 |add esp, 10 ' y, `0 n$ A) O0 g( J! U
00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1
, W A; s2 _" O3 B+ H0040131B |. 75 03 |jnz short 00401320 - q& ]$ T& }( r* W
0040131D |. EB 03 |jmp short 00401322
" B- D4 G/ g/ ^0040131F | 90 |nop ( t) q! D G& c h' G( A, m
00401320 |>^ EB B5 \\jmp short 004012D7
2 }# R, Y+ i6 J. \1 Z. d00401322 |> C9 leave ; R2 J- }) e: g! v1 n
00401323 \\. C3 retn
7 y+ ^' i ^2 K2 u8 M00401324 00 db 00
4 n: h6 e' i `9 N00401325 00 db 00
2 X9 R* Y3 G! j00401326 00 db 00 ) a. h0 c: k) F) S' ^: R
00401327 00 db 00 2 K. u8 S9 [5 d* k
00401328 00 db 00
% U. W* O( g+ P" G2 }00401329 00 db 00
. l" A& Q8 I) b+ i4 O! z0040132A 00 db 00
" E& ]' ]6 u9 X1 C2 Y; a* y0040132B 00 db 00
% q& u; u ?1 N1 `1 i% |; d0040132C 00 db 00
' Q9 ~6 T2 u8 J' L" W0040132D 00 db 00
! D9 \; h3 v6 {; `( d0040132E 00 db 00 : l$ \8 K* A6 [
0040132F 00 db 00 ; h) C7 X6 l& a }1 G, U7 A
00401330 /. 55 push ebp 2 m- S. B1 ^8 z, m; \
00401331 |. 89E5 mov ebp, esp
" m' n8 Z9 z% K/ |8 l' _+ F00401333 |. 83EC 08 sub esp, 8
7 X# d. j0 K: I1 z8 j0 g6 k00401336 |. A1 10204000 mov eax, dword ptr [402010]
& Q$ i0 F8 z/ G1 m" `2 [ G0040133B |. 8338 00 cmp dword ptr [eax], 0 : G/ @& c. Z" T
0040133E |. 74 1D je short 0040135D & L) L- P5 n/ j
00401340 |> A1 10204000 /mov eax, dword ptr [402010] , c+ v7 k* b/ g/ E
00401345 |. 8B00 |mov eax, dword ptr [eax]
3 T) u3 ~7 D- P+ x! k; Z. Y6 a* `00401347 |. FFD0 |call eax
$ e# i- B/ l: C7 t1 w00401349 |. A1 10204000 |mov eax, dword ptr [402010]
$ _* x5 f1 l) U0040134E |. 8D50 04 |lea edx, dword ptr [eax+4]
. ]( n; u5 o- [. A3 e00401351 |. 8915 10204000 |mov dword ptr [402010], edx 0 Q* I, X& \2 t1 t6 l
00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0
" B# w ?6 S# I9 Y0040135B |.^ 75 E3 \\jnz short 00401340 3 k+ X' L* G4 j' s: m G/ a' W
0040135D |> C9 leave
$ B- L3 e: ~1 F) p+ I0040135E \\. C3 retn
( ] o' M+ m# f( e2 P) ` M) H0040135F 90 nop : \" s1 l$ O9 R; ]2 J
00401360 /$ 55 push ebp
3 v$ s4 [, ~2 |5 h00401361 |. 89E5 mov ebp, esp . B7 A8 q3 m6 l) a+ D
00401363 |. 83EC 14 sub esp, 14
X1 E" B4 N/ X- d: s/ I00401366 |. 53 push ebx
, M5 b4 V8 K* j; A2 W00401367 |. A1 58144000 mov eax, dword ptr [401458]
0 N! }5 d( r" w0040136C |. 83F8 FF cmp eax, -1 E8 C8 T) G& f2 [) J' Z7 x
0040136F |. 75 19 jnz short 0040138A " S9 @ A4 y, n3 C. l
00401371 |. 31C0 xor eax, eax 4 k5 H2 {6 V9 Q0 q' Y/ C
00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0 : p6 K* {' v" |9 X) X
0040137A |. 74 0E je short 0040138A
1 B) s$ P8 E! b0 I! Y- ]0040137C |. BA 5C144000 mov edx, 0040145C
0 r, @* Q2 G2 |; R2 F! e4 X" L" a$ F00401381 |> 83C2 04 /add edx, 4
! b0 W4 J$ e* O00401384 |. 40 |inc eax 1 X# d$ X# |# V6 z+ V$ o \
00401385 |. 833A 00 |cmp dword ptr [edx], 0 ; {. V$ J4 T2 ~0 R5 T, @6 v4 a
00401388 |.^ 75 F7 \\jnz short 00401381 8 L: N, p% M, O4 v+ f( d. e G
0040138A |> 89C3 mov ebx, eax ' [( m6 s" ?% ^% y; b5 l, u, p
0040138C |. 85DB test ebx, ebx 1 @1 G* b/ v7 @% ~6 k6 I' Q8 ~
0040138E |. 74 0C je short 0040139C
7 K9 T: w4 N9 |- M9 w2 k- w00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
]' U' h( r/ B6 _00401397 |. FFD0 |call eax % {3 r$ K& D" M; t' m$ p' r
00401399 |. 4B |dec ebx
' z/ U9 }/ K1 P- G2 M0040139A |.^ 75 F4 \\jnz short 00401390
/ p- l* G0 b' q p3 U0040139C |> 83C4 F4 add esp, -0C $ T# ]+ Q. u$ x! K
0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330 . H- Y% M. N: q( g+ u* @* [" [7 ~
004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit
4 u8 @, M" ?! P004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18] - G" g2 z9 {, y; t9 m0 G H3 K
004013AC |. C9 leave + t& c: i; P4 ^% m
004013AD \\. C3 retn 5 S. I7 w8 ]7 y/ ?; k
004013AE 89F6 mov esi, esi
( ^6 M: H+ F* E) p004013B0 /$ 55 push ebp
% f7 b- D9 P2 i- O9 s1 v004013B1 |. 89E5 mov ebp, esp 8 c. w4 L) i/ Z5 H" @
004013B3 |. 83EC 08 sub esp, 8 9 G) t/ E1 S. r8 _( c' t% V3 h
004013B6 |. 833D 14204000>cmp dword ptr [402014], 0
4 E' l! V4 O/ T; B5 F& l9 \004013BD |. 75 0F jnz short 004013CE
: Y, t* n7 H+ p/ _004013BF |. C705 14204000>mov dword ptr [402014], 1
4 Z/ D" G1 e6 Z3 ^: A004013C9 |. E8 92FFFFFF call 00401360
6 k1 r- m* [& D1 t6 A$ f004013CE |> C9 leave + |6 I3 g1 q9 }7 o5 a w
004013CF \\. C3 retn
4 K! ~! V3 d- ?' k ^" K004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode
4 `- k3 ^5 X. }' a% L4 Q004013D6 90 nop
7 P$ _$ i6 L3 X' [& ~004013D7 90 nop % x) n1 O9 B" L# f
004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob
2 F% Z6 f# \6 h004013DE 90 nop
/ _ R1 g- p' R6 s; H" _* Q004013DF 90 nop
9 `( F+ t `0 Q& J$ l$ v1 X! X7 Y004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type 2 n9 U5 C! q* ~5 [- }
004013E6 90 nop 2 [0 m( {1 n" w! V7 I4 x2 h- h
004013E7 90 nop H0 c/ ^8 @7 F" d y; a
004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit
+ o1 H" @ g) _+ _* ?* J& ~004013EE 90 nop
4 I0 O( T4 ?& P: j/ l% d7 N' A6 `004013EF 90 nop
- O' [/ B t4 d- L. T1 m004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ 8 N" @. `* E& R- M8 Y
004013F6 90 nop 0 M! I; |1 b& S! N. {
004013F7 90 nop
/ M8 j! E" Q9 c" k* P4 b/ ?- C* T004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset 9 ?; C$ `; ~' w7 G
004013FE 90 nop
( x3 k: ?# j! X7 ~004013FF 90 nop
% h) E) U: K8 S4 P. u00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal
6 Y" L$ B( P5 r00401406 90 nop 2 Q3 ^" P q! |( P |, R
00401407 90 nop
7 a( a z+ E) a00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno
5 ], G) {$ y3 k0040140E 90 nop
+ S* C& I/ X" _) z/ I$ o. q8 x! ^0040140F 90 nop
, n0 {: C& @! p% P5 o- f00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode
0 x) G& s8 K& \) ~& q" v00401416 90 nop ; N4 D& }8 E! k" }
00401417 90 nop 7 W5 Q6 F3 Q4 ]& r T9 n
00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs
4 T& w* E7 ^* g& Z5 ^8 s0040141E 90 nop
7 f4 C$ {2 h! M$ ^. K4 }9 ~0040141F 90 nop 7 s. i# f' ^, M! {6 S
00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc * ^& m9 e3 d2 [$ t2 h
00401426 90 nop
; d; l" I" F' o- c00401427 90 nop
% G6 V8 t% J9 j2 g2 W) s7 v00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc ) m2 |; H) P( x* C/ B* B& v
0040142E 90 nop ; r. a5 i7 m0 H% f/ g
0040142F 90 nop
/ O C3 j* r9 s+ H; U1 e00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
' O. a Q; r V3 n; u00401436 90 nop ( b! Q" D3 `4 m) y% D x7 C; A7 z
00401437 90 nop
, y; ]9 p ]% j0 R7 u8 u00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen
5 N5 m! B! @- C) _9 m0040143E 90 nop c* _; f, z; f; Z! [" K
0040143F 90 nop ) m# n3 C2 ~9 S9 L/ D
00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit " \! z( v( U0 f r2 y
00401446 90 nop
) N6 y! u) k4 m6 J( o3 n00401447 90 nop
) C8 L7 E: {) ?% Z- k/ j6 q00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter " H4 d4 E! ?6 F
0040144E 90 nop * n. x7 ^# H. [
0040144F 90 nop
% N! Q" K/ Y6 P$ J2 [8 C. r; l00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess 9 k0 [( C3 ]! _0 P7 c. }3 A3 U/ s
00401456 90 nop 4 }6 N+ r' c$ k6 w* G6 R
00401457 90 nop
8 S. r* r. y% D2 r4 F8 O00401458 . FFFFFFFF dd FFFFFFFF
' t* p* L( C$ U: i2 Y B. z5 X7 A0040145C . 00000000 dd 00000000
: m$ q% B% |0 S5 P# w00401460 FF db FF
( x( a6 h* Y# d$ ^' {% A00401461 FF db FF
( T% J" a$ b3 k; Q* z) C. F00401462 FF db FF
( e. P# S5 ^& Q. d. f2 x. q00401463 FF db FF
4 |* Y$ {2 t) v( u" r5 }00401464 00 db 00 . H0 Y* d! q1 Q8 L, o. A, K2 k( X
00401465 00 db 00
$ t0 B2 E- t9 W' x$ M00401466 00 db 00
2 `; L: k, v# {00401467 00 db 00 |