|
|
ret_sp macro dummy
9 |1 U V+ A+ ?3 s I7 L9 [% V0 x local llll, lll % {3 g0 w# G) x, ], V% a
even% x3 k; t9 {: _+ u. _1 ?/ F
mov sp, offset cs:lll ! f3 B: ~/ p( U+ [+ l, S
jmp dummy% S I- Q" c0 R/ S
lll:1 ]$ b: t4 \! E |
dw offset cs:llll ; return address5 {1 K, n4 v c2 s' o
llll:0 t$ ^* u+ D! c: L0 F5 P5 L: [
endm# z; l; x6 d. P* V
. P3 v, @8 h+ n% Y2 @. [
关于ret_sp这个宏我有一点没有搞明白6 p3 o) M* w& _* M- ?
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?( v6 w Y3 ^0 O2 M7 z2 b
为什么不能直接写成:
5 L9 { J( H J1 j {ret_sp macro dummy ! E3 L/ n8 t7 C2 W2 v8 w
local lll # [) z7 ~5 f) r
even$ C9 j! [2 P' ^+ p
mov sp, offset cs:lll + r) O8 e1 S" X1 c9 Y: j. l3 R) g
jmp dummy
1 \2 }- N# Y. |7 L; Rlll:
( c, \( X/ }( vendm: J3 H1 F4 u) _- j
5 @- T* w# a* ?( G F, o请知道的指点一下,谢谢! |
|