- 论坛徽章:
- 0
|
按照mik老大的指点,从foo()中ret后,应该是这样的:
----------------------------
ret_value <--------------------- main() 地址
----------------------------
%ebp
---------------------------
下面是attack():
push %ebp
mov %esp, %ebp
sub $0x8, %esp
....
leave
ret
也就是说attack()自己还会压入一个%ebp:
----------------------------
ret_value <--------------------- main() 地址
----------------------------
%ebp
---------------------------
%ebp
---------------------------
那么当执行leave时,把pop出最顶上的%ebp,然后ret的时候....貌似再也回不去了(segment fault)
我已经崩溃了~~~~ |
|