由于这个程序很短,OD里面的汇编代码也很短。 ) X$ M! v" n' U d. t* e
请看红色的部分,这就是和0x80比较的部分。
]. J+ ]3 k" Y1 q, x' d; U/ z( S把这2句NOP掉,然后保存修改后的文件为exe。
# J X! e: u1 [ L. I我们发现input.txt里面的所有内容都能被输出了。 ; j' G/ ]2 q8 b6 h; {- e
附上修改后的exe.
- A" O2 s1 N( [) [; Q深绿,你可以把这个操作过程试一下,练习一下. # L d+ C- E0 u. V
1 O7 k0 @: u7 F. ^0 `% }00401000 /$ 55 push ebp * \2 g ~1 F: F) U7 N
00401001 |. 89E5 mov ebp, esp
~, W' j5 {7 p: @00401003 |. 83EC 18 sub esp, 18
* E8 F/ f1 T6 F00401006 |. C745 FC 00000>mov dword ptr [ebp-4], 0
% b$ R% g) I' c3 v2 a0040100D |. 83C4 F4 add esp, -0C 0 W7 P) o# Y* G% A& y5 C; F" E
00401010 |. 8D45 FC lea eax, dword ptr [ebp-4] ' I: ~5 V2 s; Q* c) d" C9 w/ a4 n
00401013 |. 50 push eax ! w; p( ]* W6 L* @0 \/ O9 k3 l
00401014 |. FF35 08204000 push dword ptr [402008] ' _) O- M! C! Y: c
0040101A |. 8D45 F8 lea eax, dword ptr [ebp-8] , A8 {- E9 p. \0 q
0040101D |. 50 push eax 5 o" c- z0 b/ d" l7 Q a: m
0040101E |. 68 04204000 push 00402004
7 l% P6 ~; Z3 J9 H- G5 _00401023 |. 68 00204000 push 00402000 * k1 k$ ^+ j0 o& I
00401028 |. E8 EB030000 call <jmp.&msvcrt.__getmainargs> 8 e- A6 k+ ]' t0 u
0040102D |. C9 leave 6 n2 z. R- d' d3 `; o- k
0040102E \\. C3 retn 4 e, t+ K7 G" ]' }. k+ q
0040102F 90 nop 5 @9 j; [% B: U6 D# ~9 w
00401030 /$ 55 push ebp
: Q3 E6 L. ]4 }" w00401031 |. 89E5 mov ebp, esp
8 m1 g' Y! R: |* ~& ?+ D5 ^% F00401033 |. 83EC 08 sub esp, 8
& K! C3 l0 `4 }5 D1 }) [00401036 |. 8B15 0C204000 mov edx, dword ptr [40200C]
! ?# R' {2 t4 M1 g0040103C |. 85D2 test edx, edx
' q4 A( ~2 _- B9 X. k: o0040103E |. 74 7B je short 004010BB
4 S! k" o$ h: J1 i00401040 |. A1 AC304000 mov eax, dword ptr [<&msvcrt._fmode>> 4 z3 @# \9 v: S" K2 F
00401045 |. 8910 mov dword ptr [eax], edx
# l- t f( P8 D$ I ~2 A00401047 |. A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
; x" E# H2 L- D/ m' l, `5 } b0040104C |. 85C0 test eax, eax 0 @; z% ~! k' c; P0 b
0040104E |. 74 1E je short 0040106E
* E% x0 R% }; n' c9 a* w$ P00401050 |. 83C4 F8 add esp, -8 $ ~* {& Q% R: Z: H7 x7 d
00401053 |. FF35 0C204000 push dword ptr [40200C]
) m6 ~4 e* V3 D5 J$ [1 Y00401059 |. 83C4 F4 add esp, -0C
7 w f' G* N, _9 R/ O B# t* u0040105C |. 50 push eax ; /pstream => offset msvcrt._iob ' ^# q2 i3 {$ J3 P8 I* u& q
0040105D |. E8 A6030000 call <jmp.&msvcrt._fileno> ; \\_fileno
" ?' d {* ?/ B/ d2 a5 h00401062 |. 83C4 10 add esp, 10
: ~8 q* a6 o' [9 F* Q$ J$ W00401065 |. 50 push eax ; |handle
- @4 I, Z" f6 O1 N1 G; q1 ]4 T/ C00401066 |. E8 A5030000 call <jmp.&msvcrt._setmode> ; \\_setmode 8 u2 M0 N2 E- e: m2 D/ J& `* I6 z
0040106B |. 83C4 10 add esp, 10
! ^/ u- j1 |2 u, Q6 {/ e0040106E |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>]
& Y; g' _& ~9 d/ W A00401073 |. 83C0 20 add eax, 20 5 d4 [9 f; y0 F# i! t$ f K; ~
00401076 |. 74 1E je short 00401096 8 m8 T8 m4 y( _4 _( v1 ^6 i
00401078 |. 83C4 F8 add esp, -8
) j- o# s: }2 s' h4 a0040107B |. FF35 0C204000 push dword ptr [40200C]
3 H) y7 m; W1 j3 Q9 L00401081 |. 83C4 F4 add esp, -0C 8 O/ q+ `7 \- p# Z, G: P; s+ ~8 j- @
00401084 |. 50 push eax ; /pstream 4 o L, j6 c6 T8 ?* w2 r$ s
00401085 |. E8 7E030000 call <jmp.&msvcrt._fileno> ; \\_fileno
0 D) l# ^ v, p3 B. `' C! M! ^4 j" @4 o0040108A |. 83C4 10 add esp, 10
4 i7 Y7 Z; `% o7 P, n0040108D |. 50 push eax ; |handle
, L- e3 p; W) i5 J* s5 n' p0040108E |. E8 7D030000 call <jmp.&msvcrt._setmode> ; \\_setmode 9 B8 d X: ]! E2 \" r$ n! F
00401093 |. 83C4 10 add esp, 10 : S5 N+ X' j6 D0 H5 t; T9 h
00401096 |> A1 B4304000 mov eax, dword ptr [<&msvcrt._iob>] 0 S& @; h/ ^1 x( G) \! v, A
0040109B |. 83C0 40 add eax, 40
2 F+ ^: {' j6 n/ z$ F" Y0040109E |. 74 1B je short 004010BB w- a. w9 {3 E9 z
004010A0 |. 83C4 F8 add esp, -8 : l7 @. S! O, `- I
004010A3 |. FF35 0C204000 push dword ptr [40200C] - t9 V$ ^2 g z0 p
004010A9 |. 83C4 F4 add esp, -0C
+ \, L$ n1 @7 X+ n- v3 M8 }) l004010AC |. 50 push eax ; /pstream
# X2 U; H! F* }; |( O2 }* H! B4 g004010AD |. E8 56030000 call <jmp.&msvcrt._fileno> ; \\_fileno " Y$ h: J1 A1 i; e& E" }3 q
004010B2 |. 83C4 10 add esp, 10
- N2 ?/ U) R2 \ |& d% W% ]004010B5 |. 50 push eax ; |handle $ D/ U6 _1 i/ i$ i
004010B6 |. E8 55030000 call <jmp.&msvcrt._setmode> ; \\_setmode
4 Y) d+ I, C9 H7 Y% @004010BB |> C9 leave , ~7 i, Y$ Y' A8 X9 c; g4 u7 C
004010BC \\. C3 retn : e" y* N& C5 X3 Y# r( [9 z
004010BD 8D76 00 lea esi, dword ptr [esi]
4 \& e! F" g0 Y9 i( w+ X- v004010C0 /. 55 push ebp
]1 Y( \5 X" M5 e9 x004010C1 |. 89E5 mov ebp, esp
8 d9 D3 \4 h" B004010C3 |. 83EC 10 sub esp, 10
a& j9 F* o% e004010C6 |. 56 push esi O' f/ i/ r! ~; ?1 n
004010C7 |. 53 push ebx u) r3 M* v* j# }" w
004010C8 |. 8B45 08 mov eax, dword ptr [ebp+8] 7 S& J. X0 W5 R8 R
004010CB |. 31DB xor ebx, ebx 3 x# `- s0 V: o& |
004010CD |. 31F6 xor esi, esi
7 g U2 F# a) L004010CF |. 8B00 mov eax, dword ptr [eax] ) X; R7 [* i' ~7 n$ N1 v$ c8 I
004010D1 |. 8B00 mov eax, dword ptr [eax]
* k y T. E0 b) B, s$ x# D5 q8 a/ w, ?004010D3 |. 3D 910000C0 cmp eax, C0000091 0 {! |5 e1 p; I& V% ?5 f. q
004010D8 |. 77 16 ja short 004010F0 ' `9 D) ]7 F* x4 G" A0 T
004010DA |. 3D 8D0000C0 cmp eax, C000008D
; e! i" q( }, |: _4 u/ l004010DF |. 73 4F jnb short 00401130
$ U( K, b" c. |004010E1 |. 3D 050000C0 cmp eax, C0000005
) J4 x- }" s. o004010E6 |. 74 18 je short 00401100 3 Q5 a! I: ~9 {! I' R; Q
004010E8 |. E9 86000000 jmp 00401173
5 `" M2 ?# H ]004010ED | 8D76 00 lea esi, dword ptr [esi]
2 n( A" f3 H6 t6 W3 V1 T. F9 h m004010F0 |> 3D 930000C0 cmp eax, C0000093 6 m s3 K! X' n! p$ x6 G
004010F5 |. 74 39 je short 00401130
* t; m# p2 v/ U" ~4 [! c004010F7 |. 3D 940000C0 cmp eax, C0000094 + ^- {; ]% E) ~/ c
004010FC |. 74 37 je short 00401135
; D9 B% M/ _+ W004010FE |. EB 73 jmp short 00401173 ( ^, F# ?6 a( S) A
00401100 |> 83C4 F8 add esp, -8
8 N: k M9 }# \/ c4 [: d00401103 |. 6A 00 push 0 ; /func = NULL
8 A) U- y" a2 ^/ [& v; y00401105 |. 6A 0B push 0B ; |sig = SIGSEGV
, A; ~( \ X; b7 V00401107 |. E8 F4020000 call <jmp.&msvcrt.signal> ; \\signal
) ~. l# g4 ^4 S9 ~' \0040110C |. 83C4 10 add esp, 10 & {6 f; v# }5 a( t$ @
0040110F |. 83F8 01 cmp eax, 1 2 R5 p$ X" c8 M" F
00401112 |. 75 0E jnz short 00401122
6 O7 z0 S# ^: c' p00401114 |. 83C4 F8 add esp, -8 ' t4 s8 K* P( m2 D; D1 h0 R
00401117 |. 6A 01 push 1 ; /func = 00000001 8 B/ n: i* |% N
00401119 |. 6A 0B push 0B ; |sig = SIGSEGV 8 {$ y, j0 G( q
0040111B |. E8 E0020000 call <jmp.&msvcrt.signal> ; \\signal
' _% E+ `' u; y! p8 c7 j, N00401120 |. EB 4C jmp short 0040116E 6 p, U- L6 _7 d* D5 p1 q1 Q
00401122 |> 85C0 test eax, eax - n+ t( P G9 K! q' s# G1 f
00401124 |. 74 4D je short 00401173
w- m" x) J! L00401126 |. 83C4 F4 add esp, -0C 4 ?) w: r, r/ q Q7 ^, z7 E8 u
00401129 |. 6A 0B push 0B
' g, `% j5 M8 f2 R8 `5 Q0040112B |. EB 3F jmp short 0040116C 6 M y% E7 m% \6 x0 }' d
0040112D | 8D76 00 lea esi, dword ptr [esi]
* d, X% m6 u* y0 j6 `, x5 ?00401130 |> BE 01000000 mov esi, 1
" a+ @1 M4 @: {3 q0 _00401135 |> 83C4 F8 add esp, -8 / N# J% r! ]* R+ N @- |" \1 ^1 X: [
00401138 |. 6A 00 push 0 ; /func = NULL
7 e: d0 `% y+ Q9 G0040113A |. 6A 08 push 8 ; |sig = SIGFPE
! Y0 W5 \' G4 D% T- ]0040113C |. E8 BF020000 call <jmp.&msvcrt.signal> ; \\signal
' x) l% ^8 F+ i: Z00401141 |. 83C4 10 add esp, 10
, Z0 D9 \% V4 i! J' ~00401144 |. 83F8 01 cmp eax, 1 8 R1 x; G a- M& d
00401147 |. 75 1A jnz short 00401163
8 W$ R3 p/ w4 z6 u+ S! k00401149 |. 83C4 F8 add esp, -8 ; ?& T T0 X7 x7 r5 _ k4 y
0040114C |. 6A 01 push 1 ; /func = 00000001
* u" j% d0 s) N( e6 m0 l0040114E |. 6A 08 push 8 ; |sig = SIGFPE
, H( C6 p" m& _' d# ?6 Z4 h00401150 |. E8 AB020000 call <jmp.&msvcrt.signal> ; \\signal " ?: [, f- h# `4 E
00401155 |. 83C4 10 add esp, 10 0 ~) a# o) L/ B& j* t3 y
00401158 |. 85F6 test esi, esi
" `$ B2 F/ r" F7 t7 `- @0040115A |. 74 12 je short 0040116E " Y" S! W; s% y& K9 p# p# [1 U
0040115C |. E8 97020000 call <jmp.&msvcrt._fpreset> ; [_fpreset
4 X0 K1 l. T( c' i00401161 |. EB 0B jmp short 0040116E 1 q$ l) e) q( {( D& U# i
00401163 |> 85C0 test eax, eax
. x# _2 D- b$ U1 m; G00401165 |. 74 0C je short 00401173 6 o; D( |( Z: n w* e- i- R( g/ ?
00401167 |. 83C4 F4 add esp, -0C
; i/ V1 ~. \! ]. Y3 |0040116A |. 6A 08 push 8 7 a& B% u+ w+ K4 g
0040116C |> FFD0 call eax 8 i# C: D w- k4 e; }8 R5 V1 o
0040116E |> BB FFFFFFFF mov ebx, -1 0 t/ @; W+ v; v3 Q) s1 n
00401173 |> 89D8 mov eax, ebx ! J x1 D( P( k, s1 L
00401175 |. 8D65 E8 lea esp, dword ptr [ebp-18]
" U3 r2 ?$ r* h1 u5 V d00401178 |. 5B pop ebx
# G8 B6 Q% q+ r1 T+ W S; m H0 a00401179 |. 5E pop esi
) C: H( ?- S6 ^2 M0040117A |. C9 leave
% v- x( x/ q8 n$ Q4 r6 v0040117B \\. C2 0400 retn 4
p: k+ S! `4 d, l0 \. d4 m g0040117E 89F6 mov esi, esi - x- I" f- u; F4 }; u
00401180 /$ 55 push ebp
) k% i# f. B0 F0 w/ G7 r+ Z00401181 |. 89E5 mov ebp, esp & N" U: `6 h5 S e
00401183 |. 83EC 14 sub esp, 14 9 I1 I" o7 a! B% p5 r
00401186 |. 53 push ebx ! O d* V; i0 G! @; z2 V
00401187 |. 83C4 F4 add esp, -0C
& X) l, r1 Q* U0 u7 z! t1 J+ r" q0040118A |. 68 C0104000 push 004010C0 ; /pTopLevelFilter = engoutpu.004010C0
1 G. z) D7 v$ A- L! K1 g0040118F |. E8 B4020000 call <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter 5 j) U8 C; ?& l4 a% Q
00401194 |. 83C4 FC add esp, -4 4 h4 |' s" a7 A4 h& Q- @* w6 s
00401197 |. E8 5C020000 call <jmp.&msvcrt._fpreset> ; [_fpreset
" m! h& d9 N, Y7 k0040119C |. E8 5FFEFFFF call 00401000 ! \; y+ X2 }' p, ?; h! G
004011A1 |. E8 8AFEFFFF call 00401030 ; Z" b9 l$ o* q: U- Y9 B
004011A6 |. 83C4 FC add esp, -4
7 g# h) x/ x7 [" U2 X2 m004011A9 |. E8 42020000 call <jmp.&msvcrt.__p__environ> + ? r! m2 K+ m
004011AE |. FF30 push dword ptr [eax]
% q# ^) |1 E3 i$ G/ i004011B0 |. FF35 04204000 push dword ptr [402004]
3 d- X. a# G4 f! R004011B6 |. FF35 00204000 push dword ptr [402000] 7 a- n5 `( r$ E7 ^- e* w0 p
004011BC |. E8 AB000000 call 0040126C % \- v8 y( [& w( w7 Y+ R
004011C1 |. 89C3 mov ebx, eax
( j3 R3 N3 e, U9 W9 K004011C3 |. 83C4 20 add esp, 20 " n2 P( N/ ]7 A; s+ V
004011C6 |. E8 1D020000 call <jmp.&msvcrt._cexit> ; [msvcrt._cexit ) h- j2 w9 t; L1 s& l( n4 l
004011CB |. 83C4 F4 add esp, -0C ! ^# K7 k+ s0 ^* f# ]9 Q; s7 v
004011CE |. 53 push ebx ; /ExitCode
0 E0 n+ R: b& L4 w- \4 Q, _& F004011CF \\. E8 7C020000 call <jmp.&KERNEL32.ExitProcess> ; \\ExitProcess
( x+ K. r( u& V ?7 e; v9 k004011D4 >/$ 55 push ebp & ^3 ]+ {7 @2 u: W: L5 ^
004011D5 |. 89E5 mov ebp, esp * _+ [' B7 P& C& ~7 I" j
004011D7 |. 83EC 08 sub esp, 8
8 h2 R- l* ~( m1 x# \' s004011DA |. 83C4 F4 add esp, -0C
7 ?( T. G, m+ P) \+ x004011DD |. 6A 01 push 1
, g+ D+ G3 k+ S ^004011DF |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a> ' s% S3 _$ g3 Z. M0 i# Q
004011E4 |. FFD0 call eax ; <&msvcrt.__set_app_type> 0 X+ {3 Q! u0 ^- Q5 a4 V
004011E6 |. E8 95FFFFFF call 00401180
% ?& }, T/ Q6 ?# p' v7 ^004011EB |. 31C0 xor eax, eax
. x; e1 o6 J0 R- W) f' H6 W- Q004011ED |. C9 leave
% e/ L* Y) h1 a& n n004011EE \\. C3 retn
+ v g. e( P0 W7 X. k' K004011EF 90 nop
2 V2 D+ B z2 q! D. u9 Y004011F0 /. 55 push ebp
) K$ X# |( ~; f5 ~004011F1 |. 89E5 mov ebp, esp
; F" F1 o2 e) S8 @) e6 y- W. L9 E% e3 Q004011F3 |. 83EC 08 sub esp, 8
6 H$ r! n+ w0 g' r( {$ D004011F6 |. 83C4 F4 add esp, -0C
+ u' G& L4 W0 w9 ?0 V# d004011F9 |. 6A 02 push 2 ! D: Q. n0 q4 R# r: t1 _" {, h
004011FB |. A1 DC304000 mov eax, dword ptr [<&msvcrt.__set_a>
+ D1 ]2 N1 d: U5 k00401200 |. FFD0 call eax ; <&msvcrt.__set_app_type> " d E. P* `+ q6 _8 ]
00401202 |. E8 79FFFFFF call 00401180 7 F+ t5 G" y& N1 D+ w
00401207 |. C9 leave
- S/ J, I+ i* Q. n W& }00401208 \\. C3 retn
( T. q/ ~6 j- ?8 N00401209 00 db 00
% ?. f7 O7 T! U. U5 a- }( z0040120A 00 db 00 9 D( M4 H% t5 }1 F! ?/ I* H
0040120B 00 db 00 $ @2 u$ C9 [: i2 Y! r9 r
0040120C 00 db 00 \1 R- H) N, E0 c* E
0040120D 00 db 00
( f% w) q6 Y- `) m* K6 o0 a# x: B0040120E 00 db 00 9 A9 M4 C3 c5 ~; l7 O( s8 J4 U9 t5 q
0040120F 00 db 00 ( \/ Q8 P7 Z% g9 o! h9 E6 R: A
00401210 72 db 72 ; CHAR 'r' # T, B2 X. e: q1 [" |
00401211 00 db 00
! J! d- f5 d4 f3 f1 [2 i, K8 {00401212 . 69 6E 70 75 7>ascii "input.txt",0 2 W5 ? `- F4 J0 E; Q5 b% G# h3 O
0040121C . 43 61 6E 27 7>ascii "Can't Find input"
/ K; {0 }: d }0040122C . 2E 74 78 74 2>ascii ".txt!",0 / @# S1 `8 b+ e9 P0 v; n1 g, m9 o
00401232 77 db 77 ; CHAR 'w'
& y$ J% z, [, D8 I& C- q$ s00401233 00 db 00
/ E7 r! A! f+ {- l00401234 . 6F 75 74 70 7>ascii "output.txt",0 8 ]5 F, ^, Q: v/ l' {% o5 |$ O$ O
0040123F . 43 61 6E 27 7>ascii "Can't Create out"
6 c+ B/ X( b' v( y+ B K, K) i0040124F . 70 75 74 2E 7>ascii "put.txt!",0
! f6 j) `2 O* ^00401258 . 6F 6E 65 20 6>ascii "one char outpute"
; p$ g) m7 H0 d9 A00401268 . 64 0A 00 ascii "d
/ \; g A. d# d' U" M: n" B. ]",0 ( M: `5 y( v7 G) }& S7 P( _
0040126B 90 nop 7 f4 F8 d( I# t) G4 A
0040126C /$ 55 push ebp
4 e! W: w1 v- {4 w& }& s0040126D |. 89E5 mov ebp, esp
& ?2 ]! E- s! e! U3 o7 m# V0040126F |. 83EC 18 sub esp, 18
- @; H8 P; J) j! D8 F00401272 |. E8 39010000 call 004013B0 0 [& b n: ^, |+ R( }! ]
00401277 |. 83C4 F8 add esp, -8 % H5 K9 E/ }4 v1 T% O( `& Z
0040127A |. 68 10124000 push 00401210 ; /mode = "r"
$ W3 H7 c1 n* H4 N0040127F |. 68 12124000 push 00401212 ; |path = "input.txt" 5 S! g& c9 H) i& l1 T
00401284 |. E8 AF010000 call <jmp.&msvcrt.fopen> ; \\fopen " p0 j/ g k# P- N" c
00401289 |. 83C4 10 add esp, 10
1 O8 x" V# H8 h; e( _0040128C |. 89C0 mov eax, eax
0 v8 X4 s& f5 X7 z. m0040128E |. 8945 FC mov dword ptr [ebp-4], eax * U* V9 {, t* p: q O2 h
00401291 |. 837D FC 00 cmp dword ptr [ebp-4], 0
S- s {% m, L" v. m00401295 |. 75 10 jnz short 004012A7
( P/ q5 ~# D9 E00401297 |. 83C4 F4 add esp, -0C " z0 V- o) u( o
0040129A |. 68 1C124000 push 0040121C ; /format = "Can't Find input.txt!" 5 C& q# T# N2 c# @1 t
0040129F |. E8 8C010000 call <jmp.&msvcrt.printf> ; \\printf / ?% B+ K3 h A4 U& b# n# T0 R: U
004012A4 |. 83C4 10 add esp, 10
) R4 e& x7 ^5 ~+ _, _- T004012A7 |> 83C4 F8 add esp, -8
! i: n7 r+ X8 O: l8 u2 ]% Y9 S004012AA |. 68 32124000 push 00401232 ; /mode = "w"
. Z; w6 m8 U$ Z* W004012AF |. 68 34124000 push 00401234 ; |path = "output.txt" # g# X# V. C, Q/ B
004012B4 |. E8 7F010000 call <jmp.&msvcrt.fopen> ; \\fopen ]. t( ^3 `" _( C( J
004012B9 |. 83C4 10 add esp, 10
' _; e4 E) r( M- R* t% d2 i004012BC |. 89C0 mov eax, eax
) v) ~' o2 `% N! G2 |3 x6 T004012BE |. 8945 F8 mov dword ptr [ebp-8], eax
) u2 E) }' Q, H+ G$ T# X/ t0 a004012C1 |. 837D F8 00 cmp dword ptr [ebp-8], 0 ( f' E$ H4 u+ e2 ^6 `8 J: R
004012C5 |. 75 10 jnz short 004012D7 % ?/ X, ~' a- r7 G
004012C7 |. 83C4 F4 add esp, -0C 1 M- q5 ^0 ^( g+ D# A8 H
004012CA |. 68 3F124000 push 0040123F ; /format = "Can't Create output.txt!"
! M6 J7 x; S5 y& [7 e/ \" u- r004012CF |. E8 5C010000 call <jmp.&msvcrt.printf> ; \\printf % q4 \* X1 Z' j" H( S) A' k
004012D4 |. 83C4 10 add esp, 10
- Z7 j: q% i3 Q- v1 P% f3 q4 X! ^/ X004012D7 |> 83C4 F4 /add esp, -0C 3 ? @/ j# Q' p9 j+ X
004012DA |. 8B45 FC |mov eax, dword ptr [ebp-4] . r9 K% }' |4 C" |1 h6 i( P
004012DD |. 50 |push eax ; /stream 7 w% [: t' }% S" e) @6 ~/ p
004012DE |. E8 45010000 |call <jmp.&msvcrt.fgetc> ; \\fgetc
0 E" I6 y1 m7 \8 B004012E3 |. 83C4 10 |add esp, 10 2 B0 Z( u, F# I" |0 g1 D' J" v/ T9 H
004012E6 |. 89C0 |mov eax, eax $ l9 J$ f; ~9 ]1 }5 ]
004012E8 |. 8945 F4 |mov dword ptr [ebp-C], eax
$ r, V! T7 o0 N, I: o004012EB |. 817D F4 80000>|cmp dword ptr [ebp-C], 80
# m7 Q: Y1 d1 k4 C004012F2 |. 7F 23 |jg short 00401317
$ ~ J5 ~ B- w- Z& Z0 @: `004012F4 |. 83C4 F8 |add esp, -8 5 c' R) k, C g4 |" |
004012F7 |. 8B45 F8 |mov eax, dword ptr [ebp-8] * s- Z3 `- q4 C" F/ _0 Q; B
004012FA |. 50 |push eax ; /stream
# n7 X) {% a& Z004012FB |. 8B45 F4 |mov eax, dword ptr [ebp-C] ; | 1 w l% \1 C3 W; ?
004012FE |. 50 |push eax ; |c
; h7 R0 r2 ^' a" i8 l k1 d6 |( Z7 o004012FF |. E8 1C010000 |call <jmp.&msvcrt.fputc> ; \\fputc 1 G/ x! V' A: L
00401304 |. 83C4 10 |add esp, 10
+ P5 M: V w& w9 ^1 ~+ }/ s00401307 |. 83C4 F4 |add esp, -0C 8 J2 Y$ ^0 H% t9 h9 F3 R f. l
0040130A |. 68 58124000 |push 00401258 ; /format = "one char outputed",LF,""
- {5 G+ j3 w+ C* o' b0040130F |. E8 1C010000 |call <jmp.&msvcrt.printf> ; \\printf
" u$ J" v5 E# A2 e00401314 |. 83C4 10 |add esp, 10
2 h# ^% R+ E4 b; M. ?( H k+ ~00401317 |> 837D F4 FF |cmp dword ptr [ebp-C], -1 6 B- |* \1 V6 ?, Q. M# m
0040131B |. 75 03 |jnz short 00401320
5 R' |+ s4 K; C0040131D |. EB 03 |jmp short 00401322
8 @* T, B; v7 ?8 D3 j2 b' Z0040131F | 90 |nop
9 `8 N6 g% I5 p( c K4 O/ ?00401320 |>^ EB B5 \\jmp short 004012D7 ( p& j9 Q, f) x/ [; I! b" R
00401322 |> C9 leave
$ }! z, c! j( ? g- ]00401323 \\. C3 retn
Y9 T# ^% Z; ]7 i00401324 00 db 00 + j& ?2 F5 m# b' D7 o
00401325 00 db 00 ( g6 K+ T! b* Z4 B: ]
00401326 00 db 00 + g9 ]9 X0 C3 z3 k) I! V3 _
00401327 00 db 00
3 i d3 ~$ U6 @/ `9 L00401328 00 db 00
0 b T$ b0 a' r! K( K- N) S% ~00401329 00 db 00
4 `8 M4 U+ b- N3 ]0040132A 00 db 00 3 d0 @3 o5 B! ?" k" B6 m
0040132B 00 db 00 ' _# N" Q" a, A
0040132C 00 db 00
2 E8 a7 V. J3 `; @ |0040132D 00 db 00 9 T' q j1 Z( x$ ~1 g1 G* X
0040132E 00 db 00 5 v+ M$ K" r8 d2 l4 t
0040132F 00 db 00
, _( E* W; d' \: ?- ~- e00401330 /. 55 push ebp . {9 w; k) M( H# q
00401331 |. 89E5 mov ebp, esp " u* @3 X# E0 z) w9 y
00401333 |. 83EC 08 sub esp, 8
|: g+ q8 l X- v8 A00401336 |. A1 10204000 mov eax, dword ptr [402010]
9 o ]: ~1 u( ?' m6 a0040133B |. 8338 00 cmp dword ptr [eax], 0
3 A, r* i# @# q& P* g! U" ?' \0040133E |. 74 1D je short 0040135D
! H* v5 K+ J {. }3 C6 P- X3 s00401340 |> A1 10204000 /mov eax, dword ptr [402010]
3 V. H# x0 n; Z0 o/ I00401345 |. 8B00 |mov eax, dword ptr [eax]
' j3 l7 L7 K5 x3 D0 ]6 y00401347 |. FFD0 |call eax
5 w, M x& n* M8 p1 Q: T3 @00401349 |. A1 10204000 |mov eax, dword ptr [402010]
" n/ v$ S- M0 c0 \, J2 w0040134E |. 8D50 04 |lea edx, dword ptr [eax+4] 5 Q) e% w+ R% i( n! [
00401351 |. 8915 10204000 |mov dword ptr [402010], edx
$ O) e% G4 V1 c N00401357 |. 8378 04 00 |cmp dword ptr [eax+4], 0
3 U1 Q% S k/ u" `0040135B |.^ 75 E3 \\jnz short 00401340
# @* a' ?, x) s0 G8 w0040135D |> C9 leave
+ X) t9 g& J# ~, L$ p/ W9 c0040135E \\. C3 retn " Z# U$ l8 Q' @8 ]' E5 F- {
0040135F 90 nop 4 U% m- ^; d1 c" Q5 Z0 l
00401360 /$ 55 push ebp & u# _) t: J: f& X
00401361 |. 89E5 mov ebp, esp
. ?3 q$ @) J5 y" M' c00401363 |. 83EC 14 sub esp, 14 % n$ D3 e( Q% u; |+ @
00401366 |. 53 push ebx
- x" q; M! K9 E00401367 |. A1 58144000 mov eax, dword ptr [401458]
, U+ F# J: B8 S ?9 U" k0040136C |. 83F8 FF cmp eax, -1 1 W a, @ Z; f ~* |: {( y# d
0040136F |. 75 19 jnz short 0040138A
9 @1 S5 C* Y/ u00401371 |. 31C0 xor eax, eax ! a ? i, E: ?' b* G+ n
00401373 |. 833D 5C144000>cmp dword ptr [40145C], 0 $ p5 ^7 R3 H6 q6 o+ a) S5 }! j
0040137A |. 74 0E je short 0040138A ' O' H3 w: C. R. c. \" L6 T: s
0040137C |. BA 5C144000 mov edx, 0040145C 7 G6 E, [+ A# P c
00401381 |> 83C2 04 /add edx, 4 5 N) ~0 Y2 b! o! L; C0 U- Y
00401384 |. 40 |inc eax ) s6 R2 c4 r# R5 D+ H! D3 U2 g& ^
00401385 |. 833A 00 |cmp dword ptr [edx], 0
( y, D' m* u2 P, H2 ?00401388 |.^ 75 F7 \\jnz short 00401381
6 d+ @1 I4 }! v2 c9 e0040138A |> 89C3 mov ebx, eax 5 @/ d+ U- i/ I1 O, x7 J3 }
0040138C |. 85DB test ebx, ebx $ d, N3 Y' W; q6 d' y
0040138E |. 74 0C je short 0040139C / c* k c U: M0 D! }1 z2 l
00401390 |> 8B049D 581440>/mov eax, dword ptr [ebx*4+401458]
* B4 E0 q5 f U00401397 |. FFD0 |call eax : A3 U1 J: [8 r
00401399 |. 4B |dec ebx
7 H' E! q/ T& k9 Y6 m5 p0040139A |.^ 75 F4 \\jnz short 00401390
/ p# C( F7 e9 L1 e( |2 [0040139C |> 83C4 F4 add esp, -0C 3 n( M: J, ?( R9 T
0040139F |. 68 30134000 push 00401330 ; /func = engoutpu.00401330
) Q3 ^" G+ p& }1 R004013A4 |. E8 97000000 call <jmp.&msvcrt.atexit> ; \\atexit : [7 X1 ?7 x8 s9 M+ v; o
004013A9 |. 8B5D E8 mov ebx, dword ptr [ebp-18]
: B- U6 i. G2 H, L004013AC |. C9 leave
+ t% W$ T% R+ b. o004013AD \\. C3 retn 4 _ {( l1 e9 V; E
004013AE 89F6 mov esi, esi , V; {' B0 I' K6 G' W
004013B0 /$ 55 push ebp
% [! P2 r2 T" f7 b, E8 k004013B1 |. 89E5 mov ebp, esp 9 c% R/ ?9 V" t( U" z) N7 W3 C1 X
004013B3 |. 83EC 08 sub esp, 8
& ]' s1 k1 [5 {& e x. t004013B6 |. 833D 14204000>cmp dword ptr [402014], 0
: p8 a" m% m. {5 w) _7 _. a9 y004013BD |. 75 0F jnz short 004013CE
2 }) {2 c* j( E# H7 g. f& A1 G9 r004013BF |. C705 14204000>mov dword ptr [402014], 1 ' t# P. @* c; r+ e1 F7 H
004013C9 |. E8 92FFFFFF call 00401360
y" P2 Z- K1 J E9 N$ m+ k004013CE |> C9 leave 7 I) `# v8 @# G5 f- p- j
004013CF \\. C3 retn ( w, ~* `& r+ |2 Z
004013D0 .- FF25 AC304000 jmp dword ptr [<&msvcrt._fmode>] ; msvcrt._fmode
9 I) n6 C3 v; D. A% C( J004013D6 90 nop
2 u# a- a1 c) `0 n" ]004013D7 90 nop # F; s! H5 U. [- O' a" I
004013D8 .- FF25 B4304000 jmp dword ptr [<&msvcrt._iob>] ; msvcrt._iob ' J0 L, A. U" d! R- l
004013DE 90 nop @& U; ~) B& e$ u' _$ h4 r
004013DF 90 nop 0 @3 B; C; Z. r- w1 n5 D
004013E0 .- FF25 DC304000 jmp dword ptr [<&msvcrt.__set_app_ty>; msvcrt.__set_app_type 5 z2 u$ U c8 O- I
004013E6 90 nop
6 m' E+ s/ L5 {" {6 Z* L4 x004013E7 90 nop " V, {, M8 L2 g6 O& T
004013E8 $- FF25 A4304000 jmp dword ptr [<&msvcrt._cexit>] ; msvcrt._cexit : u0 V, L0 a- ^/ Q9 o/ R! w- [! h( O
004013EE 90 nop
" d0 v! t! u5 K* m+ a004013EF 90 nop 3 a4 q Q0 ]" g
004013F0 $- FF25 D0304000 jmp dword ptr [<&msvcrt.__p__environ>; msvcrt.__p__environ
6 C" r' q8 S. ~' t004013F6 90 nop
% `* F- r) D6 k4 {' X004013F7 90 nop
- a2 ^8 O# J- u0 }- N2 m! N004013F8 $- FF25 B0304000 jmp dword ptr [<&msvcrt._fpreset>] ; msvcrt._fpreset
. | ]0 u+ `6 B/ G: c004013FE 90 nop . t( i" K6 K9 {8 T7 W( q
004013FF 90 nop - [! g9 l- W% Q6 L, s# k/ x
00401400 $- FF25 D8304000 jmp dword ptr [<&msvcrt.signal>] ; msvcrt.signal 5 U: j. H& t* ^5 ~# `
00401406 90 nop 5 D. h8 k5 s! r' Q
00401407 90 nop 0 Y* U! o6 }7 J, P, p: v9 m1 q* K
00401408 $- FF25 A8304000 jmp dword ptr [<&msvcrt._fileno>] ; msvcrt._fileno + h. [* _6 s! s/ W
0040140E 90 nop
" J& @& n0 B2 d0040140F 90 nop
! Q. N/ ]' |/ O2 M/ W00401410 $- FF25 B8304000 jmp dword ptr [<&msvcrt._setmode>] ; msvcrt._setmode 4 A6 p2 A+ m" K% {6 S1 C( Z2 F" Z0 P
00401416 90 nop
& N1 ^/ l5 n! {00401417 90 nop
7 @8 x( p5 {) `, c8 j00401418 $- FF25 BC304000 jmp dword ptr [<&msvcrt.__getmainarg>; msvcrt.__getmainargs
3 S; `/ A* m' U# K4 |( |0040141E 90 nop
% Z: t: g; R7 n; [2 _0040141F 90 nop 1 h, l. j4 U8 b4 ^% n: H) C! j# N
00401420 $- FF25 CC304000 jmp dword ptr [<&msvcrt.fputc>] ; msvcrt.putc
% `% }& _/ \) }4 ]00401426 90 nop
1 Q- b8 w0 b2 i" r0 o% g00401427 90 nop
- M" ^0 J4 U/ `8 J1 D4 G! X00401428 $- FF25 C4304000 jmp dword ptr [<&msvcrt.fgetc>] ; msvcrt.getc
0 E, y" H/ V# Z$ I) ?+ X8 v0040142E 90 nop
3 z, ]% }1 _/ _' r7 q0040142F 90 nop 9 {: z) T* Z' L% R
00401430 $- FF25 D4304000 jmp dword ptr [<&msvcrt.printf>] ; msvcrt.printf
! a# o/ [% @4 k0 R1 Y( q00401436 90 nop 7 `' n& _ e* E" @: w
00401437 90 nop 1 t" w u" V4 u- H; {- I
00401438 $- FF25 C8304000 jmp dword ptr [<&msvcrt.fopen>] ; msvcrt.fopen
( P$ w# ~( u2 i5 X& j9 s& O( }3 f0040143E 90 nop
2 r% }5 u& r- j2 d7 w0040143F 90 nop L7 a- }: i B& H# D
00401440 $- FF25 C0304000 jmp dword ptr [<&msvcrt.atexit>] ; msvcrt.atexit : S d$ K9 |% I `' z3 k
00401446 90 nop
$ o; t5 i* Y4 v% ^& t8 i00401447 90 nop ]. n% [* B/ l) h. t
00401448 $- FF25 98304000 jmp dword ptr [<&KERNEL32.SetUnhandl>; kernel32.SetUnhandledExceptionFilter
& p: h" j4 G% [+ U: m9 A' O$ u0040144E 90 nop
) w T/ h3 f8 \/ H0040144F 90 nop ; t5 O& V1 f* _. j4 L9 l L
00401450 .- FF25 94304000 jmp dword ptr [<&KERNEL32.ExitProces>; kernel32.ExitProcess
6 d4 P9 }1 ~: }0 }* z- G2 r00401456 90 nop
! b z2 z2 m6 t* b* f l00401457 90 nop & @; [9 R, C5 B
00401458 . FFFFFFFF dd FFFFFFFF / ^1 W" d) L! B7 M% [
0040145C . 00000000 dd 00000000
5 J; R$ I3 e" @00401460 FF db FF
6 c2 G3 x* _' x4 n" I' n1 ^4 w00401461 FF db FF
H3 V" ^" b" j! q/ o00401462 FF db FF ' k3 t/ V% l4 b! y
00401463 FF db FF / B4 y# M% R; L
00401464 00 db 00
Z) `: t8 M* {) Y/ Y# U- a0 ?00401465 00 db 00
. F- o s0 ~. u* G( Y/ x( M00401466 00 db 00
& k) R/ H. r2 G, k/ p00401467 00 db 00 |