hackzzg
Jzzg
2016-07-18 13:54
采纳率: 100%
浏览 1.9k
已采纳

关于EIP ESP EBP 的问题

当调用函数时ip指向函数地址,函数都在堆栈中,这时ip的值等不等于sp,再说函数返回,恢复堆栈是不是回归原来的IP 求各位大神解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • freedom_wings4
    freedom_wings4 2016-07-18 14:39
    已采纳

    我觉得,调用函数后,会把调用前的指令的下一条指令地址压栈,再用push ebp, mov esb,esp,这样的,我觉得eip是不等于esp,另外函数本身的代码是不在栈中的。

    返回时,因为入栈的是下一条指令的地址,所以会返回到call这些调用函数的指令的下一条指令的地址

    点赞 评论
  • CSDNXIAOC
    Robot-C 2016-07-18 14:02

    eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计......
    答案就在这里:EIP & EBP & ESP
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    点赞 评论

相关推荐