为了进行一些缓冲区溢出测试,我使用以下命令在 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^