Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371694
  • 博文数量: 89
  • 博客积分: 3178
  • 博客等级: 中校
  • 技术积分: 965
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-09 15:31
文章分类

全部博文(89)

文章存档

2013年(10)

2012年(33)

2011年(41)

2008年(5)

分类: iOS平台

2013-03-26 23:50:54

关闭Linux 内存地址随机化机制, 禁用进程地址空间随机化.可以将进程的mmap的基址,stack和vdso页面地址固定下来. 可以通过设置kernel.randomize_va_space内核参数来设置内存地址随机化的行为.

目前randomize_va_space的值有三种,分别是[0,1,2]

0 - 表示关闭进程地址空间随机化。
1 - 表示将mmap的基址,stack和vdso页面随机化。
2 - 表示在1的基础上增加栈(heap)的随机化。


[plain] view plaincopy
  1. # echo 0 >/proc/sys/kernel/randomize_va_space   


通过用下面这个程序,可以检查是否修改成功(x86_64):
  1. // gcc -g stack.c -o stack  
  2. //  
  3. unsigned long sp(void){ asm("mov %rsp, %rax");}  
  4. int main(int argc, char **argv)  
  5. {  
  6.     unsigned long esp = sp();  
  7.     printf("Stack pointer (ESP : 0x%lx)\n",esp);  
  8.     return 0;  
  9. }  


关闭前运行结果

[cpp] view plaincop
  1. -bash-4.1# ./stack  
  2. Stack pointer (ESP : 0x7fff50162e50)  
  3. -bash-4.1# ./stack  
  4. Stack pointer (ESP : 0x7fff5d023730)  
  5. -bash-4.1# ./stack  
  6. Stack pointer (ESP : 0x7ffff9982180)  
  7. -bash-4.1# ./stack  
  8. Stack pointer (ESP : 0x7fffb23612a0)  
  9. -bash-4.1# ./stack  
  10. Stack pointer (ESP : 0x7ffffd5a4980)  
  11. -bash-4.1# ./stack  
  12. Stack pointer (ESP : 0x7fffbac61bf0)  

关闭后运行结果
  1. -bash-4.1# ./stack  
  2. Stack pointer (ESP : 0x7fffffffeaf0)  
  3. -bash-4.1# ./stack  
  4. Stack pointer (ESP : 0x7fffffffeaf0)  
  5. -bash-4.1# ./stack  
  6. Stack pointer (ESP : 0x7fffffffeaf0)  
  7. -bash-4.1# ./stack  
  8. Stack pointer (ESP : 0x7fffffffeaf0)  
阅读(6143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~