|
|
ret_sp macro dummy $ {$ L# Z% S! F, _
local llll, lll 1 F1 |' @7 Q3 F: q% E
even3 A- J% L' j; G* T# ?4 h2 ?9 @
mov sp, offset cs:lll # d. B$ ?0 M3 [, g5 a7 P$ l( u* O
jmp dummy
! Y% l4 _- |+ `0 ~lll:) x3 J7 K! }/ V6 z, @4 r! g: W- T
dw offset cs:llll ; return address ]/ Z. I6 l7 A3 r+ @( \
llll:* y' M) D9 R; ^9 E" C6 f' {
endm; G- c0 X/ M& X: W4 B
. g5 R& H1 d ?% _8 l& z% ?# _$ p关于ret_sp这个宏我有一点没有搞明白$ w; ~2 P5 T" J8 d; S
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?" _1 K# z8 @" \: w
为什么不能直接写成:1 }7 ^' G3 k- w* W5 W0 w0 N$ L
ret_sp macro dummy + ]; u. m- U c- V
local lll
0 ]; B+ T' o% z6 ^. q1 L even
9 Y; n$ w5 }5 i8 f8 ~/ Z' g- H. w mov sp, offset cs:lll 8 I5 @) S) A9 y
jmp dummy4 o& ^" H n% R& L
lll:
3 s# B) E' x. Aendm7 E" W3 R/ f1 R7 ?' }% N8 t' l {
( @! \- M9 ]3 }( s. Q请知道的指点一下,谢谢! |
|