Gdb 当每次地址不同时,如何使用strace-i进行调试
[b77d0424]打开(“etc/shadow”,仅0rdu)=-1次访问(权限被拒绝) 每次运行[b77d0424]时,都会更改为另一个地址 我不能使用gdb*0xb77d0424然后使用c来查找lib64/libc.so.6 这似乎与linux编程书中提到的不一样 在虚拟盒中运行Ubuntu13.04之后 每次运行[b77d0424]时,都会更改为另一个地址 这是因为,您可以使用Gdb 当每次地址不同时,如何使用strace-i进行调试,gdb,strace,Gdb,Strace,[b77d0424]打开(“etc/shadow”,仅0rdu)=-1次访问(权限被拒绝) 每次运行[b77d0424]时,都会更改为另一个地址 我不能使用gdb*0xb77d0424然后使用c来查找lib64/libc.so.6 这似乎与linux编程书中提到的不一样 在虚拟盒中运行Ubuntu13.04之后 每次运行[b77d0424]时,都会更改为另一个地址 这是因为,您可以使用setarch-R命令禁用它 默认情况下,GDB也会禁用地址随机化,但在GDB和strace下获得相同地址的可能
setarch-R
命令禁用它
默认情况下,GDB也会禁用地址随机化,但在GDB和strace
下获得相同地址的可能性非常小,因为这两种工具下的执行环境非常不同。您实际上不需要在strace
下找到地址,您可以在GDB中找到它:
catch syscall open
运行
open
系统调用之一。使用继续
,直到您停在感兴趣的位置。现在使用info registers
查找第一个参数的地址,并在该地址上设置一个监视点
每次运行[b77d0424]时,都会更改为另一个地址
这是因为,您可以使用setarch-R
命令禁用它
默认情况下,GDB也会禁用地址随机化,但在GDB和strace
下获得相同地址的可能性非常小,因为这两种工具下的执行环境非常不同。您实际上不需要在strace
下找到地址,您可以在GDB中找到它:
catch syscall open
运行
现在,您正在查看程序执行的
open
系统调用之一。使用继续
,直到您停在感兴趣的位置。现在使用info registers
查找第一个参数的地址,并在该地址上设置一个观察点。如何使用GDB在系统调用时中断:如何禁用ASLR:如何使用GDB在系统调用时中断:如何禁用ASLR: