gpt4 book ai didi

exploit - 是否可以使用缓冲区溢出覆盖 %eax?

转载 作者:行者123 更新时间:2023-12-04 17:18:49 25 4
gpt4 key购买 nike

我知道程序堆栈看起来有点像这样(从高到低):

   EIP   |   EBP   |   local variables

但是我在哪里可以找到 %eax ,和其他通用寄存器?是否可以使用缓冲区溢出覆盖它们?

更新:最后,我什至不必覆盖 %eax ,因为原来程序指向 %eax在某个时候用户输入。

最佳答案

根据定义,寄存器不在 RAM 中。寄存器在 CPU 中并且没有地址,因此您不能用缓冲区溢出覆盖它们。但是,寄存器很少,因此编译器实际上将它们用作最常用堆栈元素的一种缓存。这意味着虽然不能溢出到严格意义上的寄存器,但在 RAM 中被覆盖的值迟早会被加载到寄存器中。

(在 Sparc CPU 中,寄存器作为堆栈缓存策略甚至是硬连线的。)

在您的架构中,EIP 和 EBP 不在堆栈中;堆栈上的相应插槽是将重新加载这两个寄存器的区域(在函数退出时)。另一方面,EAX 是一个通用寄存器,代码将在这里和那里使用它,没有严格的约定。

关于exploit - 是否可以使用缓冲区溢出覆盖 %eax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com