gpt4 book ai didi

c - GDB:查找存储函数返回地址的堆栈内存地址?

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:27 25 4
gpt4 key购买 nike

我正致力于在我的 Raspberry Pi(禁用 ASLR)上产生缓冲区溢出。我有一个程序,它有一个 main function , 一个 vulnerable function和一个不应该被调用的函数,evil function .

我的主函数在某个时候调用了易受攻击的函数,但恶意函数显然从未被调用过。我需要使用缓冲区溢出来确保它确实如此。

到目前为止我得到的是主函数中易受攻击函数的返回地址,我想用恶意函数的起始地址覆盖它。我认为这是正确的做法。

但是我无法弄清楚我如何以这种方式检查 gdb 中的内存,以便找到返回地址存储在哪个堆栈地址。有一个可用的示例,它在程序运行时通过 gdb 输入一串字符,然后它们查找堆栈指针周围的内存,不知何故这是存储返回地址的地方。这对我来说似乎很奇怪,因为他们怎么知道他们的输入被存储在离急需的返回地址只有几个地址的地方。

我的问题是我是否可以使用 gdb 在堆栈中“搜索”我的返回地址。

最佳答案

Raspberry Pi 运行的是 ARM 微 Controller ,因此您应该阅读有关 ARM 架构和调用约定的更多信息。

您应该阅读有关 ARM 寄存器的更多信息,尤其是堆栈指针(缩写为 SP)以及链接寄存器(缩写为 LR:这是存储函数返回地址的地方)。参见例如这个 question一个很好的解释。

要用 gdb 直观地检查这些寄存器的值,您可以使用指令 info registers,(如果您键入 i r 也可以工作)。查看doc了解更多详情。

关于c - GDB:查找存储函数返回地址的堆栈内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061541/

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