首页 > 其他分享 >(转载)ASLR 地址空间随机化

(转载)ASLR 地址空间随机化

时间:2022-12-18 23:34:10浏览次数:67  
标签:kernel ASLR space 随机化 地址 转载 randomize

ASLR,全称为 Address Space Layout Randomization,地址空间布局随机化。该技术在 kernel 2.6.12 中被引入到 Linux 系统,它将进程的某些内存空间地址进行随机化来增大入侵者预测目的地址的难度,从而降低进程被成功入侵的风险。当前 Linux、Windows 等主流操作系统都已经采用该项技术。

Linux 平台上 ASLR 分为 0,1,2 三级,用户可以通过内核参数 randomize_va_space 进行等级控制,不同级别的含义如下:

  • 0 = 关
  • 1 = 半随机;共享库、栈、mmap() 以及 VDSO 将被随机化
  • 2 = 全随机;除了 1 中所述,还会随机化 heap

注:系统默认开启 2 全随机模式,PIE 会影响 heap 的随机化。

通过读写 /proc/sys/kernel/randomize_va_space 内核文件可以查看或者修改 ASLR 等级:

$ cat /proc/sys/kernel/randomize_va_space       # 查看 ASLR
$ echo 0 > /proc/sys/kernel/randomize_va_space  # 关闭 ASLR

开启 ASLR,在每次程序运行时的时候,装载的可执行文件和共享库都会被映射到虚拟地址空间的不同地址处;而关掉 ASLR,则可以保证每次运行时都会被映射到虚拟地址空间的相同地址处。

关掉 ASLR,可以保证在可执行程序和共享库不发生变更的情况下,每次执行时的进程地址空间映射表的一致。我们可通过运行时某动态符号(不知其名)的地址,减去其所在的共享库在地址映射表中起始地址,算出它相对于共享库数据段中的偏移,然后借助 objdump、readelf, nm 等工具查看对应 ELF 文件中全局符号的相对偏移,就可以反推出该符号的名字。这种调试手段对于那些被 strip 掉符号表的程序而言非常有效。

当使用 gdb 调试一个程序时,GDB 会自动关掉 ASLR。可以通过以下命令将它打开:

$ (gdb) set disable-randomization off
$ (gdb) info poc map # 查看进程地址映射表

原文地址:https://joydig.com/linux-address-space-layout-randomization/

标签:kernel,ASLR,space,随机化,地址,转载,randomize
From: https://www.cnblogs.com/arisskz6/p/16991268.html

相关文章

  • (转载)linux中atoi函数
    标准C库函数#include<stdlib.h>原型:intatoi(constchar*str);功能:将字符串str转换成一个整数并返回结果。参数str以数字开头,当函数从str中读到非......
  • (转载)Linux系统调用--getpid/getppid函数详解
    【getpid/getppid系统调用】功能描述:getpid返回当前进程标识,getppid返回父进程标识。用法:#include<sys/types.h>#include<unistd.h>pid_tgetpid(void);pid_tge......
  • (转载)Linux C 中断言assert()使用简介
    assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE(0),程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句,它的作......
  • Git入门教程(转载)
    考虑到CVS的一些局限性,最近和同事在公司推行Git。   其实,如果推行SVN的化,可能推行的难度会降低很多。不过lark说既然推行一个新的版本管理工具,总要花费一定的时间进......
  • 使用 udev 高效、动态地管理 Linux 设备文件(转载)--2
    清单6.简单说明键值对的例子KERNEL是匹配键,NAME和MODE是赋值键。这条规则的意思是:如果有一个设备的内核设备名称为sda,则该条件生效,执行后面的赋值:在 ​​/dev​​下......
  • 添加Udev规则,让Linux自动挂载U盘(转载)
    如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在......
  • LFS开始之前 - 转载
    我这里以一个初学者的身份再进一步的补充说明几个简单问题(作为初学者扫盲),以及6.3英文官方手册的几个BUG(一定要看),余下的部份大家去看看上面的网站就可以了。1、我在一个操作......
  • 实用HTML,CSS和JavaScript速查表--转载
    速查表是帮你记住东西的有效工具。Web设计师和开发者经常使用的快捷键简表会使他们在网上的工作效率大大提高。事实上,速查表就是来帮助我们把日常中最常用到的信息聚集起来......
  • golang标准库的排序算法---sort包(转载)
    sort——排序算法该包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。但是这四种排序方法是不公开的,它们只被用于sort包内部使用。所以在对数据集合排......
  • M1 MacBook pro 配置mongodb(转载cv)
    https://blog.csdn.net/qq991658923/article/details/121436106bb一下:新mac到了,配置完用的真的舒服,主机笔电双持ing。很难想象pro都这么强劲,那些用max32+1T的大神们原地......