Linux平台ASLR分为0、1、2三级,用户可以通过一个内核参数randomize_va_space进行控制,他们对应的效果如下:
0:不开启ASLR
1:运行栈和共享库以及部分堆的随机化
2:在1的基础上包括所有堆的随机化
注:ALSR不负责代码段和数据段和地址随机化,这项工作PIE负责,但是只有ASLR开启的情况下,PIE才会生效。
查看、开启、关闭ASLR
1、查看 cat /proc/sys/kernel/randomize_va_space
2、更改
0:关闭ASLR
sudo bash -c "echo 0 > /proc/sys/kernel/randomize_va_space"
1:保留的ASLR
sudo bash -c "echo 1 > /proc/sys/kernel/randomize_va_space"
2:完全的ASLR
sudo bash -c "echo 2 > /proc/sys/kernel/randomize_va_space"