在gdb中设置断点对地址空间有什么影响?

时间:2012-01-02 22:51:16

标签: memory gdb breakpoints

我最近读了一篇关于缓冲区溢出的文本,提到设置断点可以稍微抵消你的内存地址。我想我前几天试图覆盖EIP时遇到了这个问题:当我没有设置断点时,漏洞效果似乎有效,但是当设置断点时会导致段错误。发生了什么事?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我最近阅读了一篇关于缓冲区溢出的文本,提到设置断点可以稍微抵消你的内存地址。

要么您不明白该文字的内容,要么文字错误。很难说这两种可能性中的哪一种是正确的,因为你没有提供文本链接或实际引用。

更新

  

http://www.deadc0de.info/2009/11/08/solution-level5-of-smashthestack-io/

     

“正如我上面所说,我们的回信地址完全被覆盖了   带有C的堆栈(0x43)。但是,当您设置断点时   printf()地址可能会改变。“

这句话是虚假的。设置断点不能也不会更改存储%ebp和返回地址的堆栈位置。

设置断点通常不会影响内存布局,但可能会影响页面保护:为了插入断点,调试器通常会ptrace(PTRACE_POKETEXT, ...)。这可能会或可能不会导致.text页面断点可写(取决于操作系统)。

  

发生了什么事?

您没有提供足够的数据来回答这个问题。