我正在尝试 ASLR 在 Centos 7.2.1115 x86_64 中的工作方式。
这是我/proc/$pid/maps两次运行 Firefox(在 Pastebin 上)的转储:
#1
#2
基本上,ASLR 有效。它随机化 .data 和 .text 偏移量。
但是,它以相同的顺序打包所有库和可执行文件,并且没有间隙。(嗯,大多数情况下。有几个变化,但它们看起来纯粹是偶然的。)
因此,一旦单个地址被泄露,ASLR 的整个部分就会消失。
我的问题是,这是现在常见的情况吗?哪些系统可以解决这个问题以及如何解决?
我的意思是,64位地址空间很大,你可以随机把每个库扔到它上面,然后检查它是否与任何东西重叠,最多重试几次后成功放置。然而,我通过谷歌搜索找到的最好的已经实现的解决方案是 Android 上的库加载顺序随机化。