保存的EBP仍与EBP注册相关联?

时间:2017-11-08 02:30:36

标签: assembly disassembly buffer-overflow

我是一个倒车的新手,最近我正在研究缓冲区溢出,以了解它是如何工作的。

我知道在汇编中看到函数时会调用函数:

push ebp             ; Save the caller's ebp
mov ebp, esp         ; Update ebp with current stack frame's esp

首先,我猜测一旦调用者的ebp保存在堆栈中,它只会在你弹出它时被更改。 在我对缓冲区溢出进行了一些试验和错误之后,我注意到如果我制作了一个有效载荷(如77777777 \ x0e \ x86 \ x04 \ x08)来覆盖保存的EIP,那么EBP寄存器也会被有效载荷改变。

我知道有效负载会改变保存的eip和保存的调用者ebp的值,但是如何更改ebp寄存器? 或堆栈中的条目指向的地址是否仍然与寄存器本身相关联?

1 个答案:

答案 0 :(得分:0)

当缓冲区溢出中覆盖ebp指向的存储值时,不会修改寄存器。您确定自己不是:(a)在ebp中存储的地址查看内存的值吗? (b)在ret电话后查看ebp的价值?