我在一台Linux电脑上写了一个C程序,它显示main函数地址。ASLR似乎被启用了,因为如果一个程序启动几次,地址就不一样了。我试着用gdb调试这个程序,当程序通过gdb运行时,main函数的地址是一样的。所以看起来gdb可以禁用ASLR。gdb是如何做到的?
main
balp4ylt1#
在Linux上,这是使用personality库调用完成的。在MacOS上,这是使用传递给posix_spawn的posix_spawnattr_t中设置的标志来完成的,可以在这里找到这样做的代码。
posix_spawnattr_t
1条答案
按热度按时间balp4ylt1#
在Linux上,这是使用personality库调用完成的。
在MacOS上,这是使用传递给posix_spawn的
posix_spawnattr_t
中设置的标志来完成的,可以在这里找到这样做的代码。