LEAVE
作者:Vesper Vei
1 分钟阅读
目录
LEAVE(leave)
基本作用
LEAVE 用于恢复函数调用前的栈帧,相当于清理局部变量和恢复旧的 RBP。 等效行为:
mov rsp, rbppop rbp指令执行过程
- 将 RBP 的值写入 RSP(丢弃局部变量区域)
- 从栈中弹出旧 RBP
指令格式
leave行为特性
- 单字节指令
- 函数返回前常见的 epilogue
- 清理栈帧时比手写两条指令更短、更快
- 在溢出中:当覆盖了 saved RBP 后,leave 会将该“伪 RBP”赋给 RSP
常见用途
- 标准函数尾部:
push rbp→ … →leave - 对调试栈帧非常清晰
- 在 PWN 中可伪造 RBP,劫持后续 RET 去向