由于这个程序很短,OD里面的汇编代码也很短。
7 _) B5 I" B w8 ?" j请看红色的部分,这就是和0x80比较的部分。 $ i% {. p7 D: O4 k
把这2句NOP掉,然后保存修改后的文件为exe。
: t o. F! h4 o, \- q& U我们发现input.txt里面的所有内容都能被输出了。
% I( n+ W% \6 a5 n4 B* R5 ]- u, Z附上修改后的exe.
5 q% K' s5 I/ j: D, O) f深绿,你可以把这个操作过程试一下,练习一下.
4 y7 r- o2 V! \; D9 d: d* t
/ c+ Z. p/ V* J; Y e00401000 /$ 55 push ebp 0 i: `$ q9 o& J; |& _$ {9 t$ k
00401001 |. 89E5 mov ebp, esp 7 q7 `! n, o; f- f- P
00401003 |. 83EC 18 sub esp, 18 , P" w c% Z7 [( s
00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0
' J7 }" _' I' O9 x; J0040100D |. 83C4 F4 add esp, -0C , U" \. L- r/ A3 w
00401010 |. 8D45 FC lea eax, dword ptr [ebp-4] ; T( b* W) k- A" T1 Q9 R
00401013 |. 50 push eax
% ?# G1 ]4 a2 A, L00401014 |. FF35 08204000 push dword ptr [402008]
' c! e# _. k! i- Z( }0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8] . D. e+ E: R( M' Q
0040101D |. 50 push eax 2 ]$ h7 L' |; r# W/ P3 \, a
0040101E |. 68 04204000 push 00402004
7 \; k$ j& f3 Q) k, T! G00401023 |. 68 00204000 push 00402000
8 L- T3 O& ^+ d( K# v$ _- I00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs> . M. K$ l$ M/ X) ` ?
0040102D |. C9 leave
) V# |6 j4 Y' j0040102E \\. C3 retn 2 K7 i2 u% Q" l9 u6 Z
0040102F 90 nop " A$ k+ E7 N6 O a( u8 ]( O
00401030 /$ 55 push ebp 0 R3 W/ T( S) E1 x8 s
00401031 |. 89E5 mov ebp, esp
! ^" G# {- z; }+ D2 j00401033 |. 83EC 08 sub esp, 8
; P: h) Y. b( h/ \1 \6 L00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C]
3 o2 m% H# n( Q5 t% t J! y0040103C |. 85D2 test edx, edx
2 o2 D) T9 E6 M, I* w0040103E |. 74 7B je short 004010BB 1 q8 \7 D/ i' t3 a) {" n7 A
00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>> 3 r9 k8 C" @3 J
00401045 |. 8910 mov dword ptr [eax], edx
! A6 K% I3 K( E$ I& \7 J& \! {1 c+ x00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] + O( y4 N1 A. A" k; X
0040104C |. 85C0 test eax, eax
/ g9 Y# F" L6 j8 _# A# p0040104E |. 74 1E je short 0040106E ! B+ G' j3 B; l6 U5 s1 M
00401050 |. 83C4 F8 add esp, -8
- w p+ P* L2 U. V$ b6 A/ I+ y00401053 |. FF35 0C204000 push dword ptr [40200C] : G* `0 M7 ^$ k# D/ c. L0 K, X
00401059 |. 83C4 F4 add esp, -0C + [' c! y5 L, ]9 V
0040105C |. 50 push eax ; /pstream => offset msvcrt._iob
9 r$ N/ W" K( ^0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno
: x% F0 O6 v# {# W; y5 N& y00401062 |. 83C4 10 add esp, 10
4 X( R2 a4 U7 B* a! Y00401065 |. 50 push eax ; |handle * e8 e) o# b3 d' X0 ?( g
00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode # h! q h; ], X/ C+ O8 g `9 g
0040106B |. 83C4 10 add esp, 10
: k1 b9 o# ]2 v8 ^0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] % n- \ g# ]# y: n& Y) G7 A0 i: R8 J2 |
00401073 |. 83C0 20 add eax, 20 ( b* v" ~7 n# ^% K; }& z W
00401076 |. 74 1E je short 00401096
9 a- U. b' L9 o% Q* L8 {* U00401078 |. 83C4 F8 add esp, -8
5 W; {. F, s: Z0040107B |. FF35 0C204000 push dword ptr [40200C]
, P5 X \+ m& _( ^ Q% P# N6 J- o00401081 |. 83C4 F4 add esp, -0C
) `. `- F# B- }! g00401084 |. 50 push eax ; /pstream " _1 f0 k3 ^3 i) U3 o- j) C2 v# `
00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno
- I8 k4 v4 [4 k; c5 C) Z0040108A |. 83C4 10 add esp, 10
1 L# O$ w( N {) V1 E6 b8 W" y0040108D |. 50 push eax ; |handle
1 l' p- C$ M! C: I* x5 j0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode + i3 ?$ F/ Y, ^" c6 U$ x
00401093 |. 83C4 10 add esp, 10 6 Q' K' q: r; v; Z
00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] , {8 g; l6 ~8 `/ O- |& U1 v$ t' I
0040109B |. 83C0 40 add eax, 40 : g+ x% {& Z, H* G: e5 R {: t
0040109E |. 74 1B je short 004010BB
( V; f! g3 c* o( _! R004010A0 |. 83C4 F8 add esp, -8
' U1 y6 C7 M2 j6 R004010A3 |. FF35 0C204000 push dword ptr [40200C]
) [, |1 z: `4 ]! m0 C3 J; x004010A9 |. 83C4 F4 add esp, -0C
; A4 O4 m4 r9 P9 _+ W& l004010AC |. 50 push eax ; /pstream
& g b; u3 P! I4 X+ F: ^8 R0 S004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno 3 _0 \: f8 U% h% x8 i' X
004010B2 |. 83C4 10 add esp, 10 ' Z& o3 P n% ~9 P' m8 C
004010B5 |. 50 push eax ; |handle 6 O4 u' j2 v A5 c7 F0 A4 q
004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode + o& H) U9 U# M7 s- Z6 W
004010BB |> C9 leave B# Q+ H- C: W
004010BC \\. C3 retn / ]6 P0 K# x- V. _$ w" O. r+ q
004010BD 8D76 00 lea esi, dword ptr [esi] - L0 Y1 \- ^9 F1 ^& Z* y) ^
004010C0 /. 55 push ebp 6 s( D6 ]/ ^1 h# s
004010C1 |. 89E5 mov ebp, esp
; N& L T1 T6 K: \004010C3 |. 83EC 10 sub esp, 10
% a9 s+ R' Q* D004010C6 |. 56 push esi
% @- {% f, \4 K' P. g; x; g- Q004010C7 |. 53 push ebx
" Q- z1 V5 J" G, i0 |3 i004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8] ' f: U' u* p$ r% C. w" z0 ]* `' J# ^- R
004010CB |. 31DB xor ebx, ebx
i; a2 R/ Q5 v% y004010CD |. 31F6 xor esi, esi - F' h1 Z5 j2 h9 N& G
004010CF |. 8B00 mov eax, dword ptr [eax]
" c* D) @" [, ]: R004010D1 |. 8B00 mov eax, dword ptr [eax]
) i& D9 @$ Z+ {. \4 P004010D3 |. 3D 910000C0 cmp eax, C0000091 1 C+ `7 W/ \* u$ `
004010D8 |. 77 16 ja short 004010F0 1 g) G' }* V6 o
004010DA |. 3D 8D0000C0 cmp eax, C000008D 0 A( _. o2 T" c O" p
004010DF |. 73 4F jnb short 00401130
e; S" B* [( d- A004010E1 |. 3D 050000C0 cmp eax, C0000005 ) x0 T: a6 O+ c3 q
004010E6 |. 74 18 je short 00401100 " O7 x. R/ P- l1 }7 w
004010E8 |. E9 86000000 jmp 00401173
/ t6 v4 m+ N; G9 b004010ED | 8D76 00 lea esi, dword ptr [esi]
9 }4 O/ }, i$ `& N3 l! Z5 s3 l' d004010F0 |> 3D 930000C0 cmp eax, C0000093
" R" V2 I, ~7 i004010F5 |. 74 39 je short 00401130
* |, Y5 O1 e3 n5 y4 l+ M( @6 w004010F7 |. 3D 940000C0 cmp eax, C0000094
& k2 R- h% ~- h( K o& D2 k004010FC |. 74 37 je short 00401135 # h3 T/ S' u8 \
004010FE |. EB 73 jmp short 00401173
3 ~5 b) B0 o$ G7 q00401100 |> 83C4 F8 add esp, -8
( B2 f" G" J5 Y. U/ b3 A, T) O00401103 |. 6A 00 push 0 ; /func = NULL / h( [$ l9 Y! O6 s: S! C
00401105 |. 6A 0B push 0B ; |sig = SIGSEGV
6 f7 m( ~2 w9 h3 o; i00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal " A0 N: V: D" m6 N, f. |
0040110C |. 83C4 10 add esp, 10
8 m6 n, h8 L1 A4 t) y& G0040110F |. 83F8 01 cmp eax, 1 ; I7 ^$ H6 K) v( b$ U
00401112 |. 75 0E jnz short 00401122
# U7 n5 a; y1 f3 J00401114 |. 83C4 F8 add esp, -8
l- Z2 T3 ^3 r- p4 X4 B9 ]+ |00401117 |. 6A 01 push 1 ; /func = 00000001 % f% C2 o; ~' G t* `
00401119 |. 6A 0B push 0B ; |sig = SIGSEGV 2 h4 q7 M4 Z c" Q1 s
0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal
1 o! Z5 ^5 p: i) m* B+ _$ L9 l# ^00401120 |. EB 4C jmp short 0040116E
# H- d2 c5 P2 d- Q8 p00401122 |> 85C0 test eax, eax ) A7 m, M1 q, H2 ]. e8 j) u
00401124 |. 74 4D je short 00401173 ( d4 R- t" ~# L% S
00401126 |. 83C4 F4 add esp, -0C
+ E$ [- R% F) g7 |00401129 |. 6A 0B push 0B ' k( v3 g6 K/ h& g
0040112B |. EB 3F jmp short 0040116C ?& m- i* r# U" e# C, T" O
0040112D | 8D76 00 lea esi, dword ptr [esi] 5 R( B1 p9 ]! u7 S7 `' n$ n
00401130 |> BE 01000000 mov esi, 1
. m, b5 ?8 p% @+ _& T( |3 ]00401135 |> 83C4 F8 add esp, -8
7 O' h8 B! G: Y& H- p4 j2 q& j. k; `( r00401138 |. 6A 00 push 0 ; /func = NULL , P7 d5 ^# L0 t \
0040113A |. 6A 08 push 8 ; |sig = SIGFPE
8 c/ x$ |; E* F$ l8 \5 K/ W. A0 Z0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal 6 ~( z7 ^4 A2 X) L' J* [( J6 M
00401141 |. 83C4 10 add esp, 10
2 J- ^$ N( |7 ^( Y6 S4 _* R00401144 |. 83F8 01 cmp eax, 1 6 {. n5 ~2 n: |3 a9 {1 V
00401147 |. 75 1A jnz short 00401163
! D0 h0 s, Z3 |+ u4 a$ X0 j3 p0 z00401149 |. 83C4 F8 add esp, -8
t5 v# `" _/ c6 `, J0040114C |. 6A 01 push 1 ; /func = 00000001
. o) \% P( ^; k; B- _- o. W: `8 ^0040114E |. 6A 08 push 8 ; |sig = SIGFPE
2 Z3 h N$ l1 d3 U00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal
$ h' ]+ f7 a. P0 H f00401155 |. 83C4 10 add esp, 10 0 E) j9 i0 A7 t, e
00401158 |. 85F6 test esi, esi ; j4 G% G3 \& n% o3 e: f1 ~
0040115A |. 74 12 je short 0040116E
6 R- [! ]; } a& L E: ]( J0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset " A) _$ e% I4 E/ I* ^
00401161 |. EB 0B jmp short 0040116E
; f, X; R- g! @00401163 |> 85C0 test eax, eax ) g) U6 F& n2 c0 K ?
00401165 |. 74 0C je short 00401173 3 `% _2 h! \9 O/ _( ^
00401167 |. 83C4 F4 add esp, -0C 6 Z9 @$ E: h# G9 L
0040116A |. 6A 08 push 8
) v s. L p/ G( |0040116C |> FFD0 call eax 4 k/ v" M8 C' C5 E
0040116E |> BB FFFFFFFF mov ebx, -1
+ @1 Z8 W. M1 j! p( n00401173 |> 89D8 mov eax, ebx
7 J, ? n( d6 i- @8 _% s; m00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18] ) ]" v Z% S: b8 ~9 p
00401178 |. 5B pop ebx 6 H- s2 w1 d1 `3 P7 P7 P8 w
00401179 |. 5E pop esi
8 V1 _! ^( x6 N# A# N0 a0 k0040117A |. C9 leave
: e$ W& Q5 \% m q% G! S0040117B \\. C2 0400 retn 4 0 F. p7 W; K% j9 T5 ^4 u
0040117E 89F6 mov esi, esi + F* H7 I7 Z, r* p3 L( D
00401180 /$ 55 push ebp ' y l4 q" p! R5 a$ u9 T
00401181 |. 89E5 mov ebp, esp + G& B5 |2 }" X8 P9 d ~# [
00401183 |. 83EC 14 sub esp, 14 6 d# o, F8 Z8 ~: L4 \
00401186 |. 53 push ebx
! d) \- ?9 g7 K, `* a0 j; s00401187 |. 83C4 F4 add esp, -0C
$ I" K) I' W, l1 q4 Z A0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0
" q( D: Q6 p9 P) |+ a. b+ i0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter
0 E ^5 v. h. r$ E/ I0 l" J5 \00401194 |. 83C4 FC add esp, -4 3 ?6 v& ~5 D4 t5 n' U! I( ?
00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset " B. w3 w6 [ l: Q' D" Z; l
0040119C |. E8 5FFEFFFF call 00401000 : G2 T5 F6 b/ m" _$ o
004011A1 |. E8 8AFEFFFF call 00401030
( Q( ?3 N3 k v1 Q004011A6 |. 83C4 FC add esp, -4
% n1 X) L( A! v7 x6 H; c' [6 f004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ>
$ n* c4 Z" z/ {4 e& w; d004011AE |. FF30 push dword ptr [eax]
2 ~, y O6 p) Y& N2 d* g004011B0 |. FF35 04204000 push dword ptr [402004]
9 l5 s- k' {+ O, g' L004011B6 |. FF35 00204000 push dword ptr [402000]
* X) X! Q+ g* m1 W004011BC |. E8 AB000000 call 0040126C 4 v# f1 j1 M) I8 l: l7 D- ^
004011C1 |. 89C3 mov ebx, eax
7 P) h: o- N2 Y* a004011C3 |. 83C4 20 add esp, 20 & n4 A4 I2 y% {- i& k* p1 |
004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit + c9 e0 `/ e7 V2 W/ {
004011CB |. 83C4 F4 add esp, -0C
! i% c6 y( s5 `( D004011CE |. 53 push ebx ; /ExitCode
+ M; q3 l. u+ ]' R0 }004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess
. N. \1 g! J) l& x" f004011D4 >/$ 55 push ebp , D# V2 R7 t$ E5 j
004011D5 |. 89E5 mov ebp, esp 6 a! E$ J+ u. z
004011D7 |. 83EC 08 sub esp, 8
3 e5 s1 N3 p8 H0 I% e- b4 b- N004011DA |. 83C4 F4 add esp, -0C
* T7 }$ U5 ^9 ]. _7 v004011DD |. 6A 01 push 1
6 r+ F- B9 L% B% P# g004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
9 U+ G, q0 d% f+ o$ ?004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type> ' v) N" q) G5 ~5 u+ B) p
004011E6 |. E8 95FFFFFF call 00401180 / c# Q) h0 z; f* M8 N
004011EB |. 31C0 xor eax, eax 6 r/ e$ `$ Z0 O( f3 B! h
004011ED |. C9 leave / w+ A& M3 ^ \, `3 U
004011EE \\. C3 retn
5 W A4 N% G* h004011EF 90 nop $ v: e, h( j8 X0 }
004011F0 /. 55 push ebp
( m6 B4 S: Y: Q3 n004011F1 |. 89E5 mov ebp, esp
* y! _8 a2 k: J004011F3 |. 83EC 08 sub esp, 8
" c3 G: u, m& N, P$ C004011F6 |. 83C4 F4 add esp, -0C ) P: N5 {% \8 c
004011F9 |. 6A 02 push 2
" o A# o4 I$ J$ ?0 ~# ~ {. y004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
5 d3 Y: }0 S2 c$ v5 q00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type>
% U, _5 w' c) {2 G/ W/ _00401202 |. E8 79FFFFFF call 00401180
/ W6 E8 k. a5 r00401207 |. C9 leave
8 l% ], b1 Q, _' U# W00401208 \\. C3 retn
+ {: b1 R h8 [' y+ I3 Q$ S3 ~00401209 00 db 00
7 N: [! p9 l$ b1 z$ Z, ?0040120A 00 db 00
. D. I5 U% O: F/ u- m% F S0040120B 00 db 00 * v; E3 E1 c- h6 Q! s) m* v4 w
0040120C 00 db 00
! x3 [' _+ S9 Y# l( D" b0040120D 00 db 00 2 E C2 U1 a- _! o1 N
0040120E 00 db 00
) m2 J& r1 `* j9 k9 b- \6 {7 r0040120F 00 db 00
5 D. i( Q& p4 a. a$ j4 M00401210 72 db 72 ; CHAR 'r' - ^, R% @9 D. l: P8 S, {% o
00401211 00 db 00 & C3 W# [/ C& R" b' S
00401212 . 69 6E 70 75 7>ascii "input.txt",0 1 Z3 s2 A( k. h: w2 Y
0040121C . 43 61 6E 27 7>ascii "Can't Find input"
, _3 j& C7 v* H0 r. s6 [0040122C . 2E 74 78 74 2>ascii ".txt!",0
0 o4 P: Z: H$ B: k00401232 77 db 77 ; CHAR 'w'
3 V0 k \1 Y; |% E8 ^5 E* a00401233 00 db 00
9 z: h* r7 B. F0 [( J) s+ d4 \) `2 j00401234 . 6F 75 74 70 7>ascii "output.txt",0
, k% p7 _( d4 i; r. S0040123F . 43 61 6E 27 7>ascii "Can't Create out"
4 R3 t' h/ v2 d# k0040124F . 70 75 74 2E 7>ascii "put.txt!",0
! F; P |' X$ s9 A; Y( Y00401258 . 6F 6E 65 20 6>ascii "one char outpute"
1 s. p! ?& s! L- P2 j, T00401268 . 64 0A 00 ascii "d
6 t6 u5 Q s/ h",0
, I' A: I. `, s; V7 S u& g0040126B 90 nop
: j3 Q, B. ]! @2 Z0040126C /$ 55 push ebp
# c+ X$ M5 S- M) w& M2 D0040126D |. 89E5 mov ebp, esp % S; B, g; ]% h- l% R6 G
0040126F |. 83EC 18 sub esp, 18
9 q3 c: g# b: X' j/ G00401272 |. E8 39010000 call 004013B0 * o, }/ V0 m) v3 o. v
00401277 |. 83C4 F8 add esp, -8 : \3 G$ B* u2 B* e
0040127A |. 68 10124000 push 00401210 ; /mode = "r" : s7 K! j- [ F
0040127F |. 68 12124000 push 00401212 ; |path = "input.txt"
, f; ~" S5 Q1 @9 B9 c$ o00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen 0 C. h# q! T' A, j
00401289 |. 83C4 10 add esp, 10
2 X) }) I y& {7 @) C% t0040128C |. 89C0 mov eax, eax " ? w# S) ]3 a$ M, N9 D' i
0040128E |. 8945 FC mov dword ptr [ebp-4], eax
" I$ O, Z0 ^ Z! D, ^/ J0 k00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0
7 [. _- B) f4 m; Y' R- |: T00401295 |. 75 10 jnz short 004012A7
5 ~+ E1 ]/ Y7 \1 a/ L/ S3 m00401297 |. 83C4 F4 add esp, -0C 0 T- U# h2 f! d! M* m& {- R
0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!"
+ a- [6 A( j! W7 M" f0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf / ^& G4 Z5 l2 |! l6 H
004012A4 |. 83C4 10 add esp, 10
7 I+ M& G) Q, B7 h0 A+ r4 R004012A7 |> 83C4 F8 add esp, -8
+ v! `: X+ r# p) K! v& P7 Y004012AA |. 68 32124000 push 00401232 ; /mode = "w" , \, O! H7 |8 R8 G0 l
004012AF |. 68 34124000 push 00401234 ; |path = "output.txt"
8 e' c% v. G1 V004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen
- c6 {3 }' r7 @; X004012B9 |. 83C4 10 add esp, 10
- S' G0 y1 P. Y" Y) R; a" T004012BC |. 89C0 mov eax, eax
4 m2 }& X" Z2 n5 p) x3 v9 B004012BE |. 8945 F8 mov dword ptr [ebp-8], eax # ^8 z( \- G% |# N& x6 L- i2 B9 R
004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0 4 ]9 t5 T* Q: O. K: m! {
004012C5 |. 75 10 jnz short 004012D7
7 q/ K! ~6 P0 B; u004012C7 |. 83C4 F4 add esp, -0C . s, h* p' U; L! Y+ \, B8 d* W0 y6 P
004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!"
( a+ q; n2 ]9 R0 t$ h004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf 0 l% ]1 y+ G* ^! e
004012D4 |. 83C4 10 add esp, 10 - M9 X' q. g4 G0 h3 L5 Y, d
004012D7 |> 83C4 F4 /add esp, -0C
* R; Y$ |. u4 I# \004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4]
\: J1 K+ @2 ]7 c& J004012DD |. 50 |push eax ; /stream ' s; w" }# X6 [3 [7 J0 V; ]
004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc ' z% ~1 c& m2 r* @
004012E3 |. 83C4 10 |add esp, 10
; x8 Q- \$ F; [2 ^004012E6 |. 89C0 |mov eax, eax
2 Z/ F0 v" G* \004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax # P |9 a q* w. O2 C$ u: Z2 f
004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80
- Y f/ }! ^6 }004012F2 |. 7F 23 |jg short 00401317 * V9 O) ~ }; [
004012F4 |. 83C4 F8 |add esp, -8 # N8 C' [& C( L9 K! ?. S
004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8] * l4 h+ L" |' K, P
004012FA |. 50 |push eax ; /stream " V6 X; k) ?1 x
004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; | ! I3 e& d& \1 `7 ]2 W
004012FE |. 50 |push eax ; |c $ @. q/ l; z0 b6 m9 a" Z
004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc
( c7 b+ G+ K. _; o+ B' D00401304 |. 83C4 10 |add esp, 10 - G4 b3 Z4 I* W) g
00401307 |. 83C4 F4 |add esp, -0C 3 M2 u0 f# r$ ^
0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,""
Y) n. e# Z! s& y! ~, _& H0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf . Z' M/ V2 J' y+ Z
00401314 |. 83C4 10 |add esp, 10 + I- X* z& o, b" Q3 f: g
00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1
5 P: W& i; j" @4 n" s5 w0040131B |. 75 03 |jnz short 00401320 & x/ g0 u) Y# h% K9 r G# B9 E
0040131D |. EB 03 |jmp short 00401322 ; R7 W% t% v' p3 A
0040131F | 90 |nop
! `/ z/ k. `* Q! o9 w00401320 |>^ EB B5 \\jmp short 004012D7 / u8 L" b0 M- b
00401322 |> C9 leave
2 [& K9 W- j/ J- |; v' V$ h00401323 \\. C3 retn 9 w4 I, H2 ^" i6 {: i
00401324 00 db 00
2 H7 j; t/ ~$ w7 ^00401325 00 db 00 9 [( X# C. h! Z5 L* G: M+ Q; H
00401326 00 db 00
7 \. K1 z$ I# i, Y; a00401327 00 db 00
, ?- c# ? a ]7 J00401328 00 db 00
! _, v u" }. @00401329 00 db 00 ! f! a5 \* ]) e3 m9 u
0040132A 00 db 00
; r& e& a; u% M$ O4 Z! p0040132B 00 db 00 ) F1 \$ g7 f" I. j
0040132C 00 db 00
7 \0 ?6 C3 N( N8 ^) G0040132D 00 db 00
( }5 v' V' h& q j# r+ a/ K0040132E 00 db 00 5 F/ @/ `6 U" v
0040132F 00 db 00
7 s; |5 {. M, _' W00401330 /. 55 push ebp
; H8 {, }' w& @9 L) p00401331 |. 89E5 mov ebp, esp
4 E/ G5 A; w9 W1 T- R3 z00401333 |. 83EC 08 sub esp, 8 ' A+ _* @. e7 A3 h4 `1 x$ i: W- d$ M. \
00401336 |. A1 10204000 mov eax, dword ptr [402010] 3 l1 z P' [- u8 _( i% X- ~
0040133B |. 8338 00 cmp dword ptr [eax], 0
$ p! [4 g" L) p+ `3 ?0040133E |. 74 1D je short 0040135D $ m5 q7 W! F5 L/ T; u
00401340 |> A1 10204000 /mov eax, dword ptr [402010] ' _' n$ |; N( d& B# R. Y" C/ b9 K9 f
00401345 |. 8B00 |mov eax, dword ptr [eax]
+ j1 e$ R; m+ n, S6 \' }00401347 |. FFD0 |call eax 4 e' Q5 z& k7 P/ F8 e: J6 z
00401349 |. A1 10204000 |mov eax, dword ptr [402010] ! L2 i* I$ l1 U: ?) Y5 c$ `
0040134E |. 8D50 04 |lea edx, dword ptr [eax+4] 6 \5 I, A; T! E" \: l
00401351 |. 8915 10204000 |mov dword ptr [402010], edx $ V4 Q1 x+ ~! v8 G( Y2 e
00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0 , w! r/ z- E$ A+ o2 J
0040135B |.^ 75 E3 \\jnz short 00401340
V- E" @ f0 L6 @+ p$ z0040135D |> C9 leave : \5 U+ ~. T9 n7 Z4 A: g: U7 Z
0040135E \\. C3 retn
- U! T' p# m$ r; r0040135F 90 nop 6 U$ @4 U2 ?% i& p+ g% V$ |
00401360 /$ 55 push ebp + P( M6 R6 o4 W5 }$ }3 W; m
00401361 |. 89E5 mov ebp, esp 6 v( Y/ V2 ]. ]2 B: ]
00401363 |. 83EC 14 sub esp, 14 7 G' T8 k% w7 ?* i' B/ K+ U
00401366 |. 53 push ebx
# J4 S9 @$ @" ~00401367 |. A1 58144000 mov eax, dword ptr [401458] 8 s+ e3 v# s) ~4 h7 [5 X
0040136C |. 83F8 FF cmp eax, -1 & E9 w# _$ V( @! |' {7 T+ F
0040136F |. 75 19 jnz short 0040138A
7 @5 B% P+ F9 _% f% C00401371 |. 31C0 xor eax, eax ) u# a% h) J2 T* `, J( Z
00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0
$ j9 m0 S0 A5 z/ u0040137A |. 74 0E je short 0040138A
4 K% c4 X( h. Q7 o7 h1 w0040137C |. BA 5C144000 mov edx, 0040145C & C; I1 W% `- X1 n: k6 u
00401381 |> 83C2 04 /add edx, 4 * ], U8 O8 v& X* t4 }" r' S# k
00401384 |. 40 |inc eax $ Q' S9 M, d& Q/ o* ^ E
00401385 |. 833A 00 |cmp dword ptr [edx], 0
( `. k) V1 H! `0 R4 ~3 W00401388 |.^ 75 F7 \\jnz short 00401381 + {" p5 H2 ?2 V
0040138A |> 89C3 mov ebx, eax
( F7 N* B" Y: z/ Z J0040138C |. 85DB test ebx, ebx
9 |. G2 T# f6 E0040138E |. 74 0C je short 0040139C
2 M3 s4 I/ {9 B, ^6 G, o* n00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
8 S% ~" E$ n# w7 G/ q00401397 |. FFD0 |call eax
8 D' e# H: t E" N: y00401399 |. 4B |dec ebx . Y* j8 P, Q4 B
0040139A |.^ 75 F4 \\jnz short 00401390
6 U+ s Q0 f6 M5 ?: p% E0040139C |> 83C4 F4 add esp, -0C
" H0 Y" l A5 p i0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330
, C- q0 Q; Y( l9 f( w004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit
& l9 J8 |# E* Q004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18] ( F# i& R$ V1 v5 y
004013AC |. C9 leave # L# i7 L4 d- P% C' d; Q) ?
004013AD \\. C3 retn ; [8 h- r' k& h8 Q/ W
004013AE 89F6 mov esi, esi + c' C ^+ v$ M
004013B0 /$ 55 push ebp
3 [2 Z* w# z" j" l: T2 w004013B1 |. 89E5 mov ebp, esp
: V& L- X7 R# l+ z6 C9 u$ |004013B3 |. 83EC 08 sub esp, 8 ' U) u! n% |! Q
004013B6 |. 833D 14204000>cmp dword ptr [402014], 0
! _; N: e1 z9 }6 E. Y5 ^1 N004013BD |. 75 0F jnz short 004013CE 4 g: w% J2 ]9 c. F
004013BF |. C705 14204000>mov dword ptr [402014], 1 + B. ^; w! Z% h1 k7 m+ f5 w/ Z5 B% o
004013C9 |. E8 92FFFFFF call 00401360
4 m6 H) A3 R2 Z004013CE |> C9 leave
3 @" t6 u7 v& a' G004013CF \\. C3 retn n+ p" n) M! Z
004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode / F: ~; Z* B# I; `& @. A3 Y3 k6 i
004013D6 90 nop
# ~. D6 y: e1 G004013D7 90 nop $ Z; B& V( `2 S. L2 n8 Y0 `" R
004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob 6 O4 X. b# t. X. M+ X5 p- n0 e
004013DE 90 nop
0 M+ c: M* V, q. `# E* L7 L004013DF 90 nop # v; E0 X: J: r/ w/ j/ d) `2 T* F
004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type " m+ Y. g2 U7 K( J% V2 D/ ~$ T8 l
004013E6 90 nop
( g3 X+ @$ { g7 ^004013E7 90 nop ) S! b6 H6 f+ s7 r# l
004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit # `; y/ v' }0 A7 @6 i) B0 Y
004013EE 90 nop
# N; A, A. ~$ }. B. D' |004013EF 90 nop
- M$ M4 `- n7 N) w004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ # R5 T7 I! W' _/ P( U. q
004013F6 90 nop / ?* s, m# B6 J( G# Z( f* J6 K9 E" f
004013F7 90 nop
7 E5 L9 ~* n4 c0 L* Z' G. f# q- c004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset
/ a! s/ n: l, P3 m5 h8 N004013FE 90 nop
( E! N( f( g& z% w6 M/ O004013FF 90 nop
|. G; Q/ N1 e3 F$ T, F00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal 7 R( z" I1 h# n/ o2 R8 V
00401406 90 nop
7 |/ G0 s# q8 I7 [( {00401407 90 nop
O* k. A' Q) C/ ^2 P. ^7 r# ~00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno
$ P5 a1 }' }' z* Z5 D/ _) K0040140E 90 nop ; [4 w% v6 P w! j
0040140F 90 nop
1 u$ R d9 Z* \- g3 Y6 @! u00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode
3 ~8 x. o& B2 \$ `" n00401416 90 nop
% v% s( a( Y. d8 b/ [2 A* Y2 B00401417 90 nop
4 `. x- G. E' M0 _00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs ) a2 F; `2 T9 W% ]/ p6 }
0040141E 90 nop
6 k. G6 V- e* F; N4 Z0040141F 90 nop
/ P, e/ ^) y/ L D) h+ [1 `2 W00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc ! C6 w# c/ n, R. b4 B' Q0 G O1 t
00401426 90 nop % \" i$ G( Q6 A, h2 v, B3 f
00401427 90 nop
. R' ~ y: S4 A00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc
4 p2 b/ q; W$ J0 |0040142E 90 nop ! J" L/ I# @8 c( c0 d! d A, ?
0040142F 90 nop ! L% }3 s/ C9 D* m
00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
2 g3 T" `* v' B4 ?00401436 90 nop
, G5 ]2 |3 ~( }! v% r0 u00401437 90 nop
7 B! ^7 v2 H# M& o00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen / {0 @* ^- z% s2 Z7 }/ Z# [
0040143E 90 nop 9 U' D. C8 M$ @7 J0 M
0040143F 90 nop * p1 Y, \0 H9 q
00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit & Z6 X- u! D) H" k
00401446 90 nop
( l( a% O& L6 z6 n00401447 90 nop
* `, `* }) s* i6 A7 c2 |0 {00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter . [; A- [2 J$ F# A7 q. C4 u
0040144E 90 nop
/ K @5 |+ A3 O6 [& w1 y0040144F 90 nop # y/ c1 N/ t d
00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess ) j; x9 F1 S0 h
00401456 90 nop ! I8 m& P! o. ~! l3 C
00401457 90 nop
% m. g0 P9 E+ r# M8 R( L00401458 . FFFFFFFF dd FFFFFFFF % `+ T; v4 u' e. f$ n) v! o
0040145C . 00000000 dd 00000000
2 g6 S8 `9 M5 n6 ?00401460 FF db FF : k( D: x$ h( t" N# h. x
00401461 FF db FF , r' W! O" a% K0 a
00401462 FF db FF
9 F% U9 ~- k% a00401463 FF db FF " s) I. C* M- Z- r
00401464 00 db 00
) Y5 J2 U# l% a" U' O4 @00401465 00 db 00
8 {/ o. {/ e# D9 r00401466 00 db 00 % T8 w P4 @# d, W A- F. e
00401467 00 db 00 |