我正在尝试使我的 c 代码免受 Raspberry Pi 上的堆栈溢出的影响。我是这方面的初学者,所以请耐心等待。有人告诉我,确定调用函数使用的字节量的一种方法是通过用已知值(例如 0xff)填充堆栈空间来初始化堆栈空间。然后运行该函数,然后向后搜索以查看有多少堆栈从已知值更改。通过获取原始堆栈深度和第一个未更改值之前的堆栈深度,我可以确定该函数使用的堆栈数量。对我来说听起来很合理。
我的问题是这个组装的东西让我很困惑。我一直在阅读我可以使用 asm() 将 ARM 汇编代码嵌入到我的 c 代码中,但我不确定如何初始化堆栈内存,然后返回并检查它。有没有我可以查看的资源会有所帮助?我对汇编知之甚少,以至于我什至不知道如何形成一个很好的搜索词。
谢谢。