【发布时间】:2018-05-11 16:06:55
【问题描述】:
来自this question,将返回地址推送到特定的堆栈寄存器会不会更安全,这样我们就不能利用堆栈溢出?
- 调用者将返回地址(
call)推送到return address stack register。 - 调用者推送参数。
- 被调用者推送本地人。
- 被调用者中正在发生一些工作。
- 被调用者清理堆栈。
-
ret将return address stack register的值弹出到RIP/EIP。
【问题讨论】:
-
还有,什么是栈register?
-
Forth 也是这样做的,SPARC 也是如此。您可以在 ARM 和其他一些架构上轻松实现。是的,有可能。但通常不会这样做,可能是因为它需要更复杂的编程模型以及分配两个堆栈而不是一个堆栈。
标签: assembly x86 stack-overflow