Answers:
根据一篇文章,ASLR在Linux系统上的有效性如何?,您可以使用该/proc/sys/kernel/randomize_va_space
界面在Linux中配置ASLR 。
支持以下值:
- 0 –无随机化。一切都是静态的。
- 1 –保守随机。共享库,堆栈,
mmap()
VDSO和堆是随机的。- 2 –完全随机化。除了上一点中列出的元素外,通过管理的内存
brk()
也是随机的。
因此,要禁用它,请运行
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
并再次启用它,运行
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
这将在重启后无法幸存,因此您必须在中进行配置sysctl
。添加一个/etc/sysctl.d/01-disable-aslr.conf
包含以下内容的文件:
kernel.randomize_va_space = 0
应该永久禁用它。
brk()
什么?
该/proc/sys/kernel/randomize_va_space
界面控制整个系统的ASLR。
如果您不想在系统范围内进行更改,请使用ADDR_NO_RANDOMIZE
个性临时禁用ASLR。可以在命令前加上setarch
及其-R
选项(manpage)来控制此个性标志。
我发现使用以下命令打开一个全新的外壳真的很方便:
setarch `uname -m` -R /bin/bash
这将为禁用ASLR的您打开一个新的Bash shell,包括所有子进程(程序从该shell运行)。
完成操作后,只exit
需要外壳即可。
顺便说一句,在i386上,ulimit -s unlimited
可以“禁用” ASLR。
编辑(2016年4月):ulimit -s unlimited
已修复并分配为CVE-2016-3672。
uname -m
除了可以使用之外arch
,还可以使用,而二进制文件实际上可以实现相同的功能。
arch
不能作为一个busybox的小程序