【问题标题】:What does ebp and esp in a disassembly code mean?反汇编代码中的 ebp 和 esp 是什么意思?
【发布时间】:2014-10-31 22:48:33
【问题描述】:

下面是我的代码。帮助我理解以下代码的含义:

   push    ebp
   mov     ebp, esp
   sub     esp, 230h

【问题讨论】:

标签: assembly malware ida


【解决方案1】:

这是一个功能序言

将旧的基指针压入堆栈,以便稍后恢复:

   push    ebp

将堆栈指针的值赋值给基指针,然后在旧堆栈帧之上创建一个新堆栈帧:

   mov     ebp, esp

通过减少或增加其值来进一步移动堆栈指针(取决于堆栈是向下还是向上):

   sub     esp, 230h

这里,230h 立即值是在堆栈上保留的字节数,供函数中本地使用。

以类似的方式,函数尾声反转序言的动作并将控制权返回给调用函数。

检查这个相关的 SO 问题:Function Prologue and Epilogue in C

【讨论】:

  • 一些编译器提供不使用帧指针的选项,这样可以释放 ebp 以用作通用寄存器(它仍然需要保存)。
猜你喜欢
  • 2011-02-02
  • 2013-01-29
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 2021-12-23
  • 2011-07-31
  • 1970-01-01
  • 2013-02-07
相关资源
最近更新 更多