arg_0 = dword ptr 4 是什么意思?

逆向工程 艾达 x86
2021-06-14 11:11:34

我尝试使用 IDA dissembler,但我不太明白出现在函数头部的以下文本段落:

arg_0 = dword ptr 4

谁能解释一下它们的含义?

1个回答

那不是命令,也不是汇编语言的真正组成部分。IDA 使用这些标记来简化与堆栈相关的汇编指令的阅读。

一旦 IDA 检测到偏移量将作为内部变量或参数指向函数的堆栈,它就会为每个参数和/或参数指向的特定堆栈偏移量分配一个名称,从堆栈的底部开始。

然后,无论堆栈增长/收缩如何,它都会计算到同一位置的所有偏移量,并且将尽可能使用堆栈偏移量名称。

语法如下:

<argument/variable name> = <size> ptr <offset from stack base>

因此,在您的示例中,IDA 确定了该函数的第一个参数并为其命名arg_0n当您的光标位于该函数上时,您可以通过按来更改该名称)。参数是一个双字,函数的基本堆栈偏移量为 4。

因为偏移量是正的,IDA 将堆栈地址标识为参数。负偏移量将被识别为变量,并将使用var_前缀代替。