X86 ASLR是否影响地图文件?

X86 ASLR是否影响地图文件?,x86,elf,aslr,position-independent-code,X86,Elf,Aslr,Position Independent Code,ASLR是否影响地图文件? AFAIK对于64位二进制文件,文本段的默认虚拟地址为0x400000,但在解析/proc/pid/maps文件时,我发现操作系统显然在使用文本段和数据段的随机地址,即: 564992f16000-564992f17000 r-xp 00000000:2c 306966/tmp/foo 564993116000-564993117000 r--p 00000000:2c 306966/tmp/foo 564993117000-564993118000 rw-p 00

ASLR是否影响地图文件? AFAIK对于64位二进制文件,文本段的默认虚拟地址为0x400000,但在解析/proc/pid/maps文件时,我发现操作系统显然在使用文本段和数据段的随机地址,即:


564992f16000-564992f17000 r-xp 00000000:2c 306966/tmp/foo
564993116000-564993117000 r--p 00000000:2c 306966/tmp/foo
564993117000-564993118000 rw-p 000010000 00:2c 306966/tmp/foo


有人能解释一下这里发生了什么吗?

如果主程序是PIE(位置独立可执行文件),那么它的加载地址也会随机化。即使禁用ASLR(比如通过在GDB下使用默认值运行)也不会将其返回0x400000,它通常是地址0x554000(但这可能取决于内核)。

相关:。发行版已经开始提供配置为在默认情况下生成饼图可执行文件的gcc。