我尝试使用 IDA dissembler,但我不太明白出现在函数头部的以下文本段落:
arg_0 = dword ptr 4
谁能解释一下它们的含义?
我尝试使用 IDA dissembler,但我不太明白出现在函数头部的以下文本段落:
arg_0 = dword ptr 4
谁能解释一下它们的含义?
那不是命令,也不是汇编语言的真正组成部分。IDA 使用这些标记来简化与堆栈相关的汇编指令的阅读。
一旦 IDA 检测到偏移量将作为内部变量或参数指向函数的堆栈,它就会为每个参数和/或参数指向的特定堆栈偏移量分配一个名称,从堆栈的底部开始。
然后,无论堆栈增长/收缩如何,它都会计算到同一位置的所有偏移量,并且将尽可能使用堆栈偏移量名称。
语法如下:
<argument/variable name> = <size> ptr <offset from stack base>
因此,在您的示例中,IDA 确定了该函数的第一个参数并为其命名arg_0
(n当您的光标位于该函数上时,您可以通过按来更改该名称)。参数是一个双字,函数的基本堆栈偏移量为 4。
因为偏移量是正的,IDA 将堆栈地址标识为参数。负偏移量将被识别为变量,并将使用var_
前缀代替。