由于这个程序很短,OD里面的汇编代码也很短。
G g6 {' j1 R8 G; G0 w! z请看红色的部分,这就是和0x80比较的部分。
& ?1 h$ W+ L. ~* Y7 ?& m- u把这2句NOP掉,然后保存修改后的文件为exe。
# `$ c4 B0 [) n8 N, v2 ^我们发现input.txt里面的所有内容都能被输出了。
$ W7 i# V7 J; M8 T, E附上修改后的exe.
% i5 n$ }0 v4 Y5 d深绿,你可以把这个操作过程试一下,练习一下.
/ e" w: C1 a# L) `9 ]
& F/ H8 P5 D P! x4 z# \1 L00401000 /$ 55 push ebp
h! x) k+ @* R5 s/ |: p9 k1 C00401001 |. 89E5 mov ebp, esp
J& X2 x2 | |) k- T8 k2 j+ G" e00401003 |. 83EC 18 sub esp, 18 8 `0 m2 s: W8 z1 `: S" G5 e+ D; w
00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0 " z9 n- V: A. ~' `1 ?6 L& k
0040100D |. 83C4 F4 add esp, -0C 4 C" O4 |( s* O
00401010 |. 8D45 FC lea eax, dword ptr [ebp-4] 1 _/ E$ F8 ]: m/ M7 k5 b
00401013 |. 50 push eax / }/ o; B3 Z! ^- l# y
00401014 |. FF35 08204000 push dword ptr [402008]
9 f `' T0 G. p4 p2 D, n0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8] $ N6 j0 ^3 q! x0 z! G. d. ]
0040101D |. 50 push eax
* T/ m; t1 ]7 M* Y# z/ o2 O) T6 B. q0040101E |. 68 04204000 push 00402004 : J* K3 a1 x* y: [" B# w: M; a6 F
00401023 |. 68 00204000 push 00402000 1 E- X3 O: P% v
00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs>
; K7 ]( U/ T$ a, f& s. h0040102D |. C9 leave
- M9 N- H: l( g2 u0040102E \\. C3 retn
1 F" O+ F+ K% E# M+ X0040102F 90 nop
& E' _* ]! [5 e" T. {: @/ h8 s00401030 /$ 55 push ebp
& {# b- S7 F1 H9 U* ^00401031 |. 89E5 mov ebp, esp
9 o' L$ D3 h' G/ k00401033 |. 83EC 08 sub esp, 8 ; J$ @( c$ p. H0 F
00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C] 8 f2 }6 f1 R8 g3 b7 w! T
0040103C |. 85D2 test edx, edx / x1 x5 K5 y2 a
0040103E |. 74 7B je short 004010BB
; |7 \3 Y! I3 u+ y; H7 M00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>>
# d3 B& \+ _. Y4 D00401045 |. 8910 mov dword ptr [eax], edx & T0 q( v1 {; K5 R( E" H
00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
+ d% U0 P/ u9 p& E' Q0040104C |. 85C0 test eax, eax - O: C. C) r, X ^1 V, y
0040104E |. 74 1E je short 0040106E
A" h; E" f% Z2 d* n8 o00401050 |. 83C4 F8 add esp, -8 0 e+ ~* D& B$ i0 ]6 M5 a
00401053 |. FF35 0C204000 push dword ptr [40200C] - o) n8 V6 ]3 Q* {
00401059 |. 83C4 F4 add esp, -0C
( q/ R$ G0 n7 _/ c* q5 o0040105C |. 50 push eax ; /pstream => offset msvcrt._iob
) Q) q8 A/ a8 ~# C8 u, y4 b1 k0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno
. w* w0 c, l4 J0 X* e00401062 |. 83C4 10 add esp, 10
+ o; h& a% Y8 g& j4 x00401065 |. 50 push eax ; |handle
9 K* b8 K* T0 p+ B& e& I" m6 i00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode . E& P* O7 {- n4 E
0040106B |. 83C4 10 add esp, 10
3 d/ T, j9 m/ J6 c: D0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
$ r+ o, I! F. U00401073 |. 83C0 20 add eax, 20
2 V- e4 v$ {0 C" i! j% a, D00401076 |. 74 1E je short 00401096 0 I. T; P/ ?* O9 c/ V$ M; u, [
00401078 |. 83C4 F8 add esp, -8 * U- c5 p' o N# D8 X& \0 O
0040107B |. FF35 0C204000 push dword ptr [40200C]
, O9 Q* c: t. w# j" x00401081 |. 83C4 F4 add esp, -0C 1 \$ U$ v2 W6 J6 o B$ K
00401084 |. 50 push eax ; /pstream A% t* m8 d% C* S
00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno ' \) W. `+ O0 c# N
0040108A |. 83C4 10 add esp, 10 ( \9 @9 }. d* W: y
0040108D |. 50 push eax ; |handle * h& M' ]$ H# \, t- v1 E' O j4 ]# k
0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode
6 w5 l! H0 s' a: `1 m8 b00401093 |. 83C4 10 add esp, 10
4 X% }5 X0 j$ ~+ e/ ~2 t v00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] 9 x$ Q5 O) Q1 `1 i
0040109B |. 83C0 40 add eax, 40
p& u4 ^# I" z0040109E |. 74 1B je short 004010BB ! a5 s* r. I* A6 r# W
004010A0 |. 83C4 F8 add esp, -8
% x4 z/ g; p7 P6 ~3 z- z+ h2 T004010A3 |. FF35 0C204000 push dword ptr [40200C] 3 b& V2 i+ O& V
004010A9 |. 83C4 F4 add esp, -0C + S' L% m7 Z+ C$ H0 F
004010AC |. 50 push eax ; /pstream
5 s# Q! k! ~& D% q$ j004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno 1 x3 ?2 H; J/ F" M
004010B2 |. 83C4 10 add esp, 10
3 l' Q0 Q, ^" D- c: x8 ~$ F3 Q" i004010B5 |. 50 push eax ; |handle
5 v6 c/ d7 b1 a) Z004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode / \+ [1 w$ e; F* K# L
004010BB |> C9 leave
! E4 a, }; X- `+ g0 S7 q( k004010BC \\. C3 retn & q# W( U7 P/ `2 b! x" z4 i1 R
004010BD 8D76 00 lea esi, dword ptr [esi] 3 d$ \! w! `; e! n
004010C0 /. 55 push ebp
5 E6 p' x: ^5 _% W$ J- m; O004010C1 |. 89E5 mov ebp, esp
( C7 z2 A* o$ \6 q u004010C3 |. 83EC 10 sub esp, 10
: w" i9 v' R1 Z5 ?8 C004010C6 |. 56 push esi
4 s4 k4 N( ^4 E: L: K004010C7 |. 53 push ebx ) Z! D5 U2 H) d( Y- e
004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8]
$ d3 Y& ?0 l( K! F004010CB |. 31DB xor ebx, ebx
% f; H! l0 f' e8 q( M2 w0 {1 [004010CD |. 31F6 xor esi, esi , {/ A' C; f* j8 s* f6 ~
004010CF |. 8B00 mov eax, dword ptr [eax] u+ O3 h$ |9 I$ y
004010D1 |. 8B00 mov eax, dword ptr [eax]
4 ~% `4 b h+ @# g0 G# k004010D3 |. 3D 910000C0 cmp eax, C0000091 ! y) a0 i: M2 {4 w9 v$ s
004010D8 |. 77 16 ja short 004010F0 0 P9 U/ \! w: D
004010DA |. 3D 8D0000C0 cmp eax, C000008D 9 z8 ?5 R) _ \3 ]6 H" i! p
004010DF |. 73 4F jnb short 00401130 1 H: }7 W) u) E$ b
004010E1 |. 3D 050000C0 cmp eax, C0000005 H, s0 B c3 N0 w9 A
004010E6 |. 74 18 je short 00401100 " ]5 [& u* l1 Z+ t0 e9 p2 k* u, J
004010E8 |. E9 86000000 jmp 00401173 . S- b' c& ^7 H; X
004010ED | 8D76 00 lea esi, dword ptr [esi]
5 G% x; |+ o7 a G3 J5 k& g0 ~004010F0 |> 3D 930000C0 cmp eax, C0000093 ( |8 |2 s' W- S6 s% G
004010F5 |. 74 39 je short 00401130
K8 |* Q6 v( n# S$ x$ X7 Z004010F7 |. 3D 940000C0 cmp eax, C0000094
! I9 S; T. X; F' E' [. u% b2 r004010FC |. 74 37 je short 00401135
" P5 d4 {1 {5 E) Z4 c$ w) \004010FE |. EB 73 jmp short 00401173
( v# X4 x/ j; ]. Z! e8 u00401100 |> 83C4 F8 add esp, -8 " h+ r* u& d1 h8 K* n
00401103 |. 6A 00 push 0 ; /func = NULL
4 g7 w8 _# `* e2 g2 S I3 Y00401105 |. 6A 0B push 0B ; |sig = SIGSEGV Z o) t: W7 ]+ G
00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal ( T# J2 q3 ^+ ]5 Q0 y& L. @
0040110C |. 83C4 10 add esp, 10
( e4 ~. I# G) r" T) j& w0040110F |. 83F8 01 cmp eax, 1
# M3 H3 m5 L( M% }: M00401112 |. 75 0E jnz short 00401122
1 j8 g7 N# R" J3 p. v( _! s00401114 |. 83C4 F8 add esp, -8 ) m+ q9 `9 d$ G& {7 Q5 e7 M
00401117 |. 6A 01 push 1 ; /func = 00000001 ' }2 p2 d' r; w3 v
00401119 |. 6A 0B push 0B ; |sig = SIGSEGV # e5 a/ c* @ b2 i1 |9 y) y( ^* t% w
0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal
/ ~. M, p' v* w f" X" @4 G: V }00401120 |. EB 4C jmp short 0040116E
2 _, `* O c$ B5 O! _00401122 |> 85C0 test eax, eax 9 d( p" L/ ?' q9 g9 O8 \; w
00401124 |. 74 4D je short 00401173
1 N6 ?. O& N/ \$ `* r00401126 |. 83C4 F4 add esp, -0C
5 J A, p# [" L4 k0 O00401129 |. 6A 0B push 0B
3 u: k# \9 X! N* j9 h( t- H7 T0040112B |. EB 3F jmp short 0040116C
1 n$ @# K Y0 l0040112D | 8D76 00 lea esi, dword ptr [esi] 4 V+ J) z7 s3 S+ l$ B' _
00401130 |> BE 01000000 mov esi, 1
9 S! ?: R4 r# E' ?; E, `. ` a6 t00401135 |> 83C4 F8 add esp, -8 8 [( p5 L2 ~" r
00401138 |. 6A 00 push 0 ; /func = NULL 4 n8 r$ b/ U1 P o, h
0040113A |. 6A 08 push 8 ; |sig = SIGFPE ' p- O3 R) Y4 y, z* A
0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal
. ~" i6 q( z2 f- L. }8 J4 R00401141 |. 83C4 10 add esp, 10 # A) ^7 m& s# y M( A& a
00401144 |. 83F8 01 cmp eax, 1
( H; z8 }/ D( F* w/ d2 s' w00401147 |. 75 1A jnz short 00401163
) M, k( P' H& H# ]8 _! I00401149 |. 83C4 F8 add esp, -8
& J. S$ x' p9 {4 l+ z. h( c0040114C |. 6A 01 push 1 ; /func = 00000001
k, f9 m* \( @" c( v2 L4 y$ W/ Q& V) }" j0040114E |. 6A 08 push 8 ; |sig = SIGFPE & G9 b4 y+ I E ~6 ^) R7 d9 b
00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal ; L( @$ O9 m3 C9 J2 y
00401155 |. 83C4 10 add esp, 10
& b1 ]% @% R# W c6 B00401158 |. 85F6 test esi, esi 4 l8 k- T) z7 f" s9 x/ @- R
0040115A |. 74 12 je short 0040116E
, l+ b" J6 n3 B( b6 O2 _# [) S0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset * W7 A) d; H' K5 I( P
00401161 |. EB 0B jmp short 0040116E
/ ]3 ?: V3 G7 X00401163 |> 85C0 test eax, eax 0 z- r3 p; |) M
00401165 |. 74 0C je short 00401173 # p8 V7 H7 w R8 o& J, v
00401167 |. 83C4 F4 add esp, -0C " t3 Y4 c/ `" c- X7 i
0040116A |. 6A 08 push 8
% z- r, @& w) ^$ {7 n, d- [, ^0040116C |> FFD0 call eax 7 ~# }/ H3 o+ F( ]! V. f
0040116E |> BB FFFFFFFF mov ebx, -1 8 E' P+ R' K" x6 s: @' {
00401173 |> 89D8 mov eax, ebx
) e+ i* E" v4 H00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18]
+ l3 ?: a) J$ `$ C# e3 A0 h00401178 |. 5B pop ebx % s0 c4 m" s9 w' S" B2 m( f: g ~. i
00401179 |. 5E pop esi 8 y' E3 i0 E5 K$ v4 H0 J
0040117A |. C9 leave 2 _) T3 V4 P8 G" Q5 u
0040117B \\. C2 0400 retn 4 : R% O" c. O0 A% V1 {
0040117E 89F6 mov esi, esi % j+ Q% M8 X: ^: B1 O
00401180 /$ 55 push ebp
, M1 u* R! p+ M8 |' Y00401181 |. 89E5 mov ebp, esp # W( ]# @& e1 J% a0 f) h) p" a
00401183 |. 83EC 14 sub esp, 14
6 n. c0 f9 x! ?! I, C( ~) `( r) R00401186 |. 53 push ebx
$ J5 j5 u1 ?1 C/ x( R00401187 |. 83C4 F4 add esp, -0C ( n3 J, Q0 N* @: x
0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0
! C# T% G. j) o$ v$ V! [6 a/ Q+ o+ L0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter
! c8 I0 {2 O6 |; H00401194 |. 83C4 FC add esp, -4 * ]( L1 n. c* T" Q
00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset
' |5 _& A7 H. j- X* I: N0040119C |. E8 5FFEFFFF call 00401000 % \; L2 m2 m& q
004011A1 |. E8 8AFEFFFF call 00401030
# \/ P% ]$ C/ H0 E5 |004011A6 |. 83C4 FC add esp, -4 9 e3 A) ?. d3 k( B% o! p
004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ>
/ `) |9 ?$ \' |, A1 y004011AE |. FF30 push dword ptr [eax]
0 n; Z; y3 O0 D* B! D+ q) L! q004011B0 |. FF35 04204000 push dword ptr [402004] ( h g1 b% a$ V+ r0 o
004011B6 |. FF35 00204000 push dword ptr [402000]
% r9 y8 o- @! X4 n- P% k* j4 @004011BC |. E8 AB000000 call 0040126C & Y4 T! l5 _. c0 G" g' a0 \+ _* Q
004011C1 |. 89C3 mov ebx, eax
. M) G/ I* p( n& Y# t004011C3 |. 83C4 20 add esp, 20
* Y7 V. s5 G/ A `! p j004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit
0 B, C. L k8 `, |5 `" @( B* `004011CB |. 83C4 F4 add esp, -0C ! G b1 }' I# s
004011CE |. 53 push ebx ; /ExitCode
0 z6 ?! u- z5 q( @3 ~8 l' Q004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess : a4 O) [* w# F7 L, X) ?. V
004011D4 >/$ 55 push ebp
* p4 |" Z- C& b004011D5 |. 89E5 mov ebp, esp
- F7 U* ^- y6 e- h2 I: b/ D004011D7 |. 83EC 08 sub esp, 8
. I2 U4 `. E1 f004011DA |. 83C4 F4 add esp, -0C 1 q+ [) a; c" n$ Q: u9 s( @
004011DD |. 6A 01 push 1
3 e6 c; o) a2 u. ^- n G004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
/ g( Q$ l. u8 L004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type>
- Y' j; v5 N8 o004011E6 |. E8 95FFFFFF call 00401180
$ n* |2 [) L: A( U9 K, h: K. m004011EB |. 31C0 xor eax, eax
: y9 G; k( H4 b004011ED |. C9 leave 5 R g+ P; s, J) g1 E
004011EE \\. C3 retn " G1 G. r2 J9 T+ N0 l
004011EF 90 nop
* R: I: ] j- q! x! R) o, v004011F0 /. 55 push ebp
8 W: c( g" Z5 Y! S2 ~004011F1 |. 89E5 mov ebp, esp " U6 k# _. f: R4 w
004011F3 |. 83EC 08 sub esp, 8
8 p( T: i2 M7 _8 w+ I+ _6 A8 j, W$ Y004011F6 |. 83C4 F4 add esp, -0C * o8 D7 v4 R2 B7 w9 q- R! q
004011F9 |. 6A 02 push 2
( }9 R) Q3 d. g$ n004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a> / q% E9 f, ^( g1 }5 j* @" Y: L* B
00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type>
1 W! y! i j! c/ x) |6 D" z00401202 |. E8 79FFFFFF call 00401180 6 N0 a% d* R4 z1 f" x6 f4 J: |
00401207 |. C9 leave
+ ^% R) |- f7 ]4 A5 \, Z00401208 \\. C3 retn / t% r- ~% p, ~5 Z2 Q- ~* a
00401209 00 db 00 ! m# H# M% J# p; I
0040120A 00 db 00
" W! Q8 x5 V/ |4 X9 c0040120B 00 db 00 : S, j! v2 f& b( J
0040120C 00 db 00
5 F5 D7 x- b$ h: z! J: p! W' k0040120D 00 db 00 ! N5 d2 t: c. a. |& B
0040120E 00 db 00
. f9 }6 ?+ S t. a K% `( M a- ~3 _0040120F 00 db 00
0 C, b! |2 t3 B* ~00401210 72 db 72 ; CHAR 'r' 4 W Z; y Y4 w
00401211 00 db 00
4 c5 [# I' s; I! m) Z00401212 . 69 6E 70 75 7>ascii "input.txt",0 - g& x8 t: g; D' j
0040121C . 43 61 6E 27 7>ascii "Can't Find input"
% r% L6 ~. m0 [) n0040122C . 2E 74 78 74 2>ascii ".txt!",0
8 E" ]# |( _- [7 s1 W; g) i00401232 77 db 77 ; CHAR 'w' ' W' f% [/ ]6 v' p4 A- C
00401233 00 db 00
, |- H# E' J' {% h) h% G R00401234 . 6F 75 74 70 7>ascii "output.txt",0 6 J! ~8 k9 S& Y% I
0040123F . 43 61 6E 27 7>ascii "Can't Create out"
# n* c% f a' E" O0 D1 l+ }0040124F . 70 75 74 2E 7>ascii "put.txt!",0 3 Q. k/ @( h( {$ p' T9 ]
00401258 . 6F 6E 65 20 6>ascii "one char outpute"
! L# i; G2 v9 S1 Y" U00401268 . 64 0A 00 ascii "d
/ ~/ X, S+ m, C: O",0
- X5 w: U p4 W/ \0040126B 90 nop 8 ~, I) t3 g0 j8 Y, Z
0040126C /$ 55 push ebp 1 Y7 W- X. f" C
0040126D |. 89E5 mov ebp, esp
# W: c5 w( `( W0040126F |. 83EC 18 sub esp, 18 , N: P h- Z0 F& X! S/ j
00401272 |. E8 39010000 call 004013B0 2 n L1 i* x( }5 M
00401277 |. 83C4 F8 add esp, -8 ) b& b# x6 w( I+ m
0040127A |. 68 10124000 push 00401210 ; /mode = "r" % q6 |, m9 d4 t( k
0040127F |. 68 12124000 push 00401212 ; |path = "input.txt" . o( h+ i1 t5 O# r5 v+ g3 _
00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen # R1 j% }: c0 Z; A3 O) E; G
00401289 |. 83C4 10 add esp, 10
4 ` o& z# ?% G1 ~5 V. K9 k0040128C |. 89C0 mov eax, eax $ R( O4 Q! E. g# b, ^# l9 j
0040128E |. 8945 FC mov dword ptr [ebp-4], eax
6 X; [' x- y" C# }, z# g4 T00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0 2 n5 m! u" }: n* a
00401295 |. 75 10 jnz short 004012A7
z: u/ C; P+ z' b, w00401297 |. 83C4 F4 add esp, -0C * O2 ]% y! T- L8 _$ w3 d
0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!"
$ l' ^5 B2 |2 V3 l0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf ! ^1 L' U+ Y: h& q
004012A4 |. 83C4 10 add esp, 10 7 Y1 D1 B. F4 p6 u4 v
004012A7 |> 83C4 F8 add esp, -8
- P# h9 I: |# j4 ^& _& s3 G6 s9 \$ r004012AA |. 68 32124000 push 00401232 ; /mode = "w" ' ]0 B2 `* Q6 i8 _7 g
004012AF |. 68 34124000 push 00401234 ; |path = "output.txt" 1 N' e5 _/ H3 A3 |! o* Q' E
004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen
/ ^3 N0 j1 ^' x' ]8 @6 ]3 R004012B9 |. 83C4 10 add esp, 10 & c! ~9 o$ ~# D1 t' @& f5 s v
004012BC |. 89C0 mov eax, eax
! ~8 U: X" r7 O& |8 ]004012BE |. 8945 F8 mov dword ptr [ebp-8], eax % a: N0 P$ g! [# i: E
004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0 $ Z T% k. F" f6 X7 O9 _* L/ F
004012C5 |. 75 10 jnz short 004012D7
. x& p. U$ S& o0 H004012C7 |. 83C4 F4 add esp, -0C & s b' ~9 h$ X- d% \
004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!" 9 \; x6 \" q, w+ f: ^1 X# }
004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf . b( ]" l( |" Z- k
004012D4 |. 83C4 10 add esp, 10
: v) o* t, k5 `; i( ]004012D7 |> 83C4 F4 /add esp, -0C . H; W* w0 A! S8 T4 f
004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4] 0 }7 S" R) y4 q7 k; R: J1 j3 h
004012DD |. 50 |push eax ; /stream 9 _0 \- _7 X9 D0 J) F
004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc
, N. F* Q7 F. i6 R0 \- ` }. c$ ?004012E3 |. 83C4 10 |add esp, 10
" P& h* }& N3 m1 z, z004012E6 |. 89C0 |mov eax, eax 7 h2 G9 E V3 Z7 k
004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax Q. J9 _" E7 }8 G& N, _9 w& C
004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80 2 Y( ?2 x& O9 y! j% U2 I
004012F2 |. 7F 23 |jg short 00401317
+ Z! r/ T9 D% Z8 }, n! R2 ^. ^004012F4 |. 83C4 F8 |add esp, -8 ! G4 W% i( q7 o* x
004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8] + S+ ?9 W' J9 N2 G0 b' y; ]) A- [9 k
004012FA |. 50 |push eax ; /stream
6 p7 ^/ `& v3 r/ x1 v004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; |
0 A Z. O: d. q7 d004012FE |. 50 |push eax ; |c 8 l9 h" |& g0 i4 J
004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc ; w; p; t# [2 L9 i. t; T
00401304 |. 83C4 10 |add esp, 10 5 [0 {% q1 B2 Q( l
00401307 |. 83C4 F4 |add esp, -0C ) E$ b& i; N+ |& d
0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,""
( |6 A; {2 U+ B: \3 n0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf
) z! Z( E( u/ H9 W- l4 V) X5 m00401314 |. 83C4 10 |add esp, 10 ' `& S8 F6 B$ }- }
00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1
) Z8 C, c& d& n0040131B |. 75 03 |jnz short 00401320
& i) V7 ~, }5 m! W! I' p/ H' R6 Y8 @0040131D |. EB 03 |jmp short 00401322
( `/ _% k4 H/ H2 O% W& j1 a% {0040131F | 90 |nop $ }7 V6 m6 T* ~9 z- i' \' P
00401320 |>^ EB B5 \\jmp short 004012D7 : _$ {# o9 l) q- l. I$ d
00401322 |> C9 leave
w! \* w+ y& S$ Q- F00401323 \\. C3 retn
: _" Q4 e4 \0 o" Y8 v00401324 00 db 00 ' i" n9 M6 T" z; W) _, b/ i
00401325 00 db 00 8 i6 g4 g( x2 Z- m
00401326 00 db 00 9 C9 t) r3 v9 @
00401327 00 db 00 8 F! A% a' Y# Y2 H# y! V" o
00401328 00 db 00 0 o* p/ P: ]* R
00401329 00 db 00 9 g+ L1 p# r- c$ m# {! |' P/ W: }6 f- \4 }
0040132A 00 db 00 $ ]% n8 @' M; \6 p
0040132B 00 db 00
' z% B% s$ R) q$ |0 e" ^0040132C 00 db 00 . e0 X% f. J' z. a4 `8 o8 h/ E6 k; s) J
0040132D 00 db 00 * ~4 n4 e* G2 Z3 N! A2 o; @
0040132E 00 db 00
0 r" ~" w; }& H" W3 Q: l9 S0040132F 00 db 00
0 {8 g6 A2 x0 @00401330 /. 55 push ebp
$ z i6 N' F9 z h' `7 L7 c00401331 |. 89E5 mov ebp, esp
: f7 [% \' M4 R; S8 q* C00401333 |. 83EC 08 sub esp, 8
- V* @9 x9 r( f. l) \" V00401336 |. A1 10204000 mov eax, dword ptr [402010]
/ `) ]- f8 s5 W% ~/ u, d j9 D$ i0040133B |. 8338 00 cmp dword ptr [eax], 0
+ k7 m8 S( y" r1 v- b g0040133E |. 74 1D je short 0040135D / ^4 b( H2 a( u8 h# a z/ m
00401340 |> A1 10204000 /mov eax, dword ptr [402010]
; |. k4 e1 I- {* A% C* E00401345 |. 8B00 |mov eax, dword ptr [eax]
+ n7 R7 ^0 d& @( A0 e2 N" A' ?00401347 |. FFD0 |call eax 5 l6 V @. L$ q- ]8 q, R
00401349 |. A1 10204000 |mov eax, dword ptr [402010]
A' Z+ H, d6 ~" f2 G! q q( e+ ?0040134E |. 8D50 04 |lea edx, dword ptr [eax+4] 1 n5 f) S8 F+ @: N) N9 i( w
00401351 |. 8915 10204000 |mov dword ptr [402010], edx & `2 r" s4 Q7 T5 W
00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0 . E$ @: | N2 V6 r. d7 J% ]% H
0040135B |.^ 75 E3 \\jnz short 00401340 ( c: O' q+ S! Y
0040135D |> C9 leave
7 i4 k% P3 e7 \0040135E \\. C3 retn
6 J) l" c$ H1 n0 t5 n+ A8 Y3 n0040135F 90 nop , z: V. [! P, N2 G/ n9 I
00401360 /$ 55 push ebp
: W( m _7 X P- H% D00401361 |. 89E5 mov ebp, esp
+ J8 u0 y% W$ x. P00401363 |. 83EC 14 sub esp, 14 " K9 B- Z- N# k& W9 F6 J7 D
00401366 |. 53 push ebx
7 }# U, P/ b9 @# c7 Q( n( i3 G1 S0 G00401367 |. A1 58144000 mov eax, dword ptr [401458] 7 ?9 K- R8 u# P$ q( {6 h
0040136C |. 83F8 FF cmp eax, -1
, F5 Q) e! T% Q+ g8 H7 |8 ?# \0040136F |. 75 19 jnz short 0040138A " ]2 \# h" N& {' G9 M; M
00401371 |. 31C0 xor eax, eax ! ~3 d! v! v3 B5 g2 H! X- l
00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0
s, F) j% h& w) s, t6 y0040137A |. 74 0E je short 0040138A + X' K# E1 p: J0 c- Z0 b
0040137C |. BA 5C144000 mov edx, 0040145C
% P& G+ H% ]% }; U0 n. M00401381 |> 83C2 04 /add edx, 4
( w" n0 n I' M: s1 C# S00401384 |. 40 |inc eax , {/ [+ V7 H* x6 X
00401385 |. 833A 00 |cmp dword ptr [edx], 0
+ ~4 e& Z, P, e% C. F+ D00401388 |.^ 75 F7 \\jnz short 00401381
0 f, @: Q* s$ c& | W0040138A |> 89C3 mov ebx, eax 7 C9 \ a2 h& ?+ E" T' t4 N, F
0040138C |. 85DB test ebx, ebx ) T) c4 s* p% q; o
0040138E |. 74 0C je short 0040139C 6 Q1 {$ ~! s. G" t# `8 ?
00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
6 v6 q9 x9 g% J8 }/ l5 h) {00401397 |. FFD0 |call eax 9 U6 i6 G) j* ^- A8 V) H3 V
00401399 |. 4B |dec ebx , p1 v' Q" I0 a/ j
0040139A |.^ 75 F4 \\jnz short 00401390
3 l& A* M: v* d- }0040139C |> 83C4 F4 add esp, -0C 3 |& v0 K" D* ~2 K8 M( n1 W
0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330
5 Q5 [) V8 b3 T; t$ \; }004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit 1 f; K5 g( p) h9 A
004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18] ! j+ G/ e: c5 R
004013AC |. C9 leave
( I; ^1 J0 c6 H4 T: k" c004013AD \\. C3 retn
( z/ G9 `3 D/ X" u, f0 t9 `004013AE 89F6 mov esi, esi
0 p- x. o S. ^3 R O3 y) _9 _004013B0 /$ 55 push ebp 0 ], j8 m: H7 k
004013B1 |. 89E5 mov ebp, esp ! k& j) W" J& M/ D
004013B3 |. 83EC 08 sub esp, 8
# P( h, X* _- S5 y- |5 a' g004013B6 |. 833D 14204000>cmp dword ptr [402014], 0 0 a4 Z: A0 G, e5 W- X, b# ^
004013BD |. 75 0F jnz short 004013CE 9 b1 G4 }* ?) \) V2 ^7 J& O
004013BF |. C705 14204000>mov dword ptr [402014], 1 , H3 @- o9 Q C
004013C9 |. E8 92FFFFFF call 00401360
; f" a& c7 P) ?1 _- M4 D0 r0 p2 I7 T8 G004013CE |> C9 leave . T) ]1 }5 |1 Y/ b& B. e: M. C
004013CF \\. C3 retn
6 B+ V& }2 M) j004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode ( _8 r- V2 |# a
004013D6 90 nop
$ D: W8 }# S3 } g2 |/ [5 d004013D7 90 nop
9 [0 _/ b; _5 Y9 i: u004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob 4 i: s+ Z8 `4 Z" v' T# h5 i
004013DE 90 nop
" m: E8 z9 p* y$ N3 Q# X3 N; ^ P004013DF 90 nop ) m$ ^( ?" u- P" s
004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type
. P r( F7 [, a6 d2 d/ b1 K1 {004013E6 90 nop
& m+ E; ^9 L( T3 R9 i* C004013E7 90 nop % R) W9 u$ ?0 F0 f8 L- t
004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit
: W# K, [% S2 g, Q; s( K) W" k004013EE 90 nop
3 d5 \8 u- l2 ?$ g" {004013EF 90 nop
9 S" q' A1 S# G; w/ ?$ Q004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ ! |5 [1 ~. o7 G4 j+ @; D# x
004013F6 90 nop
1 g& X4 M8 }5 e1 y4 C$ ]004013F7 90 nop ! q8 X& i, u# g7 @/ l
004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset # Q9 a, }3 X+ B m J+ E
004013FE 90 nop % }8 K0 s5 S' [! F7 H. ^$ {4 b
004013FF 90 nop * h' Y; v' ?' P/ h& s3 k0 T
00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal
7 T1 C. ^. k/ B# G. f00401406 90 nop
, u+ K8 O- j3 p3 z! p0 B00401407 90 nop
# [6 y- `7 P- H$ ^8 h00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno
; M( l# u7 n# J$ \0040140E 90 nop 1 R b: A. N; V% x {! v
0040140F 90 nop + w7 G& K- f) J, E; c' M
00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode
- Z5 y8 v2 [5 a8 U00401416 90 nop
1 J! E' f- t4 p. f2 O00401417 90 nop . `1 y2 ^! N# `+ I6 Q2 w& U" M
00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs " \- |1 g6 S3 L6 w* G! z$ i; `
0040141E 90 nop # @: k u6 m0 p9 P: Z2 K9 G# e
0040141F 90 nop # L8 D2 u/ R# @# ~0 }% a
00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc K1 _, ?; ]' O+ I: F7 R0 h
00401426 90 nop 0 J+ J. u4 T- D0 ?' l& H
00401427 90 nop # z$ ^5 d4 m5 D9 @1 G+ S [
00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc
- O- q& Y8 \+ b; _8 B; C0040142E 90 nop ( ]# S r, e8 n, d
0040142F 90 nop 3 j S8 X9 f) B* q. D: Q3 u7 p* j
00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
: o6 V6 B \- v, x* A00401436 90 nop
* e6 f2 e0 z0 D% k6 C00401437 90 nop & q; u7 n7 A7 u
00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen
) J$ a3 c) K& t' C) g+ \- p. g0040143E 90 nop
2 `" I) L3 W, r: Q0040143F 90 nop
! O4 p# g; O: f1 d, ]00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit # n7 a8 |7 f' W8 s
00401446 90 nop . j! F' j0 b9 S& |' E G
00401447 90 nop
- ]7 P M# W' J+ X+ y00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter * u7 \9 x! H- R. y p
0040144E 90 nop
, I1 N+ {5 O" P- a( |8 G4 l0040144F 90 nop
0 I# |" m0 I: t0 G00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess
2 }# ~! K2 c: Y/ l00401456 90 nop
& ^7 c$ b( F2 }/ N7 N) ?! v' c00401457 90 nop
& }5 m; e3 V: n, e" z2 Z00401458 . FFFFFFFF dd FFFFFFFF 5 l* K2 g/ X4 s) A( E
0040145C . 00000000 dd 00000000 $ V. V- ~& |* H" C+ {
00401460 FF db FF
" d, f# u1 e9 ?00401461 FF db FF
1 D. B. Y4 _# n3 l- H% i, M00401462 FF db FF
9 b8 w; J v$ d& n$ M6 w00401463 FF db FF % M' I6 O# ^# R* M6 e+ T$ \
00401464 00 db 00
* W( P# ^8 [ ]1 Z00401465 00 db 00
" Z/ ]1 l$ s3 {6 R9 R00401466 00 db 00
" ^4 _1 r" m6 x* M; O/ V. A00401467 00 db 00 |