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

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

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

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

通过用下面这个程序,可以检查是否修改成功(x86_64):

// gcc -g stack.c -o stack
//
unsigned long sp(void){ asm("mov %rsp, %rax");}
int main(int argc, char **argv)
{unsigned long esp = sp();printf("Stack pointer (ESP : 0x%lx)\n",esp);return 0;
}

关闭前运行结果

-bash-4.1# ./stack
Stack pointer (ESP : 0x7fff50162e50)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fff5d023730)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7ffff9982180)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffb23612a0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7ffffd5a4980)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffbac61bf0)

关闭后运行结果

-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)
-bash-4.1# ./stack
Stack pointer (ESP : 0x7fffffffeaf0)

参考:
http://en.wikipedia.org/wiki/Address_space_layout_randomization
http://xorl.wordpress.com/2011/01/16/linux-kernel-aslr-implementation/

关闭Linux 内存地址随机化机制相关推荐

  1. Linux内存管理回收机制

    Linux内存管理回收机制 1.Linux内存管理简介     Linux将所管理的内存划分为内存节点(node).内存分区(zone)和页框(page). 1.1.内存节点(node)     依据 ...

  2. linux的地址随机化ASLR,[翻译]Linux (x86) Exploit 开发系列教程之六(绕过ASLR - 第一部分)...

    前提条件: 经典的基于堆栈的缓冲区溢出 虚拟机安装:Ubuntu 12.04(x86) 在以前的帖子中,我们看到了攻击者需要知道下面两样事情 堆栈地址(跳转到shellcode) libc基地址(成功 ...

  3. linux 内核地址随机化,GNU/Linux内核的地址随机化

    地址空间布局随机化(ASLR)是一项增加安全性的技术,***者发现漏洞之后开始编写exploit时如果要考虑绕过ASLR这会增加编写exploit的难度,最早是2001年Grsecurity社区(强悍 ...

  4. linux开发板换内存,关于6410开发板Linux内存地址0Xc0008000的由来

    查看6410数据手册可以看到,内存开始地址应该是0x50000000,而实际在real6410开发板使用过程中U-boot加载Linux内核都是加载到0xC0008000处开始运行,我猜测(还没有看代 ...

  5. Linux内存映射mmp机制详解

    原文地址:http://blog.csdn.net/joejames/article/details/37958017 一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词 ...

  6. linux内存地址断点,开发一个 Linux 调试器(三):寄存器和内存

    上一篇博文中我们给调试器添加了一个简单的地址断点.这次,我们将添加读写寄存器和内存的功能,这将使我们能够使用我们的程序计数器.观察状态和改变程序的行为. 注册我们的寄存器 在我们真正读取任何寄存器之前 ...

  7. Linux 内存机制

    转载链接:http://blog.csdn.net/tianlesoftware/article/details/5463790 一. 内存使用说明 Free 命令相对于top 提供了更简洁的查看系统 ...

  8. Linux 内存机制以及CPU、内存、硬盘的关系、物理内存以及虚拟内存的关系

    本文有些篇幅较长,但如果认真读下来,相信你会收获颇丰!! document linux内存机制 CPU 内存 虚拟内存 硬盘 物理内存 内存和虚拟内存 跟 Windows 完全不同的 Linux 内存 ...

  9. Linux内存技术分析(上)

    Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...

  10. 探索 Linux 内存模型--转

    引用:http://www.ibm.com/developerworks/cn/linux/l-memmod/index.html 理解 Linux 使用的内存模型是从更大程度上掌握 Linux 设计 ...

最新文章

  1. [JavaScript]走进 JAVASCRIPT 黑洞
  2. 基于脑电和特征加权阶段训练的驾驶员疲劳状态估计
  3. innobackupex 数据库备份
  4. Protocol Buffer入门——轻松搭建java环境 .
  5. python字符串内建函数_python字符串内建函数
  6. Akka边学边写(3)-- ByteString介绍
  7. [原]浅谈几种服务器端模型——反应堆模式(epoll 简介) - _Boz - 博客园
  8. latex中的对与错(对号与叉号)
  9. 腾讯 信鸽测试demo
  10. Ubuntu16 Nvidia驱动安装(.run文件安装)
  11. Oracle归档日志路径的三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n区别
  12. 配置 manjaro
  13. 从目标检测数据集中扣出所需类别进行分类
  14. win7交换机共享宽带连接上网
  15. 学系统集成项目管理工程师(中项)系列17a_范围管理(上)
  16. WIN10 登录samba服务器提示秘密不正确
  17. Java环境下GDAL / OGR环境配置与入门
  18. C语言编译器(C语言编程软件)
  19. java中的常用类-1
  20. HTML预格式化文本pre标签

热门文章

  1. 【android自定义控件】TextView详解及自定义一
  2. 移动端学习笔记(黑马教程)-基础概念
  3. yum 安装、 rpm安装、 源码编译安装
  4. centos7安装python2.6_centos7.2下yum和python重装问题及解决方法
  5. 均线策略python代码_Python版商品期货多品种均线策略
  6. 环境php5.2+mysql_php环境搭建问题(简单记录二------php5.2不加载mysql扩展)
  7. 英文c语言试题,C语言今日练习试题(主要练习英文阅读能力)
  8. mac 二进制安装mysql_教程方法;在mac下安装mysql二进制分发版的方法(不是dmg的)电脑技巧-琪琪词资源网...
  9. java pattern 转义_浅谈关于Java正则和转义中\\和\\\\的理解
  10. 命令行无法运行php,php文件在命令行可以顺利运行,在浏览器上无法正常运行