2

[b77d0424] open("etc/shadow",0_RDONLY) = -1 EACCESS(权限被拒绝)

每次我运行 [b77d0424] 更改为另一个地址

我不能使用 gdb b *0xb77d0424 然后 c 来查找 lib64/libc.so.6

似乎与 linux 编程书中提到的不一样

在虚拟框中运行 ubuntu 13.04 后

4

1 回答 1

4

每次我运行 [b77d0424] 更改为另一个地址

这是因为地址空间布局随机化setarch -R而发生的,您可以使用命令禁用它。

GDB默认禁用地址随机化,但是你在 GDB 及下面获得相同地址的机会strace非常小,因为这两种工具下的执行环境完全不同。您实际上不需要在 下查找地址strace,您可以在 GDB 中找到它:

  • catch syscall open
  • run

您现在正在查看open您的程序执行的系统调用之一。一直使用continue到你感兴趣的地方停下来。现在使用info registers来找到第一个参数的地址,并在那个地址上设置一个观察点。

于 2013-06-11T14:59:11.347 回答