了解堆栈布局中的变量

逆向工程 艾达 拆卸 反汇编者 补丁反转 漏洞分析
2021-06-20 23:22:37

我正在阅读“灰帽黑客 - 道德黑客手册”。这本书很好,但对特定主题存在疑问。在漏洞分析章节中,它试图使用 IDA-PRO 分析漏洞。

但是有一个转折点。正如我们所知,堆栈变量是从右向左推送的。例如:function x(int x, int y, int z),所以变量将按以下顺序push z push y push x

在书中它说的是下面的函数名称

函数名称

函数格式如下:

函数格式

然后它说如果我们单击 IDA-PRO 中的任何变量,它将放弃下面的堆栈布局,其中传递函数参数。检查下图

[堆栈布局[2]

但是如果我们看到上面的图片,我们可以看到参数没有以正确的方式传递。有些混淆。我的意思是说不是“从右到左”的方式,这有点令人困惑。

任何人有任何想法,请告诉我

1个回答

查看sprintf被调用的位置,您应该会看到参数以正确的顺序推送。

这里列出的变量是函数的局部变量,manage_request而不是它的参数他们的论据sprintf电话,但自己可以放置在任何变量责令编译器堆栈中的决定(通常,但并非总是如此,他们在源代码中声明的顺序)。