gpt4 book ai didi

linux - Ubuntu 16.10 在运行时随机化函数地址

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

我使用 -finstrument-functions 来分析函数的进入和退出。在函数进入和退出时,我打印进入或退出的函数的地址(参数 func),然后使用 nm 将地址解析为符号名称转换。升级到Ubuntu 16.10后,我发现func参数的地址总是很高;正如文本部分所预期的那样,所有函数过去都靠近进程地址空间的开头。我查看了/proc/PID/maps,文本部分现在实际上从更高的地址开始,这很奇怪,因为它们的范围与 nm 显示的完全不同,因此直接翻译不再起作用。地址不仅要高得多,而且是随机的。而这一点,我很难理解:我理解出于安全原因随机化可写部分的地址,但文本部分不可写。无论如何,我的问题是关于文本部分的地址空间:知道 Ubuntu 16.10 上发生了什么吗?如何禁用此行为?

编辑:事实证明,Canonical 默认添加了位置无关的可执行文件支持到 GCC。我仍在寻找如何禁用此功能。

谢谢。

最佳答案

在 ChangeLog 的 GCC 部分下(可在此处找到:https://wiki.ubuntu.com/YakketyYak/ReleaseNotes)

“我们已将 GCC 修改为在 amd64 和 ppc64el 架构上默认编译具有位置独立可执行支持的程序,以提高地址空间布局随机化提供的安全优势。”

我阅读了 GCC 的手册页,要禁用此选项,只需添加 -no-pie。

关于linux - Ubuntu 16.10 在运行时随机化函数地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511649/

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