Linux中的内存随机化

7_R3X

我创建了一个简单的C程序,每次将其加载到GDB中时,都会看到分配给该程序指令的相同内存地址。例如,一个函数what()总是在内存位置0x000055555555472d中加载。实际上,每次执行的堆栈都是完全相同的(不仅是堆栈的内容,而且是rsp指向的内存地址。

我知道可以在Linux中通过将“ / proc / sys / kernel / randomize_va_space”设置为0来禁用ASLR,但是我的Debian系统中的值为2。

root@Sierra ~ % cat /proc/sys/kernel/randomize_va_space 
2

根据我对ASLR的了解,这些地址应在每次运行时随机分配。我的问题是为什么会这样?我做错什么了吗?

马克·普洛特尼克

默认情况下,gdb在Linux上禁用地址空间随机化,覆盖kernel.randomize_va_spacesysctl变量可能具有的任何值

gdb命令set disable-randomization off将关闭此功能,并且gdb之后创建的任何调试目标都将根据的值打开或关闭ASLR kernel.randomize_va_space

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章