- 论坛徽章:
- 0
|
原帖由 iLRainyday 于 2009-12-14 23:25 发表 ![]()
我画了个图,mik老大看看我哪里理解错了
由于在函数里:
push ebp <----- 建栈
mov ebp, esp
...
...
mov esp, ebp
pop ebp <----- 销栈
ret
------------------------------------
所以,在执行 attack() 时,也需要遵循这个原则
因此,还要为 attack() 函数留了一个 [ebp] 值
----------------------------
ret_value <--------------------- main() 地址
----------------------------
ebp
---------------------------
ret_value <------------------- attack() 地址
---------------------------
ebp
---------------------------
main_eip
---------------------------
c_foo
----------------------------
[ 本帖最后由 mik 于 2009-12-15 00:21 编辑 ] |
|