IDA EBP 可变偏移量

逆向工程 拆卸 部件 静态分析 调用栈 艾达
2021-06-15 02:58:46

让我们来看看 IDA 如何显示局部变量的地址。例如:

MOV EAX, [EBP + var_4]

众所周知,就局部变量而言,它们位于 EBP 的较低地址。

堆栈帧

虽然,我一直认为这是理所当然和不可避免的,但我仍然很好奇。为什么 IDA 将局部变量偏移显示为[EBP + var],而不是[EBP - var]

太感谢了。

1个回答

看看var_4函数开头定义:

var_4 = dword ptr -4

所以它实际上是负面的。

如需更完整的图片,Ctrl+K在堆栈var上使用或双击/回车查看堆栈框架布局

-00000018 ; Two special fields " r" and " s" represent return address and saved registers.
-00000018 ; Frame size: 18; Saved regs: 4; Purge: 0
-00000018 ;
-00000018
-00000018 var_18          dd ?
-00000014 var_14          dd ?
-00000010 var_10          db 12 dup(?)
-00000004 var_4           dd ?
+00000000  s              db 4 dup(?)
+00000004  r              db 4 dup(?)
+00000008 arg_0           dd ?
+0000000C
+0000000C ; end of stack variables