|
|
ret_sp macro dummy ' X9 b' A3 f x5 e
local llll, lll $ h% r+ o. @% b! C
even' ` z; N L0 P( W: S. g
mov sp, offset cs:lll 2 f+ w `. J* x" K" L3 J# n9 l
jmp dummy
% w, e# g$ K$ A8 ]% c* a6 Tlll:/ s% w* t* H; x
dw offset cs:llll ; return address
5 ^& a* {/ b$ vllll:
3 L0 t; v" b: @, P3 cendm- j( k" w6 d( j8 K+ L
* b. d! i' q+ W. ^7 S关于ret_sp这个宏我有一点没有搞明白6 l( e# \8 l- r3 w- q1 m( N
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?% p- O& K! ]) p& F6 L# m
为什么不能直接写成:
' k6 Y! k' V9 Qret_sp macro dummy ( m( u$ Z: T d) s$ C, X8 F
local lll 8 Z% I8 f0 S/ C( O/ Q8 b% j& [
even
$ L2 m; P9 V4 D: ~$ B mov sp, offset cs:lll
" M# u0 n/ C1 w3 Y1 w jmp dummy
- z/ `7 ^; O: s: R0 g) t! Flll:1 R$ Q( c0 u N; I
endm
( t# b7 Z& E' z5 y V
5 \- w# q5 a; R( o4 U请知道的指点一下,谢谢! |
|