堆栈 Canary 相对于 ebp 的位置

Location of stack canary relative to ebp

提问人:happychild 提问时间:10/27/2023 最后编辑:Progmanhappychild 更新时间:10/27/2023 访问量:30

问:

我正在尝试习惯堆栈金丝雀机制。

当我进行一些搜索时,我发现在某些用法中,堆栈金丝雀位于 %ebp - 0x8,而其他一些用法则位于 %ebp -0xC。

条目 %ebp - 0x4 是否也可用于存储堆栈金丝雀? 此外,是否有任何编译器选项来指定这种不同的行为?

谢谢,永远

程序集 缓冲区溢出

评论

1赞 500 - Internal Server Error 10/27/2023
总是在退货地址和当地人之间。你能举一些你所看到的不同行为的例子吗?也许我们可以推断出区别是什么。
0赞 Peter Cordes 10/27/2023
如果编译器将它放在其他调用保留寄存器之下,则可以解释其中的区别。没有理由期望它位于相对于 EBP 的固定位置,即使在函数使用 EBP 作为传统帧指针的调试版本中也是如此。push
0赞 happychild 10/30/2023
网络上的大量代码显示了各种行为,似乎我得到了答案。对于谁来说,可以查看堆栈对齐的条款。谢谢大家!

答: 暂无答案