Linux中进程的代码段的位置在哪里?

张宏博

我想在进程关闭时恢复堆栈和堆。因此,如果二进制文件保持不变,则我必须确保函数的地址在每次启动时都保持不变。

有谁可以帮忙吗?

斯蒂芬·基特

如果启用了地址空间布局随机化(在大多数当前的Linux系统上就是这种情况),那么否,函数地址每次加载二进制文件时都不会保持不变。应用了各种不同的布局随机化,并且如果二进制与位置无关,则可以应用所有随机化。特别是,库ASLR意味着每次都将库加载到一个不同的位置,而执行ASLR意味着每次也都将位置无关的二进制加载到一个不同的位置。

Ubuntu Wiki很好地总结了各种可能性。它们不是特定于Ubuntu的。

您可以通过更改/proc/sys/kernel/randomize_va_space设置来禁用所有这些功能(不建议这样做):0将禁用ASLR。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章