ASLR


proc/sys/kernel/randomize_va_space用于控制Linux下 内存地址随机化机制(address space layout randomization),有以下三种情况
 
0 - 表示关闭进程地址空间随机化。
1 - 表示将mmap的基址,stack和vdso页面随机化。
2 - 表示在1的基础上增加栈(heap)的随机化。
 
 
 
 
在Ubuntu 10.04.3 LTS下
 
 
root@bt:~# cat /proc/sys/kernel/randomize_va_space 2在android 2.3.3下
 
 
root@bt:~# adb shell# cat /proc/sys/kernel/randomize_va_space1在Android 4.1.2下(完整的ASLR和PIE在android 4.1后加入)
 
root@bt:~# adb shell# cat /proc/sys/kernel/randomize_va_space2
 
 
测试ASLR代码如下:
 
 
#include <stdio.h>unsigned long find_start(void){__asm__("movl %esp, %eax");}int main(){printf("0x%x \n", find_start());}在Ubuntu 10.04.3 LTS下运行结果:
 
 
root@bt:~# ./aslrtest 0xbfda8808 root@bt:~# ./aslrtest 0xbfa39598 root@bt:~# ./aslrtest 0xbf968b18 root@bt:~# ./aslrtest 0xbfe490b8 root@bt:~# ./aslrtest 0xbf8a7ad8
 
参考:
http://www.2cto.com/os/201212/178306.html
http://www.2cto.com/os/201212/178307.html
https://en.wikipedia.org/wiki/Address_space_layout_randomization  

相关内容

    暂无相关文章