我如何重新启用 ASLR?

我如何重新启用 ASLR?

为了进行一些缓冲区溢出测试,我使用以下命令在 Ubuntu 14.04 中禁用了 ASLR:

echo "0" >/proc/sys/kernel/randomize_va_space

但是,在我尝试再次启用它之后,我编写的程序每次都在相同的地址空间布局中运行。

我已使用以下值再次启用它,但 ASLR 不再起作用(在我的系统中它的默认值为 2):

echo "2" >/proc/sys/kernel/randomize_va_space
echo "1" >/proc/sys/kernel/randomize_va_space

答案1

根据引入的内容ASLR 在 Linux 系统上的效果如何?,程序必须编译为位置独立可执行文件(馅饼) 来获取 ASLR 好处。

对于 GCC 编译器,-fPIE应使用该开关来编译使用 ASLR 的程序:

gcc -fPIE -o ./test.o  test.c^

相关内容