sav*_*v0h 3 c x86 assembly nasm
在C/x86中,当从函数返回时,我们通常:
pop ebp
ret
pop eip
在这一点上,我可以期待esp包含什么?它是指向返回地址正上方的指针,还是esp的值也被隐含地改变了ret?
谢谢 :)
Mat*_*att 9
它是指向返回地址正上方的指针,还是esp的值也被ret隐式改变了?
有两种形式ret:只是ret和ret N.第一种形式只是弹出eip(这通常意味着"从eip中添加ep,加上esp,4")并继续执行,所以esp指向调用函数时推送的最后一个参数 - 这意味着调用者必须通过以下方式处理随后add esp, N.
ret N
add esp, N
ret N表示在弹出eip之后,esp在同一指令中按值N添加,因此调用者不需要这样做.缺点是你不能使用可变数量的args,因为'N'只能是常量值.
归档时间:
9 年,7 月 前
查看次数:
1150 次
最近记录: