由于这个程序很短,OD里面的汇编代码也很短。 1 W( I- R" p9 S+ l6 F8 N$ W# Z
请看红色的部分,这就是和0x80比较的部分。
. q) r9 U$ ]5 H+ w2 t, L1 ]6 v5 f把这2句NOP掉,然后保存修改后的文件为exe。 . Y- k8 A& E$ Z W9 ~, P2 u* g) l
我们发现input.txt里面的所有内容都能被输出了。
+ `( V( X" K; M5 s @$ i! {附上修改后的exe.
0 C/ b5 K; b7 B& U. F深绿,你可以把这个操作过程试一下,练习一下.
2 D0 b; ~$ E. e/ @# u- Z$ z
9 C+ ^$ C+ F/ [) A( S: ]' s00401000 /$ 55 push ebp 4 J& x( P P, E
00401001 |. 89E5 mov ebp, esp ( Z' N0 p" C5 k& Q" s
00401003 |. 83EC 18 sub esp, 18
& ^1 ]5 Z2 o' y: }" _00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0 1 r. b, |2 P' \, [
0040100D |. 83C4 F4 add esp, -0C * j7 Y' F" ?$ G, ^$ ^" V; h
00401010 |. 8D45 FC lea eax, dword ptr [ebp-4]
& j$ y$ r: X; P9 v00401013 |. 50 push eax 1 d: D$ v9 q9 z
00401014 |. FF35 08204000 push dword ptr [402008] % R8 I2 F) {( M! l% A4 U" n5 h. c" g
0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8] ; Y3 X2 g5 L3 O( B
0040101D |. 50 push eax 5 Q K9 Z. A: B& Z1 @
0040101E |. 68 04204000 push 00402004 , c3 K2 X3 W; m
00401023 |. 68 00204000 push 00402000
" w# q' I5 q) h00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs> 1 S- ^) ~& e# ~ S! o
0040102D |. C9 leave
`0 S9 A5 ?" m: e& n0040102E \\. C3 retn
* e3 Y4 c$ o* d3 e! I( c; S0040102F 90 nop
% K5 ~0 a8 a8 Z8 @4 C- I4 H00401030 /$ 55 push ebp ; ]! h$ b. E K( |
00401031 |. 89E5 mov ebp, esp
5 i5 e3 F* Y8 ~3 v/ V' x00401033 |. 83EC 08 sub esp, 8 6 K9 A1 M1 r# J' S5 \' r; I9 t3 X
00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C] 6 ]4 z, ~; K& d/ ^# ^6 |* x/ g
0040103C |. 85D2 test edx, edx & O8 t% z' z0 i! d; h
0040103E |. 74 7B je short 004010BB * E# O ^" O4 [
00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>>
9 m1 ~+ W6 J& w8 h00401045 |. 8910 mov dword ptr [eax], edx
7 h5 S9 X: y6 n00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
4 F6 l/ K: V% c. c5 q: F0040104C |. 85C0 test eax, eax 0 l' p% L. m& K9 D
0040104E |. 74 1E je short 0040106E 0 l- p+ C2 t/ ~: E/ _" `& ]( Q, ^! X
00401050 |. 83C4 F8 add esp, -8 : Y0 H' X( r) ?6 @
00401053 |. FF35 0C204000 push dword ptr [40200C] % ?8 X6 \* \3 p. }- Q) H
00401059 |. 83C4 F4 add esp, -0C ) B9 }' N5 w' q5 \3 V( Y5 R; s
0040105C |. 50 push eax ; /pstream => offset msvcrt._iob / Y/ y* o7 \) s& }6 }& n
0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno $ N6 s0 ~& ^2 F* u
00401062 |. 83C4 10 add esp, 10 ' m2 ^4 q; ]1 a' ~, W, z
00401065 |. 50 push eax ; |handle % P! ]( U( d% ]: \2 P
00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode / q) q6 r; S$ A' f* e4 ~2 R5 R* h
0040106B |. 83C4 10 add esp, 10
& [3 a% Z& I: q% p& ^0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] ! x' f$ n) M( G9 s4 [
00401073 |. 83C0 20 add eax, 20 * k4 B+ ?6 N% u! l' A, u
00401076 |. 74 1E je short 00401096
( m2 T! ?0 ^5 X1 x: c. }; r* u00401078 |. 83C4 F8 add esp, -8
* C# F: T# Z5 ~0 P+ T1 s! ]0040107B |. FF35 0C204000 push dword ptr [40200C] e+ o( f. d ^" T, _: n
00401081 |. 83C4 F4 add esp, -0C
) s. d: S/ h [" f4 [7 `+ H00401084 |. 50 push eax ; /pstream
) e! e5 x; g5 W% T" _$ \00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno
0 q9 |4 c) [- X" P3 V' g3 C1 G) j( [5 O0040108A |. 83C4 10 add esp, 10
" g$ S( S3 h7 O3 d4 n% H" ]0040108D |. 50 push eax ; |handle
, e$ Z6 s, L; i3 J8 s0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode
$ h- Z" K- F- U00401093 |. 83C4 10 add esp, 10
; F! J" L" Z& S/ T. p- Z00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
: [2 q( f' w. d+ Y0 |0040109B |. 83C0 40 add eax, 40
+ K4 o4 Y1 p& Q5 T0040109E |. 74 1B je short 004010BB - K% J2 v) T* a0 A0 C$ G% J Z
004010A0 |. 83C4 F8 add esp, -8 6 }- c( X' Y; I' ~( q
004010A3 |. FF35 0C204000 push dword ptr [40200C] 8 [1 Z S5 H% \2 K4 L. o$ a7 V
004010A9 |. 83C4 F4 add esp, -0C
: [/ J. v0 f {6 s004010AC |. 50 push eax ; /pstream + l" N) m- K! ]3 }6 H) p5 d0 `
004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno - s. J; ~6 Z6 L% @# T
004010B2 |. 83C4 10 add esp, 10
2 `& e1 _; m. A+ Z) h1 T. M004010B5 |. 50 push eax ; |handle
# R+ Z6 |. [7 c% O6 ?004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode 1 M" g9 x8 }: p4 |5 m# f
004010BB |> C9 leave 8 {& q2 Z) g [4 `9 e: F0 D
004010BC \\. C3 retn : |4 i/ z2 ]2 @2 H+ ?
004010BD 8D76 00 lea esi, dword ptr [esi] ~5 i# z) R; D9 q1 a2 D/ n4 x3 N
004010C0 /. 55 push ebp # m% F0 B1 z" w8 \" u: p
004010C1 |. 89E5 mov ebp, esp 8 P$ `* K* U! j: {/ k
004010C3 |. 83EC 10 sub esp, 10 ; o' ?7 e$ k( _. e/ L4 c* Q/ F/ _
004010C6 |. 56 push esi X. q0 Z" F# w& e
004010C7 |. 53 push ebx
. J0 O; s9 h' Q' A7 y+ E4 d004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8] ( x* {2 {. ? ^' K- E# z* q
004010CB |. 31DB xor ebx, ebx * q5 V1 y, ]& I# T+ r; T
004010CD |. 31F6 xor esi, esi
% o, L+ K- ~! Y' `3 E7 U004010CF |. 8B00 mov eax, dword ptr [eax] 0 C4 C( u! T1 y" P* S) H/ B2 V
004010D1 |. 8B00 mov eax, dword ptr [eax] 1 m( I: l8 n4 a" p; G6 K, |9 L
004010D3 |. 3D 910000C0 cmp eax, C0000091
2 I+ F$ U8 k8 w u0 l9 \004010D8 |. 77 16 ja short 004010F0 ) Y( G6 r) S- P7 e e5 \' X3 |
004010DA |. 3D 8D0000C0 cmp eax, C000008D
( c) K7 v9 W) l" T6 R9 f4 N+ Q004010DF |. 73 4F jnb short 00401130
, h2 G; r. v1 f: G w004010E1 |. 3D 050000C0 cmp eax, C0000005 " F: l$ P" u7 v6 v7 L5 T1 y
004010E6 |. 74 18 je short 00401100
+ R, f9 ^( M% ~ Q# }# m004010E8 |. E9 86000000 jmp 00401173 " G# ^3 ~7 ~$ |* e( d" V ~
004010ED | 8D76 00 lea esi, dword ptr [esi] 1 M, B: O" X) s$ y3 C+ s8 d# _) o
004010F0 |> 3D 930000C0 cmp eax, C0000093
# T1 }- m5 G7 o; n6 @2 d& P004010F5 |. 74 39 je short 00401130
2 d/ n. s* K# v1 p; S. Z004010F7 |. 3D 940000C0 cmp eax, C0000094 ! f. l! c! F& u
004010FC |. 74 37 je short 00401135 3 F+ n0 `9 U) ~4 x
004010FE |. EB 73 jmp short 00401173
/ m) Y- D! {, `2 Y/ d5 a00401100 |> 83C4 F8 add esp, -8
/ a, r8 h2 a: j u, [& z. O00401103 |. 6A 00 push 0 ; /func = NULL 3 P% x" o, |. s0 B
00401105 |. 6A 0B push 0B ; |sig = SIGSEGV
( I: a. t3 v& H/ M7 _) {00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal 6 ]8 m5 T% ]$ A" ^, Y- }, g
0040110C |. 83C4 10 add esp, 10
0 @; P" U% J: @: T0040110F |. 83F8 01 cmp eax, 1
9 y8 Q* Z+ w! m4 ^( \) ], |( I00401112 |. 75 0E jnz short 00401122
* i9 r: ^9 P" u; E: H00401114 |. 83C4 F8 add esp, -8
6 r" a/ a: E7 x. c00401117 |. 6A 01 push 1 ; /func = 00000001
5 T4 }% i' t- P. [# N5 o- x00401119 |. 6A 0B push 0B ; |sig = SIGSEGV ' j* \) {9 @# [
0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal i; W3 }) J& I( j0 q
00401120 |. EB 4C jmp short 0040116E " k$ P9 d5 }6 S. r/ F b/ [
00401122 |> 85C0 test eax, eax 3 \8 B3 \( `' T9 W3 \: e
00401124 |. 74 4D je short 00401173 " b6 I m; }' l! _' G5 ]- J* `" A
00401126 |. 83C4 F4 add esp, -0C ; [5 o, v, D7 {& n# a, ~
00401129 |. 6A 0B push 0B
& ]; f! t7 x/ `: k' A0040112B |. EB 3F jmp short 0040116C
0 Z6 l2 w* k+ y* W# u0040112D | 8D76 00 lea esi, dword ptr [esi]
8 g6 W) P) ?$ Y00401130 |> BE 01000000 mov esi, 1
! z6 o9 U8 G( z0 `% b9 a! q00401135 |> 83C4 F8 add esp, -8
) x2 S+ n: P& h. d$ }3 o) P00401138 |. 6A 00 push 0 ; /func = NULL - ?0 j- |) G( o" l
0040113A |. 6A 08 push 8 ; |sig = SIGFPE
( u: f1 O3 l9 q7 ]8 Y0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal
p0 w& \( c$ J t9 O4 R; n3 m6 F* h00401141 |. 83C4 10 add esp, 10
+ |: }/ f4 B" O1 b) l2 g00401144 |. 83F8 01 cmp eax, 1 / H6 M4 E6 {5 V4 F
00401147 |. 75 1A jnz short 00401163 ( M `8 ~: q8 x, b/ K T
00401149 |. 83C4 F8 add esp, -8
( ~2 `3 L" H; @. ^* G0 }0040114C |. 6A 01 push 1 ; /func = 00000001
+ ]5 I+ l) N! [% X1 v6 n0040114E |. 6A 08 push 8 ; |sig = SIGFPE
* G$ r6 T0 h% o, N+ f+ r" E00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal
# m0 u" a" M0 f& X! s3 h00401155 |. 83C4 10 add esp, 10 - X: ?2 `8 W; E5 M
00401158 |. 85F6 test esi, esi 2 X/ t1 ^( [) L9 R
0040115A |. 74 12 je short 0040116E
2 L( f( u; E. b% o0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset / w. [3 }" M) p! O$ i: l
00401161 |. EB 0B jmp short 0040116E ( W* \$ f) T- t: a0 w Z
00401163 |> 85C0 test eax, eax
& x3 z" J% O* U+ m: [' {00401165 |. 74 0C je short 00401173
4 n, u/ g1 k% w00401167 |. 83C4 F4 add esp, -0C
3 E, Z" o- U* g0 M0 k B5 n0040116A |. 6A 08 push 8
% E& n u5 e1 X6 V7 b. y6 F9 r" R0040116C |> FFD0 call eax " ]: B% |5 m( j ^
0040116E |> BB FFFFFFFF mov ebx, -1
$ j- c9 J1 C6 D, R' o00401173 |> 89D8 mov eax, ebx , n# }# Y% U m3 N! I" d
00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18] 6 ]. Z" F, h5 k5 p2 K1 r2 I/ E" H
00401178 |. 5B pop ebx
" L/ s8 \& f- n+ g00401179 |. 5E pop esi
! ?$ W5 |7 b! d" b5 b0040117A |. C9 leave
6 d3 h1 s3 g8 d$ t( }0040117B \\. C2 0400 retn 4 6 }- t& [2 j2 _) `) h' J
0040117E 89F6 mov esi, esi 1 ?% F1 b' W" N# [: `
00401180 /$ 55 push ebp 0 N" a, c2 c9 J0 O I; s( C$ h
00401181 |. 89E5 mov ebp, esp ( Y6 H3 z0 f/ K' h" m p% y
00401183 |. 83EC 14 sub esp, 14 ( F' ` b4 s Q2 `
00401186 |. 53 push ebx U# t1 w- Y: L$ a
00401187 |. 83C4 F4 add esp, -0C 9 u; Y- I2 {6 W. N2 N0 a! V
0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0
) X" T/ m2 _1 G& W0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter 7 o( k1 C: s# u9 Q5 l9 A
00401194 |. 83C4 FC add esp, -4 & b u: E; K2 T2 z! G8 \/ \ Q# N
00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset : h- W$ l$ u- L2 d
0040119C |. E8 5FFEFFFF call 00401000 / V0 X# |) f5 E* G
004011A1 |. E8 8AFEFFFF call 00401030
4 Z; l/ _; R' ]4 `" Z0 L& L004011A6 |. 83C4 FC add esp, -4 7 c, c, I, W! b; y2 O
004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ> ) T% R0 u. h1 @2 f0 \, C0 L2 e8 g
004011AE |. FF30 push dword ptr [eax] " T* J7 A9 s& [
004011B0 |. FF35 04204000 push dword ptr [402004]
: r I# V2 ^$ y( F. J% Y8 W1 C5 n004011B6 |. FF35 00204000 push dword ptr [402000] 6 a( W2 d7 z3 J* J
004011BC |. E8 AB000000 call 0040126C
, v' b! b' |' }8 F0 I4 d3 ]& W+ c$ s, ]004011C1 |. 89C3 mov ebx, eax
! ]$ }9 e9 i1 }9 }2 p) I% `004011C3 |. 83C4 20 add esp, 20 3 p; O6 ]% b5 L5 ?
004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit 9 j6 b: @( P2 ~: A( s3 W
004011CB |. 83C4 F4 add esp, -0C 3 ]7 o7 e# `& _
004011CE |. 53 push ebx ; /ExitCode
0 _8 B/ Y* Z/ z004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess * b0 t- K5 r# |, c# p7 V
004011D4 >/$ 55 push ebp
3 |/ C0 k6 ~ H1 s( J004011D5 |. 89E5 mov ebp, esp ( t7 [8 F- i' j2 N
004011D7 |. 83EC 08 sub esp, 8
7 T6 R9 S) Z" o+ c' g5 W. R004011DA |. 83C4 F4 add esp, -0C 7 }: z! P# K! n0 _, v* O
004011DD |. 6A 01 push 1 U4 i8 m: G+ B: d: w9 t, {
004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
% }' U6 O( Y5 X4 d' a9 [004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type> : A, B) S/ G# y6 d5 X1 z! m7 n! C4 H3 i
004011E6 |. E8 95FFFFFF call 00401180
3 f2 x9 }; ^2 `# s7 Q( Z+ V004011EB |. 31C0 xor eax, eax & P3 {! G' J t; J% ~# B# r( z
004011ED |. C9 leave 3 s# O. Q" @0 H3 S# w0 g
004011EE \\. C3 retn
/ ~9 U, [& S& a/ w004011EF 90 nop
- Q( c7 | a# B+ G/ }004011F0 /. 55 push ebp : O- E% T+ e' K/ y1 f0 ~$ E
004011F1 |. 89E5 mov ebp, esp 3 e. ^+ Z: E9 B) X$ I! l/ {. ^% y1 q
004011F3 |. 83EC 08 sub esp, 8 ) K; E; B+ g1 j7 h, h: p( r
004011F6 |. 83C4 F4 add esp, -0C 1 [. } [+ v3 \& R1 I
004011F9 |. 6A 02 push 2 , Q* { \9 q2 x: \7 s# m( ~" J
004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
: w K: y/ {% w0 N- J4 [; A ^00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type>
/ X% r" w2 v- d00401202 |. E8 79FFFFFF call 00401180 . h" I# v' Y/ L4 I4 S
00401207 |. C9 leave 7 f* o" n, ~; p: Y
00401208 \\. C3 retn / t+ h6 i& I7 Z5 \
00401209 00 db 00
$ O5 T/ e* e5 X0040120A 00 db 00 & Q' l! ?- Q% n. e5 Y
0040120B 00 db 00 9 b m* p7 w5 H
0040120C 00 db 00
8 j3 b( h! r; {) l9 ~0040120D 00 db 00
. n, m z3 f8 ~& D1 ]& ~' L2 N- g0040120E 00 db 00
: r8 v, `3 @; s( q0 n' L" D' P0040120F 00 db 00
. G* o ]) \" x$ q: R' C- G, i& ?00401210 72 db 72 ; CHAR 'r' % ?5 n ]- r8 U5 ^, I4 w5 a! y
00401211 00 db 00 ; P2 v6 c1 h! ?1 t
00401212 . 69 6E 70 75 7>ascii "input.txt",0
& ~- m) O$ M0 E# h6 w0040121C . 43 61 6E 27 7>ascii "Can't Find input"
' J* `1 G8 `" E1 }) M0040122C . 2E 74 78 74 2>ascii ".txt!",0 H+ Y: Q4 H1 b# k
00401232 77 db 77 ; CHAR 'w'
7 p# n* e' ?# @00401233 00 db 00
+ d7 p: B% s2 r% A2 y% P. i4 C$ o00401234 . 6F 75 74 70 7>ascii "output.txt",0 - M& [# z2 c4 A/ B, G- O
0040123F . 43 61 6E 27 7>ascii "Can't Create out"
/ f' w- J* \% E0040124F . 70 75 74 2E 7>ascii "put.txt!",0 8 [" C. a; V$ h X
00401258 . 6F 6E 65 20 6>ascii "one char outpute"
4 ^8 F6 q; d8 w' a' Q. }00401268 . 64 0A 00 ascii "d 4 l. D; z3 P- v
",0 " k, {' e& p( i! S9 e
0040126B 90 nop
, q6 e1 {4 f3 h' I( F0040126C /$ 55 push ebp 1 \9 q5 k- M" D( @1 J
0040126D |. 89E5 mov ebp, esp . A/ \1 S @; n# Z( t6 V2 d( n
0040126F |. 83EC 18 sub esp, 18
! r1 M4 W6 h6 V; P2 F1 t00401272 |. E8 39010000 call 004013B0 ( W" {2 ^9 ]* {# v( u
00401277 |. 83C4 F8 add esp, -8 ' t1 k$ s4 J+ [; i6 r: c# w- c% V
0040127A |. 68 10124000 push 00401210 ; /mode = "r"
: |/ I* o- O8 x# h! f d0040127F |. 68 12124000 push 00401212 ; |path = "input.txt" 6 U6 F# N R, S4 I( ]0 l. g
00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen
- _. [8 o5 ~ D# R" T00401289 |. 83C4 10 add esp, 10
$ N! J1 G1 L. F+ G0040128C |. 89C0 mov eax, eax
/ @& _* G! p; V( g0040128E |. 8945 FC mov dword ptr [ebp-4], eax
4 @# b q* `3 _( p# d% Z3 g00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0 ; O' }9 C# w6 g5 u! p
00401295 |. 75 10 jnz short 004012A7
6 j, w3 j, K0 l) O; i s00401297 |. 83C4 F4 add esp, -0C 8 P2 j( J' {% k1 K" M' g
0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!"
: P% L& ?) U- M B R( \0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf % L! \( D& J' @5 J" x
004012A4 |. 83C4 10 add esp, 10
; a7 T" }/ V/ m- a( R- i004012A7 |> 83C4 F8 add esp, -8
9 Q! \! _; G5 o5 j004012AA |. 68 32124000 push 00401232 ; /mode = "w" 0 q% C# e0 ^: M' [" E8 J" x
004012AF |. 68 34124000 push 00401234 ; |path = "output.txt"
$ n5 }" W {9 @004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen " @9 p6 P; G* M
004012B9 |. 83C4 10 add esp, 10
0 a( p- B2 c1 U004012BC |. 89C0 mov eax, eax
' Z; Y+ `2 f) r% D7 t004012BE |. 8945 F8 mov dword ptr [ebp-8], eax
9 Z/ W, ^0 J5 y5 [4 u004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0 5 l4 D. J& l. h. g; C: V
004012C5 |. 75 10 jnz short 004012D7 + ~6 r6 M2 m9 F3 z
004012C7 |. 83C4 F4 add esp, -0C
$ R# ~# s$ y. P004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!"
$ K4 u' R2 H& x e# ^004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf
* a H \0 \# U4 X1 h( k! O7 S004012D4 |. 83C4 10 add esp, 10 ) c. n v+ P7 M5 q+ R
004012D7 |> 83C4 F4 /add esp, -0C
# O/ g$ i1 H8 E$ w Q& _( {7 {004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4]
7 @5 P( Z" U& _5 _- n004012DD |. 50 |push eax ; /stream
# @* T. l8 p- j( o; m ]: D1 f004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc ; Y6 t. F: k3 g. L3 _( f/ n0 \
004012E3 |. 83C4 10 |add esp, 10 5 ]: Y8 ?* o. J8 C
004012E6 |. 89C0 |mov eax, eax ' y# Y, W/ x8 P/ e
004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax " ?( U# W" t( v4 R5 s
004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80 8 H5 P- o+ O+ d* w
004012F2 |. 7F 23 |jg short 00401317
2 i5 A: F% f- m* k004012F4 |. 83C4 F8 |add esp, -8 8 Q8 b8 a' P9 n/ a
004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8]
9 q/ _. Y. U: [7 G/ O# @: x% @004012FA |. 50 |push eax ; /stream
1 Z7 Q7 P! v% H$ w7 t004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; |
' o7 Y) l9 s: G/ A1 |5 A m004012FE |. 50 |push eax ; |c
- [2 w' G- r; ^& |; c; O* J( j" P004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc ) |2 D# S/ @6 a* y& a% N2 L' t# r
00401304 |. 83C4 10 |add esp, 10
8 H0 {+ Y4 e2 c! M00401307 |. 83C4 F4 |add esp, -0C
, v+ h7 \# `& |+ c6 A0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,"" 8 M3 d/ V" X- ^, A. _* G S2 @# H
0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf
$ D, f! o3 ?+ v' d00401314 |. 83C4 10 |add esp, 10
5 K% G- F) s( ]9 ] l00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1
, p7 ^4 Z# Z! F A* Z' `6 v0040131B |. 75 03 |jnz short 00401320
" |) a) O; B4 O* b0 @; [/ `0040131D |. EB 03 |jmp short 00401322 0 C# ^$ z, k7 i" d% \2 ]
0040131F | 90 |nop , N" _6 I6 X$ u$ s' N, |
00401320 |>^ EB B5 \\jmp short 004012D7
8 t' \) |$ v9 m0 S1 ^3 P00401322 |> C9 leave 9 F8 v) Z9 T8 R7 |6 V( b
00401323 \\. C3 retn
9 m: a/ t% {. e( T9 K% s# G: L00401324 00 db 00 3 K g" A( {/ t% M/ Y
00401325 00 db 00
( e; s2 q# [# G7 L- l# g$ P00401326 00 db 00 ' D( o; e2 Z2 y! k/ z& a, A
00401327 00 db 00
; z& b8 A. A/ j" {00401328 00 db 00 2 Y- a5 d# J1 }6 b" i+ `2 C% d/ ^
00401329 00 db 00 ' P3 e v+ k5 t2 g) U9 B, s! @8 n
0040132A 00 db 00 1 J/ N: X/ F* W3 w& w
0040132B 00 db 00
8 `0 `% `' n# [" I) E0040132C 00 db 00
- H }7 r0 f( }2 p e0040132D 00 db 00
/ l4 p: z5 x: e3 J0040132E 00 db 00 ; y9 T) {5 c7 @/ ]& h5 s7 d$ Z7 k% G
0040132F 00 db 00 2 Q8 V) E( H: J) \
00401330 /. 55 push ebp
: P) i5 ?3 T1 } @00401331 |. 89E5 mov ebp, esp
# _* {* \2 }& q5 p2 E00401333 |. 83EC 08 sub esp, 8 5 q! d6 i0 P! d
00401336 |. A1 10204000 mov eax, dword ptr [402010] ( g, S; J1 f6 \) e) t1 A
0040133B |. 8338 00 cmp dword ptr [eax], 0 8 K5 v0 ^% j3 g# Z9 `* V
0040133E |. 74 1D je short 0040135D : K+ w0 X2 J8 q% _$ ]
00401340 |> A1 10204000 /mov eax, dword ptr [402010] * y. ] I0 M% b6 p; l
00401345 |. 8B00 |mov eax, dword ptr [eax] # P5 b8 U; g, _
00401347 |. FFD0 |call eax 5 u5 Z9 Z* f6 n! U+ z7 f
00401349 |. A1 10204000 |mov eax, dword ptr [402010] 6 I: _ M6 }5 A5 m+ P- v$ S+ B O
0040134E |. 8D50 04 |lea edx, dword ptr [eax+4] . b- y8 ]" l* d! i- ?! u
00401351 |. 8915 10204000 |mov dword ptr [402010], edx 7 j! u' P; b& t- C4 k; F) g$ G
00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0 , h. L, e- f8 ]; T: M4 `
0040135B |.^ 75 E3 \\jnz short 00401340 # e/ x: @9 d1 s2 D- ?6 _
0040135D |> C9 leave 6 n) N H$ I7 }
0040135E \\. C3 retn 5 U6 Q# V, W7 c d0 d/ X( B
0040135F 90 nop * U k5 t0 o# I" A' W# Q) Q
00401360 /$ 55 push ebp
( R- m- P4 i8 g0 S/ m; q00401361 |. 89E5 mov ebp, esp + z+ c8 r: A& |7 g% _! B3 M' @
00401363 |. 83EC 14 sub esp, 14 - n# x) U# E3 I( j1 u7 \/ u
00401366 |. 53 push ebx # B8 I2 s% K8 i4 c. k7 p
00401367 |. A1 58144000 mov eax, dword ptr [401458] k5 \7 z* U+ U3 U3 o3 s
0040136C |. 83F8 FF cmp eax, -1 7 o4 e0 i. [) {$ h o) u
0040136F |. 75 19 jnz short 0040138A + u$ V4 _8 `4 U0 S4 G
00401371 |. 31C0 xor eax, eax 0 h: h8 z& `& U' n* [$ p& e! ^0 b9 s
00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0
) \9 U) t8 J( M( B6 r8 L9 p/ Z0040137A |. 74 0E je short 0040138A , K& e+ @( G1 r* [0 U4 d2 A
0040137C |. BA 5C144000 mov edx, 0040145C
U& S' g; g+ X! {00401381 |> 83C2 04 /add edx, 4 4 Q6 S! r: f3 a4 f, {
00401384 |. 40 |inc eax w2 o* f5 ]% t4 l0 `3 g) `+ w9 k
00401385 |. 833A 00 |cmp dword ptr [edx], 0
( W; o2 B4 F4 n& u9 n' s# q00401388 |.^ 75 F7 \\jnz short 00401381
' a% X0 }5 W1 |& K2 r, ^+ q: q0040138A |> 89C3 mov ebx, eax
/ A# f' p1 y7 _& p m0040138C |. 85DB test ebx, ebx ) Y4 P, }9 _: Y( S6 Q
0040138E |. 74 0C je short 0040139C
6 c$ m! S& T# r% v8 H00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
, m T5 n' M" x. d" N00401397 |. FFD0 |call eax
: U Y3 p+ e* [0 g* g! w' U00401399 |. 4B |dec ebx 1 [. {# @: l& U7 K
0040139A |.^ 75 F4 \\jnz short 00401390
" a) r$ l+ [0 K7 f; G( R1 R0040139C |> 83C4 F4 add esp, -0C . B* P* V( [' d
0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330
0 X& y# a1 B+ Q. u1 B* U( @004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit
3 |' J7 ~( [! B3 e6 I004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18]
7 h4 O# B% w3 ]1 i004013AC |. C9 leave ; z9 m2 g7 f6 K. r! R; L% a
004013AD \\. C3 retn 9 H$ u0 ?" c1 I2 n5 H. b) V$ A
004013AE 89F6 mov esi, esi 9 R+ {! H: ~4 v& p* `5 k
004013B0 /$ 55 push ebp 6 Q+ j" M9 \0 u: M
004013B1 |. 89E5 mov ebp, esp / ~8 K0 Z4 f; l& h5 }9 a" o
004013B3 |. 83EC 08 sub esp, 8 4 |" d: q. r9 w5 |# i5 Y
004013B6 |. 833D 14204000>cmp dword ptr [402014], 0
0 R- F4 G5 w$ S1 X004013BD |. 75 0F jnz short 004013CE
3 P$ n7 Q3 P8 K' N: b: x004013BF |. C705 14204000>mov dword ptr [402014], 1
0 J+ c# F5 R0 k: B; a4 S7 O* u004013C9 |. E8 92FFFFFF call 00401360
( I' i$ a# l9 k! `! h& Z004013CE |> C9 leave
; Z6 @: o1 X) k1 n004013CF \\. C3 retn
; Q0 r7 Z) }5 ~* V7 L004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode
* w3 I9 X3 k# `% f( ]+ `. @' y004013D6 90 nop
% ]8 b: z& }4 K( X: |( {- }2 G/ b: `) d004013D7 90 nop
2 Z0 A+ a; b' Z; Y004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob ; \" k* z' x, D/ | {/ w$ ]+ s; C
004013DE 90 nop 9 i0 e5 [: @% V2 c" G
004013DF 90 nop 3 F: t2 R, P4 I- i$ H8 U
004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type / @. f0 L. x5 Y$ o {+ G! b
004013E6 90 nop ; D3 T8 t2 Y: ~% O7 H/ S
004013E7 90 nop
6 [- D A' `7 o7 H3 m, O1 {6 e004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit 7 ^- x; X7 {6 w' _+ X
004013EE 90 nop ) k3 \+ x: x$ e4 j* [/ B* s
004013EF 90 nop # ]8 V0 s; E% {! c' ?8 q0 K5 f
004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ
. |* s# I7 F8 r004013F6 90 nop $ t, N: k/ c5 s3 P% i
004013F7 90 nop 1 Q: l7 s( V$ M9 m. @- N Y
004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset
; G$ q, `+ R8 s2 c004013FE 90 nop ( A# V& j4 u# {$ z' ^
004013FF 90 nop
( o/ @( Q2 Z6 D- [- p: n# X00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal : j, z' A$ f$ O e: F8 P
00401406 90 nop / U, P- T& s5 U
00401407 90 nop
8 u+ x* O( A2 y2 E. q; r00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno 1 j6 n3 k" \0 i" |' k
0040140E 90 nop
3 D% U0 b7 V: q C, x0040140F 90 nop 4 B5 G0 V7 M/ ` E+ r" Q* ?" o
00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode + L: |* O% u- _+ W/ Z# c: P
00401416 90 nop
; N( }2 s2 G. ?0 [/ l2 E) H+ s00401417 90 nop / S, w4 P4 }( ]
00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs
. ^% B) P. }2 }" e# N- L0040141E 90 nop
, r# L2 {. \4 o/ ]0040141F 90 nop
; _$ S0 |5 Y$ P4 N00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc 0 d2 M, m: n( H9 o% Q8 h
00401426 90 nop
# b: w& B+ q+ Y' J' J00401427 90 nop ! P: s# @5 S. Y5 ^. i8 }
00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc
0 V. `' S; p- e2 K. h2 J7 I; T0040142E 90 nop 3 d' ~4 f- b- a9 y1 M" d( K% W o
0040142F 90 nop
: X8 |$ N3 ~- v# o00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
% k5 c0 t4 Z9 L0 X9 ~6 b00401436 90 nop
5 `0 B) m* {2 P+ |00401437 90 nop
) e( b# v0 B2 W* p! q00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen 3 d% [- I1 w4 N# ]/ h
0040143E 90 nop 2 V5 ~/ G! k5 D* y
0040143F 90 nop & l9 V$ A+ [7 v2 T3 t4 ]6 K* ^; V
00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit
7 P+ [3 D6 x/ {" i* m/ h- t& R00401446 90 nop
' o' O3 x/ c1 y. P. G00401447 90 nop ^8 t: M; C5 h$ b# F8 v& w
00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter ) O% [6 C" i1 w+ P
0040144E 90 nop
* S' S! M6 \2 s% U. K9 C) F0040144F 90 nop / k, ?, Q3 y2 m0 K, @; M: N! z
00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess
) t. U5 k# t! s7 [& W5 t00401456 90 nop # R) Z }* N n5 L) Q# b6 d# }6 l
00401457 90 nop 1 v& k' B- F, e7 `% Q
00401458 . FFFFFFFF dd FFFFFFFF
. Z; z/ f# G( t9 k) J0 b( ]0040145C . 00000000 dd 00000000 0 w, e9 [3 o0 z
00401460 FF db FF " m( s; |( X2 H5 ]5 S6 ~7 X2 I6 ?
00401461 FF db FF ; M- ~9 S& D3 l$ ?* W: K
00401462 FF db FF
) x6 e% ^5 l2 K* o4 R00401463 FF db FF & N! W6 m }) Y% }! W' C* B( i
00401464 00 db 00 / |5 ?, W. O3 h% j: Y; h
00401465 00 db 00
# V* O3 B$ m5 p' j: C. x00401466 00 db 00
" d; P+ J' c5 b9 p/ I0 S& e00401467 00 db 00 |