Linux内存管理:ASLR、KASLR与物理内存组织
1. 什么是用户模式地址空间布局随机化(User-mode ASLR)
用户模式地址空间布局随机化(User-mode ASLR)通常就是我们所说的ASLR。启用它意味着每个进程的用户空间映射都具备这种保护机制。实际上,启用ASLR后,每次运行用户模式进程时,其绝对内存映射都会有所不同。
Linux从很早之前(2005年的2.6.12内核版本开始)就支持ASLR了。内核在 procfs 中有一个可调整的伪文件,可用于查询和(以root权限)设置ASLR状态,这个文件是 /proc/sys/kernel/randomize_va_space 。它有三种可能的值,具体含义如下表所示:
| 可调值 | /proc/sys/kernel/randomize_va_space 中该值的解释 |
| — | — |
| 0 | (用户模式)ASLR关闭;也可以在启动时通过传递内核参数 norandmaps 来关闭。 |
| 1 | (用户模式)ASLR开启:基于 mmap(2) 的分配、栈和vDSO页面会被随机化。这也意味着共享库加载位置和共享内存段会被随机化。 |
| 2 | (用户模式)ASLR开启:包含上述值1的所有内容,此外堆的位置也会被随机化(从2.6.25内核版本开始);这是操作系统的默认值。 |
用户模式ASLR可以在启动时通过引导加载程序向内核传递 norandmaps 参数来关闭。
Linux内存管理:ASLR、KASLR与物理内存组织解析
超级会员免费看
订阅专栏 解锁全文
41

被折叠的 条评论
为什么被折叠?



