IDA Pro 在堆栈帧视图中在局部变量上方(在较低地址处)显示某些缓冲区或填充。例如:
示例 1.
以下堆栈帧视图的屏幕截图显示了 12 字节(包含在红色框中)缓冲区:
示例 2。
以下不同堆栈帧视图的屏幕截图再次显示了 12 字节缓冲区:
我知道 IDA 将其标记为db ?; undefined
因为它无法弄清楚它是如何使用的。我还意识到 IDA 通过监视 ESP 自动计算堆栈帧的大小。我认为它可能与非易失性寄存器保存区域有关。然而,在示例 1 中它清楚地显示Saved regs: 0
,在示例 2 中它显示了Saved regs: 4
。我很困惑,这里是我的问题:
为什么 IDA Pro 在堆栈帧视图中在局部变量上方(较低地址)显示某些缓冲区或填充?两个视图都显示正好12 字节的缓冲区是巧合吗?它是某些调用约定或编译器所特有的吗?