由于这个程序很短,OD里面的汇编代码也很短。
8 R7 Y: c$ l2 i0 t8 ~: T请看红色的部分,这就是和0x80比较的部分。
2 O" }$ k, g! E! m把这2句NOP掉,然后保存修改后的文件为exe。 2 L/ E& k0 i0 W9 D" f* U4 J8 p
我们发现input.txt里面的所有内容都能被输出了。 5 P; R2 p2 p* c1 }7 o
附上修改后的exe. * k' n/ b( b x4 O0 B
深绿,你可以把这个操作过程试一下,练习一下. + t0 q( ?, j, K7 E# U
2 {6 ]( }* A- }) L* Y
00401000 /$ 55 push ebp / g. y. B2 z, r
00401001 |. 89E5 mov ebp, esp
' o. p5 o! Y; ^. J0 J2 J00401003 |. 83EC 18 sub esp, 18
. i4 C P$ p- ]. [00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0 & |. r% }3 k$ d1 x
0040100D |. 83C4 F4 add esp, -0C # K0 A5 g) t: y, o; y
00401010 |. 8D45 FC lea eax, dword ptr [ebp-4]
, K( P1 {2 c- t* B( P00401013 |. 50 push eax
E4 }& W2 v- ]% m( V00401014 |. FF35 08204000 push dword ptr [402008] & d" F' X3 H" B4 f, x& \) C2 }
0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8]
& q6 s2 w& C+ D' |. o0040101D |. 50 push eax
) @( p+ W; ` c3 M+ l0040101E |. 68 04204000 push 00402004 2 y+ I: p" X+ L$ N, U
00401023 |. 68 00204000 push 00402000
% s) u5 |9 f# g; A; X! g00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs>
$ m+ g0 l# ?6 ?4 ~3 R, S0040102D |. C9 leave
6 O7 y- ]5 O# e: K8 X3 F0 L- ~" h0040102E \\. C3 retn / O( q, L6 i. J: e6 {" u
0040102F 90 nop % e- V q. Z# v* x9 c) X1 r
00401030 /$ 55 push ebp ) r5 T U. l5 w/ R
00401031 |. 89E5 mov ebp, esp
% [0 p9 e, Q: U5 i6 ^9 t& {00401033 |. 83EC 08 sub esp, 8
, K7 F6 J m& s6 W6 o% i00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C]
! I4 U2 ~( O S7 K7 y0040103C |. 85D2 test edx, edx 9 C% ?8 L0 F o& {; R/ W, {+ G% U1 G: x
0040103E |. 74 7B je short 004010BB ; C' ?& i. s) E1 \% l/ P" V
00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>> - s; Q( e* }; o' X' |0 q" g- ?
00401045 |. 8910 mov dword ptr [eax], edx
9 A2 r9 J2 O0 [9 {2 a, X00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] 0 T) M4 l8 s+ R8 @# J, X
0040104C |. 85C0 test eax, eax & b9 M8 e) O) ^- D& r- I
0040104E |. 74 1E je short 0040106E
% v, w( U4 g7 W f6 m00401050 |. 83C4 F8 add esp, -8
/ M' @" S3 Z7 G' U( T' V6 c- L00401053 |. FF35 0C204000 push dword ptr [40200C]
" h' Y) [1 D' Z3 `8 s# f00401059 |. 83C4 F4 add esp, -0C ( I1 d! A+ ]' W7 i- I/ Z; u6 C
0040105C |. 50 push eax ; /pstream => offset msvcrt._iob
; v9 u( P% W5 t8 T1 x2 Y0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno
3 j; D* e1 t( S% _: _00401062 |. 83C4 10 add esp, 10
) h: f1 q3 Y5 M1 m; L: E00401065 |. 50 push eax ; |handle - \0 `7 d$ m7 g/ W
00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode
# u+ l/ k2 [' P9 Y0040106B |. 83C4 10 add esp, 10 7 I4 H1 c8 O5 F5 K7 n, q/ |
0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] + Y2 M ]; k1 b0 c; W0 R
00401073 |. 83C0 20 add eax, 20 . G4 @" L9 D$ U. ]% Y1 r/ V5 ?. j
00401076 |. 74 1E je short 00401096
, u( v) C7 @5 j; P00401078 |. 83C4 F8 add esp, -8
; }0 T! W) Y+ [' F" i0040107B |. FF35 0C204000 push dword ptr [40200C]
1 ^6 J" i `3 m6 S# w8 }* B00401081 |. 83C4 F4 add esp, -0C ; ^+ v, y9 {: e7 u. |$ t
00401084 |. 50 push eax ; /pstream & h6 {6 k8 P4 J$ u( I
00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno
8 D" F" g$ o+ A F2 u- {0040108A |. 83C4 10 add esp, 10 $ k& P2 V* l) C4 u
0040108D |. 50 push eax ; |handle
2 s4 {% y! [: R2 Y0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode
$ P+ N' s# g: \( W00401093 |. 83C4 10 add esp, 10 # A9 t) |5 S; K9 [0 U
00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] % g6 D7 }' c- ]4 ]: s( [. {
0040109B |. 83C0 40 add eax, 40 $ z6 u9 o2 f7 ^2 K5 ]* ] Y: G% S4 w6 H
0040109E |. 74 1B je short 004010BB 9 v+ Y# I0 V) K1 G# H5 V
004010A0 |. 83C4 F8 add esp, -8 & ^: v- b' Y( {. D7 M; I
004010A3 |. FF35 0C204000 push dword ptr [40200C]
1 {6 ?. ^8 b( w% y r, O8 q004010A9 |. 83C4 F4 add esp, -0C
4 O# a: b7 c. ?2 c' |$ ^, X7 l/ w: G004010AC |. 50 push eax ; /pstream
% s) V3 A+ I3 Y) I1 u( Q$ @5 w004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno - k# c0 j) h: I3 a3 L2 o- m$ f
004010B2 |. 83C4 10 add esp, 10
( _ N; p" }- k; l0 s9 x$ F% j T004010B5 |. 50 push eax ; |handle
1 [) j, I) P) a W7 g- S2 O004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode
' V2 Z8 d. K6 {6 j, k004010BB |> C9 leave
6 V1 F- C8 x* Y0 A" w) C- W4 k004010BC \\. C3 retn
+ m$ \# k1 h) V+ T! ~004010BD 8D76 00 lea esi, dword ptr [esi]
6 u! o3 B- L; p4 L$ K' T% L004010C0 /. 55 push ebp
6 R8 F( N" J a- `5 M004010C1 |. 89E5 mov ebp, esp 4 t% F% s1 k e3 }$ F0 @2 v
004010C3 |. 83EC 10 sub esp, 10 " b- e1 s* {+ _% H' D* H
004010C6 |. 56 push esi 8 j. u' t: l! W
004010C7 |. 53 push ebx
, V7 i6 }9 D! b: V; U4 Y7 Y$ O8 {004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8]
8 \3 |) P- _0 Z$ j004010CB |. 31DB xor ebx, ebx
/ C* o& e6 ^+ K, _4 E004010CD |. 31F6 xor esi, esi
' U* t: u1 ^6 I; q J6 G004010CF |. 8B00 mov eax, dword ptr [eax]
9 ]0 ~$ n0 m# h9 a. q% V+ K004010D1 |. 8B00 mov eax, dword ptr [eax]
6 ]* T3 A9 @# S# G' R5 |004010D3 |. 3D 910000C0 cmp eax, C0000091 & k2 X C, ~0 R7 G! D
004010D8 |. 77 16 ja short 004010F0 " j2 _3 N/ R1 c+ t" d, y' u$ A
004010DA |. 3D 8D0000C0 cmp eax, C000008D
/ d0 D! @- c6 [004010DF |. 73 4F jnb short 00401130
7 P& n- Q* T& k A& i004010E1 |. 3D 050000C0 cmp eax, C0000005 5 u( ^3 P' P h: h
004010E6 |. 74 18 je short 00401100 * \- ~1 P) F4 @. ]* q6 {
004010E8 |. E9 86000000 jmp 00401173
( l, y0 _* n$ L& }+ b004010ED | 8D76 00 lea esi, dword ptr [esi]
! V# r( S1 H) d2 R0 Q( V004010F0 |> 3D 930000C0 cmp eax, C0000093
, v3 L2 p8 p3 d& S3 C! F" y004010F5 |. 74 39 je short 00401130
" f4 [7 B5 ?! G) R6 ~. o004010F7 |. 3D 940000C0 cmp eax, C0000094
* U U/ o4 @. \3 z& J( K( h/ ]% Y004010FC |. 74 37 je short 00401135
4 s. M( i J& A004010FE |. EB 73 jmp short 00401173 3 n& x5 X1 x: W) s
00401100 |> 83C4 F8 add esp, -8 3 Z' q9 `0 h; l- ^5 Q/ \4 b. @
00401103 |. 6A 00 push 0 ; /func = NULL ) B" `. V# P. J3 b5 V0 @5 _. k
00401105 |. 6A 0B push 0B ; |sig = SIGSEGV 7 X& h/ U8 u% |! }
00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal
9 F5 }4 {* m, g$ I( a3 _0040110C |. 83C4 10 add esp, 10 # ?4 E. Z! r5 }
0040110F |. 83F8 01 cmp eax, 1 / @% n2 i% Q4 i1 A$ r" y
00401112 |. 75 0E jnz short 00401122
. K/ K( t% z8 ^7 }' ]* W1 ]00401114 |. 83C4 F8 add esp, -8
& ~, D3 ]' `5 F+ O( w00401117 |. 6A 01 push 1 ; /func = 00000001 , h( w% e6 t9 U8 s, N3 C
00401119 |. 6A 0B push 0B ; |sig = SIGSEGV
$ N r5 p7 C! _% f& }3 U! u0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal / @8 |, ?- U; x3 e
00401120 |. EB 4C jmp short 0040116E 5 I2 g% p9 \ Q3 x
00401122 |> 85C0 test eax, eax 1 n4 p+ A0 m% m) w' b
00401124 |. 74 4D je short 00401173 # O) w1 {) u0 ~8 H
00401126 |. 83C4 F4 add esp, -0C
8 A1 e, l7 u; J# ^00401129 |. 6A 0B push 0B
" a+ a9 M \8 d! y: G. p0040112B |. EB 3F jmp short 0040116C
( H3 B. W8 D, H+ l5 T% |% X) e0040112D | 8D76 00 lea esi, dword ptr [esi] % |0 O( a$ `4 g3 T1 y+ g. i: n
00401130 |> BE 01000000 mov esi, 1
9 y+ O9 G# _/ r; w00401135 |> 83C4 F8 add esp, -8 6 X# l5 ^7 d& b2 j, T- p) q; [
00401138 |. 6A 00 push 0 ; /func = NULL ; T- |) m1 d/ ]1 j, w2 ~
0040113A |. 6A 08 push 8 ; |sig = SIGFPE
9 N; H* A+ T6 K, f0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal
6 x' ^6 w+ e8 N- ^9 g00401141 |. 83C4 10 add esp, 10 # R& F! j4 \# K7 M1 n
00401144 |. 83F8 01 cmp eax, 1 4 r( r9 {( O. R' U& o1 I
00401147 |. 75 1A jnz short 00401163 ! J' l! y Y! R( G
00401149 |. 83C4 F8 add esp, -8
, }; A7 H" ^6 w1 ]. f. j) O( `0040114C |. 6A 01 push 1 ; /func = 00000001 ; j8 X9 p5 G9 V" y Q
0040114E |. 6A 08 push 8 ; |sig = SIGFPE
( z* O3 J- C @( n5 Q, O7 [00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal
6 V, U! c, B o+ {. H! I00401155 |. 83C4 10 add esp, 10 ; w' `2 ]4 U$ M/ O6 w
00401158 |. 85F6 test esi, esi 0 _9 S9 B7 w+ V
0040115A |. 74 12 je short 0040116E
3 P0 y; M' V+ I% n0 k7 L8 Y0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset 2 q9 k1 w& s4 x- L1 c( v$ Y- o3 r
00401161 |. EB 0B jmp short 0040116E
* l F) c. I' G1 z9 C& l00401163 |> 85C0 test eax, eax
/ B( q4 K& g3 u6 f6 I00401165 |. 74 0C je short 00401173
4 L1 [) w0 _& Z5 s( K00401167 |. 83C4 F4 add esp, -0C % H* B5 o" i( Q+ ]5 ?
0040116A |. 6A 08 push 8 # ?- e( ]3 B8 L* J& y
0040116C |> FFD0 call eax
$ N7 j# Y: Y' }! p$ w k, r0040116E |> BB FFFFFFFF mov ebx, -1
' k5 x. E: U2 A4 Q00401173 |> 89D8 mov eax, ebx
- |% M3 S) s2 V6 @# o0 g00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18]
+ |% J2 u' r1 B8 I. H00401178 |. 5B pop ebx
9 P$ I* J& V! E" J9 D00401179 |. 5E pop esi
0 k3 z0 Y& n. u5 z: F( |1 a0040117A |. C9 leave
( `/ ?) \" _, m6 h0040117B \\. C2 0400 retn 4
7 V) ]/ x! o4 f) w! l0 p0040117E 89F6 mov esi, esi
; j( z7 H0 f+ J5 N9 [- y% X00401180 /$ 55 push ebp
6 J+ C2 C, l' S' T" L00401181 |. 89E5 mov ebp, esp X; h+ E( D* F9 a# C
00401183 |. 83EC 14 sub esp, 14
5 t- C8 x) p0 |" _00401186 |. 53 push ebx
- e8 l0 H. ^' T00401187 |. 83C4 F4 add esp, -0C
5 h; m D- a$ @& [& K+ U6 K0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0 + I- P, |! ?9 `; H9 R8 w6 j* z6 W
0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter
3 v8 z: }0 K/ [00401194 |. 83C4 FC add esp, -4
- x0 ~" I0 w! Z$ ~+ x& P f00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset
& [+ f: ? c) j/ A0040119C |. E8 5FFEFFFF call 00401000
/ A* s6 C1 L# {7 c5 x4 S004011A1 |. E8 8AFEFFFF call 00401030 5 {# A8 p q9 S
004011A6 |. 83C4 FC add esp, -4 % \. H) z% ~/ K, J: ]! C
004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ> . l9 N' \( Z* t& S+ J. q& i
004011AE |. FF30 push dword ptr [eax] 4 F0 S4 G2 ^6 E7 ^& \
004011B0 |. FF35 04204000 push dword ptr [402004] % i; \+ M9 y5 T1 q" _8 p* M K
004011B6 |. FF35 00204000 push dword ptr [402000] 9 ~0 C) W$ v/ T& U$ |5 g' {
004011BC |. E8 AB000000 call 0040126C
5 k+ N9 x; S- l% x5 n- m004011C1 |. 89C3 mov ebx, eax
9 k4 f4 A+ v8 r. P& p004011C3 |. 83C4 20 add esp, 20
/ k: t2 `1 c8 O' X004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit
% ~9 i$ @. J- |004011CB |. 83C4 F4 add esp, -0C
, m# s! u, n+ P9 Z4 ?004011CE |. 53 push ebx ; /ExitCode ) g# B- ]& P3 d/ |- D
004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess : \3 \4 z# }% M/ h' |! e0 U, J
004011D4 >/$ 55 push ebp 5 b7 | G( A1 Z* K$ Z
004011D5 |. 89E5 mov ebp, esp ; E: @8 f6 O- V/ K1 K& [
004011D7 |. 83EC 08 sub esp, 8
9 h1 n. `% g. O, o. ]* C$ R: i004011DA |. 83C4 F4 add esp, -0C 9 }1 a' E; ? n" |2 J
004011DD |. 6A 01 push 1 : E1 p4 T7 X- m7 M: C* `
004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a> 0 j# G+ H9 Z' D. G! _
004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type> 9 W" X: R& k, X5 K4 h3 o& d) C
004011E6 |. E8 95FFFFFF call 00401180 ( _9 [% X% d. a7 b M
004011EB |. 31C0 xor eax, eax
- ~7 |8 Q1 v# C$ r004011ED |. C9 leave " b6 Y; |" h4 p# F* \
004011EE \\. C3 retn 9 x8 S) v1 X( f& E0 A: B! ~1 a
004011EF 90 nop
) x8 D# }) f5 x/ D( j004011F0 /. 55 push ebp ) d8 S9 l8 n8 s( L8 Q
004011F1 |. 89E5 mov ebp, esp ( L, F) l# g1 ]
004011F3 |. 83EC 08 sub esp, 8 / Q4 g6 }0 f- c( T' Z" }% s; v: Y: m2 k
004011F6 |. 83C4 F4 add esp, -0C
& d! c6 Q3 F* k( t4 c9 I7 |+ f004011F9 |. 6A 02 push 2 " |" Z b! f. r2 `! v6 E
004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a> 8 s$ {. t0 L2 f O9 Q) ]
00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type> # Z5 f3 L# J: N7 O0 s* o
00401202 |. E8 79FFFFFF call 00401180
5 l9 S# M$ m) b- p00401207 |. C9 leave + u" M$ z* E# r0 Y% d. d/ d
00401208 \\. C3 retn 1 C0 c- q: U* Z" q
00401209 00 db 00 9 O" J# t' A$ B5 c$ G/ L3 |, l% I
0040120A 00 db 00 6 J ?3 p4 ~2 O8 V) M; a
0040120B 00 db 00 6 Q1 G6 a& Q4 d1 J/ n
0040120C 00 db 00
8 v4 \( l) G1 ?. F* p" W- ^" f0040120D 00 db 00 & H! P! {. u. ~2 u/ c
0040120E 00 db 00
& ?+ C0 ~0 ?3 j; B4 i7 |. x: N0040120F 00 db 00
: ]- k. Z& b8 ]0 w00401210 72 db 72 ; CHAR 'r' ( @0 Q1 p& S f A
00401211 00 db 00 ) c* Q h' k; N, J3 i+ ~
00401212 . 69 6E 70 75 7>ascii "input.txt",0 9 `& Q2 T" m2 e. Y0 m: [6 d
0040121C . 43 61 6E 27 7>ascii "Can't Find input"
5 e& o& @' C1 v( u0 Z9 k* {0040122C . 2E 74 78 74 2>ascii ".txt!",0 " t0 z. ^3 C7 C( `
00401232 77 db 77 ; CHAR 'w'
* e! W3 f1 x* C& c0 F6 y2 e00401233 00 db 00 4 {) W x; v8 l8 {. i3 p
00401234 . 6F 75 74 70 7>ascii "output.txt",0
& ^* {3 s: M7 F2 H$ d+ \0040123F . 43 61 6E 27 7>ascii "Can't Create out" ' b$ ^8 L& _. T9 N/ y4 {) l
0040124F . 70 75 74 2E 7>ascii "put.txt!",0 6 ?! ] b; y9 u x( }0 ]: E
00401258 . 6F 6E 65 20 6>ascii "one char outpute"
/ p( x( `4 c1 j( y% E00401268 . 64 0A 00 ascii "d
( H z& d. u k9 p) ?9 X9 J",0 $ K9 K7 p% r$ v; L! W5 }7 e8 x8 M
0040126B 90 nop
/ |2 a; g3 f" `0040126C /$ 55 push ebp
& t, G! k/ n6 ^* t1 z g0040126D |. 89E5 mov ebp, esp |5 V" P& P6 c1 N- @
0040126F |. 83EC 18 sub esp, 18 8 V$ U3 S \, Z# V4 Z% J3 H
00401272 |. E8 39010000 call 004013B0
7 D* m; ~8 a! f00401277 |. 83C4 F8 add esp, -8 6 \* e+ j8 T' I5 O
0040127A |. 68 10124000 push 00401210 ; /mode = "r"
3 q( g& p* I* ^ y0040127F |. 68 12124000 push 00401212 ; |path = "input.txt"
+ L' `5 i. h- R0 [; c" C, | `9 b00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen 7 I3 M4 _) T. i+ m0 y) e% d
00401289 |. 83C4 10 add esp, 10
: _5 V" U }' f4 n* Q: n0040128C |. 89C0 mov eax, eax
+ a8 s8 h9 M9 [4 y X- g% |; P+ H0040128E |. 8945 FC mov dword ptr [ebp-4], eax
7 l# ~2 k' {$ f+ E7 j00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0
1 g+ f# F* ?, J! h- a. J/ W1 [00401295 |. 75 10 jnz short 004012A7
. K7 r1 i/ W7 ^ p00401297 |. 83C4 F4 add esp, -0C
% j- {6 ?- y+ _, U0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!" 3 ?: _ m& E4 l& L7 `, g6 n/ B/ |
0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf . p+ f/ r7 [5 g5 P0 `9 z
004012A4 |. 83C4 10 add esp, 10 5 D9 l" i. u; A- |& q
004012A7 |> 83C4 F8 add esp, -8
! K& `! F+ t5 L; V004012AA |. 68 32124000 push 00401232 ; /mode = "w"
0 G3 B7 m8 q7 S, q$ h* C004012AF |. 68 34124000 push 00401234 ; |path = "output.txt"
$ u) t- {! L# g9 s004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen & [& X6 `* v z& P3 m, Q* F# M8 ^
004012B9 |. 83C4 10 add esp, 10 & L# V9 I9 m! ^3 _' a% V2 z
004012BC |. 89C0 mov eax, eax
, S( I# F0 q6 p0 y004012BE |. 8945 F8 mov dword ptr [ebp-8], eax
# a) A+ V. w% ?! u/ i. `004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0
# J3 ?0 p: K, b6 A004012C5 |. 75 10 jnz short 004012D7
j: }( @* L" F' ] ^004012C7 |. 83C4 F4 add esp, -0C
1 e: z( b! J0 |6 M% h004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!" 1 U6 i+ W; @, t
004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf 4 w2 U# z4 d1 O( M1 S
004012D4 |. 83C4 10 add esp, 10 $ H! P, B9 j0 p5 `- `
004012D7 |> 83C4 F4 /add esp, -0C * _9 P( k0 \) f, |, _
004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4]
' r4 s9 { _+ f- F004012DD |. 50 |push eax ; /stream ( `& b) N: r% W6 [1 t& Q0 D4 S- Y
004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc 4 N' u' G: L( x+ ^2 l: h( w
004012E3 |. 83C4 10 |add esp, 10 / {+ R6 C/ p6 `5 u8 _, Q
004012E6 |. 89C0 |mov eax, eax
7 k7 ^3 I0 {7 L7 p d4 |004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax : h) L* y s" ~2 s* k# ]. W8 Y
004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80
8 P8 M+ s. N) H& ~7 w004012F2 |. 7F 23 |jg short 00401317
. B' {3 I$ @& @% }$ d9 N004012F4 |. 83C4 F8 |add esp, -8
1 B0 Z h6 E/ q. h1 g% H$ W, o0 G004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8]
. [; z+ N( w+ V, n8 V; B$ ~004012FA |. 50 |push eax ; /stream
; D( P5 \8 a: ?5 J( h004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; | 2 K3 W. g0 N c' o( ?) F* d" Q
004012FE |. 50 |push eax ; |c $ ~; U n5 g* }6 N3 ^
004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc 1 I* `, }# s. |2 D9 W3 X
00401304 |. 83C4 10 |add esp, 10
2 L0 o/ ~) E, _0 y! u. _. F4 ~- W, p00401307 |. 83C4 F4 |add esp, -0C ) n' ?: v; m* ?; m3 B8 o
0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,"" 7 O( T; L; S, }8 y. H- u0 Q
0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf
; h0 {/ }6 k' ?00401314 |. 83C4 10 |add esp, 10 % z( E" c* W. y+ s. W' j
00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1
: x. h! i9 T+ A8 \% X( f* v5 p0040131B |. 75 03 |jnz short 00401320 , S; s0 L1 u5 Y" h Y. V
0040131D |. EB 03 |jmp short 00401322
; v, C! _# ~* Z. Z) p1 h0040131F | 90 |nop ' s' s" m) ]+ Q; f% o/ L+ q
00401320 |>^ EB B5 \\jmp short 004012D7
) Z+ M% L0 \/ X2 E00401322 |> C9 leave 9 T ]8 |: a& V$ H
00401323 \\. C3 retn 2 P; l i3 \' K. }4 S- F' F5 R
00401324 00 db 00 - Y, c: ]8 G# a* j* H; r; r D
00401325 00 db 00
, T7 m, j/ n- t; }00401326 00 db 00
C. A% w2 K k00401327 00 db 00
2 M v' e, V9 }" _$ W) B00401328 00 db 00
6 U+ Q8 h) ]. @ s$ A7 |00401329 00 db 00
7 C. J% o8 Y: V, I `5 d0040132A 00 db 00 , \0 u S5 H3 v& G; @9 ?+ [
0040132B 00 db 00 ) i2 x1 d: E( N7 Q j
0040132C 00 db 00 / }* L- O u. a0 w
0040132D 00 db 00
# q% s, f$ _3 { ~; v' V1 j: T0040132E 00 db 00
5 U& W5 N2 ~. B0040132F 00 db 00 . x# _3 H2 O: W5 a g
00401330 /. 55 push ebp + {. K2 A ]/ t O9 W% ~' J
00401331 |. 89E5 mov ebp, esp * M; r# m9 x* O
00401333 |. 83EC 08 sub esp, 8
/ F6 d% L" u j7 b* h00401336 |. A1 10204000 mov eax, dword ptr [402010] # T3 p% Z8 F/ @: U5 H
0040133B |. 8338 00 cmp dword ptr [eax], 0
4 q- @ D8 {8 d" X& N0040133E |. 74 1D je short 0040135D $ W' n% L9 k. m
00401340 |> A1 10204000 /mov eax, dword ptr [402010] ' {/ x& q3 U9 q1 J
00401345 |. 8B00 |mov eax, dword ptr [eax]
9 b4 d! o( k6 D/ l9 h6 h, [00401347 |. FFD0 |call eax 1 _( u& s$ w% K! L. u$ Y5 \! h
00401349 |. A1 10204000 |mov eax, dword ptr [402010] * g. g: `' Y% o: h
0040134E |. 8D50 04 |lea edx, dword ptr [eax+4]
* W' V( g/ ~( R00401351 |. 8915 10204000 |mov dword ptr [402010], edx " c) B0 g0 } O' H$ Q
00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0
" i$ m# Y) L6 i" w5 C0040135B |.^ 75 E3 \\jnz short 00401340 : X8 L, ^" B! U$ f
0040135D |> C9 leave 2 | d) R P; S. `7 _% {
0040135E \\. C3 retn + E; `1 {- c- g' M* V* E
0040135F 90 nop
( a0 l1 ^3 S% z3 Y+ y, c00401360 /$ 55 push ebp / P8 R& o/ x4 W) h$ w; }
00401361 |. 89E5 mov ebp, esp 2 O3 h' S" z* X/ p D5 c
00401363 |. 83EC 14 sub esp, 14 ' n+ N7 S8 R, g1 s' F: P
00401366 |. 53 push ebx
0 P" d8 I/ @7 o* R& R' i5 M00401367 |. A1 58144000 mov eax, dword ptr [401458]
4 v! P- C2 O g# T' j. J0040136C |. 83F8 FF cmp eax, -1
" D% O2 i V7 o4 l. J+ Q' ~7 N0040136F |. 75 19 jnz short 0040138A 5 \5 Y6 Q# W5 g
00401371 |. 31C0 xor eax, eax
# V4 h+ s; a! X1 |8 n00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0 * x$ P: `3 y+ N5 C: l9 k
0040137A |. 74 0E je short 0040138A
9 h( _3 J" ]& v* R% h1 b, B0040137C |. BA 5C144000 mov edx, 0040145C 8 ]9 O9 e% p Y9 d3 G9 a
00401381 |> 83C2 04 /add edx, 4 0 a& C0 v6 d& E# \5 r5 K1 r
00401384 |. 40 |inc eax
9 i% l. H" O3 ~8 b+ T/ d00401385 |. 833A 00 |cmp dword ptr [edx], 0 ( D, ?& L; G+ w+ l. a4 H
00401388 |.^ 75 F7 \\jnz short 00401381 , v4 R/ {1 Z/ ~% H
0040138A |> 89C3 mov ebx, eax 5 \! l$ d, G) l$ o( I0 W) J+ c
0040138C |. 85DB test ebx, ebx
9 L! e, R" Y* c7 |0040138E |. 74 0C je short 0040139C
1 H( a2 G9 _8 p8 q6 g) i0 Z00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
( z+ R( ]* ~/ V$ g* `; i0 W00401397 |. FFD0 |call eax " ?+ X1 ^& ]6 h' w" G* k2 x9 N& F
00401399 |. 4B |dec ebx 9 @# p( p* H. w& o8 E: E& k
0040139A |.^ 75 F4 \\jnz short 00401390
9 E7 k) J/ Z; Z2 K2 z, m/ ^0040139C |> 83C4 F4 add esp, -0C
6 d( {4 Y7 W. f9 l4 P/ K5 j0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330
* R2 b: n Z1 D( T( i004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit
- C8 K# t, S2 W& ~004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18] 7 ^+ R# v# W: P( V) Y
004013AC |. C9 leave
2 |* T8 J/ T: h ?+ q004013AD \\. C3 retn ) y5 C& B/ {# w1 n2 W
004013AE 89F6 mov esi, esi
* b- C4 Z' w d0 k. E$ j004013B0 /$ 55 push ebp
0 w& M: q% R6 L) N# r; L# B8 Q0 F004013B1 |. 89E5 mov ebp, esp
& W. c! U1 Y# j, n f004013B3 |. 83EC 08 sub esp, 8
: C2 R3 y G6 a J% E r004013B6 |. 833D 14204000>cmp dword ptr [402014], 0
& k: e9 ]; B% s! h004013BD |. 75 0F jnz short 004013CE
3 S( p& Q f k% w+ V4 o004013BF |. C705 14204000>mov dword ptr [402014], 1 ( k0 ~1 x# w+ \; c! c
004013C9 |. E8 92FFFFFF call 00401360 ! D% i, {7 ], n1 E) h, [* ?* h; g
004013CE |> C9 leave + M! j T- { ~7 m x3 k) P; H
004013CF \\. C3 retn
# o: w" A5 p' B; o004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode
5 r4 T/ k+ \1 t9 @5 z$ e004013D6 90 nop $ n3 k/ u2 v; w- G; E. o
004013D7 90 nop
' \& F8 M4 ]4 R/ F$ T" D( S% w4 c004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob
& Y" X9 ?0 D" T" d. a9 `004013DE 90 nop
9 f& a4 x; v" m; m004013DF 90 nop ; w: O# G* N! @3 |! F' s0 x4 q
004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type 6 p# T: Q" ^! f- M& P. V
004013E6 90 nop
% Y( W. C4 W! O% A004013E7 90 nop ! D$ ^0 D/ M" s: r: a
004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit % g8 s5 t% L0 C* m2 L6 R0 p7 P$ ?
004013EE 90 nop
0 n, b* s. s/ o7 _004013EF 90 nop . t" C4 ~0 F: p8 v
004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ
: B4 u R4 d0 T& o# ?! R004013F6 90 nop , A& B9 P! P8 {; b
004013F7 90 nop
. p$ b3 p; X, N' S0 ]% |004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset
% ~0 q0 b8 U' d/ X004013FE 90 nop " \# Q( W! ~8 c$ I% h, r
004013FF 90 nop 9 I# G1 A) n0 L
00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal : m3 m' h; t9 a% y' H' q
00401406 90 nop
! z2 a" f2 @; n. u00401407 90 nop
4 P+ T0 `) r0 C6 O00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno
! K" C% D, k- k8 ^0040140E 90 nop
/ F9 L! f$ X. A4 V$ m) m+ b0040140F 90 nop
4 D, I% H0 s* E) @/ R9 l00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode
- g U% j' }% Y00401416 90 nop
7 L" i5 ^- C6 z2 L$ O4 |8 h00401417 90 nop
3 e* o( ^1 ~: f/ u9 G3 F8 _00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs
4 r) M" @: n6 H0 n& p0040141E 90 nop ( l g7 @5 r' y) r- {" f
0040141F 90 nop
7 G' X8 w2 T) @ I7 b00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc # M; k! k2 T2 L6 p6 D; J, h0 g
00401426 90 nop & T* Y$ Y h. G/ W5 ?$ z& y0 o
00401427 90 nop : d5 |" H* k9 r$ o3 n6 Y: a$ i
00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc
) X9 p* e0 `4 r0 f1 u0040142E 90 nop % _5 J1 n. g4 ]+ t: q
0040142F 90 nop 4 v* {/ h3 G) |* a8 o7 i
00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
- @ k0 B7 @" T, b- o0 ^+ O00401436 90 nop ! Q' g+ l! W- R5 X, @0 C; f1 b \, U
00401437 90 nop
1 }; g& C# i3 k( Y00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen
" x; r" l+ V5 e7 I, W2 Q h0040143E 90 nop
& d- o9 r: V: J2 x0 }0040143F 90 nop
2 z! ~2 ?- q2 i$ [! D! r `00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit
% B) u7 o" S T% v1 |$ U3 A00401446 90 nop
4 k, v9 N$ d9 K0 [# g00401447 90 nop
4 M5 f( c9 q2 c' e00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter " J, D: t4 C4 m* w! R) l
0040144E 90 nop , H3 `. z, `6 f# l X$ U d* }3 `
0040144F 90 nop
/ l4 n3 h I& j8 i( Z# t( X00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess 1 u" A" i; l9 B- t3 L" y% H
00401456 90 nop 6 x8 g' L( b/ i" A' p
00401457 90 nop `+ T" ]9 T7 S1 h/ P6 v0 J
00401458 . FFFFFFFF dd FFFFFFFF & G0 J7 o1 G ?* S3 c1 L! D, B: m
0040145C . 00000000 dd 00000000
7 h9 O, s9 p& R5 m) j00401460 FF db FF 9 v3 J0 t8 ^ E$ S! \+ D
00401461 FF db FF
7 E2 p) W8 A& u' W7 G5 i00401462 FF db FF + r3 L6 l: I4 J1 r& O
00401463 FF db FF ~! ^" ? h! S! N5 K
00401464 00 db 00 ( h9 M. ~8 }) l2 H
00401465 00 db 00
* f' u7 o) ^7 L* i5 \00401466 00 db 00 0 q, h2 u- I1 E7 u& R7 W( r
00401467 00 db 00 |