【问题标题】:Frame pointer + return address帧指针+返回地址
【发布时间】:2010-10-04 17:36:46
【问题描述】:

有谁知道函数的返回地址相对于帧指针在哪里? windows和unix有区别吗?

谢谢:)

【问题讨论】:

  • 这对我来说没有多大意义。根据我的经验,帧指针寄存器是堆栈指针的某种偏移量,而返回地址位于代码空间中。代码和堆栈空间混合的情况很少见。你想在这里完成什么?
  • @Michael 我认为他的意思是,返回地址存储的堆栈上的偏移量是多少(相对于帧指针)? (不过,我同意你关于“你想要完成什么”的观点。)

标签: callstack


【解决方案1】:

很大程度上取决于架构、编译器等

尝试反汇编一些玩具程序并找出答案(参见 linux 中的objdump

【讨论】:

    【解决方案2】:

    返回地址在堆栈帧中的 EBP + 4 处,但由于您尚未控制执行流程,因此您将无法像在缓冲区溢出中那样使用它。

    您应该寻找的是返回地址与缓冲区的距离。这是每个漏洞所独有的,需要预测介于两者之间的任何内容,否则您很可能只会导致进程转储。

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 2015-12-02
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多