【发布时间】:2016-10-04 10:18:21
【问题描述】:
我想实现一个按函数调用堆栈金丝雀。因此,我必须使用(不太小的)内存区域来放入金丝雀(检查金丝雀的堆栈值与初始金丝雀值)。我已经看到 gcc 的堆栈保护器使用 FS 内存。它只需要一个非常小的内存区域(我认为它大约是 5 个整数大小)。我也读过,FS 内存用于其他操作系统目的,因此我显然需要尽量不要打扰这些目的。由于我正在实现按函数调用金丝雀,我需要更大的内存(金丝雀有 1 个字大,我应该能够容纳至少 100 个金丝雀)。总的来说,我很好奇我可以安全地将它们放在哪里。
【问题讨论】:
-
你不要把堆栈金丝雀放在
fs:,你把它们放在堆栈上。 -
是的,但是您将它们放在 fs 中的某个位置以检查正确的金丝雀值
-
@Corn:如果您在 Ira 的回答中编辑来自 cmets 的一些信息,您可以改进这个问题,就像这是一个学校项目,不一定要足够有效采用。并且通常要弄清楚重点是什么,以及您希望它如何工作。我认为你有一个很好的问题,如果你把它整理一下,它会让 stackoverflow 成为一个更好的网站,这样未来的读者就可以清楚地知道到底要问什么。 (即重新编辑您的问题,我可能会赞成它。:P 也许多个较小的段落?)
标签: function gcc memory assembly stack