ASLR是否会影响地图文件? AFAIK对于64位二进制文件,文本段的默认虚拟地址为0x400000,但是在解析 / proc / pid / maps 文件时,我发现操作系统显然在使用随机地址作为文本和数据细分,即:
564992f16000-564992f17000 r-xp 00000000 00:2c 306966 /tmp/foo
564993116000-564993117000 r--p 00000000 00:2c 306966 /tmp/foo
564993117000-564993118000 rw-p 00001000 00:2c 306966 /tmp/foo
有人可以解释这里发生了什么吗?
答案 0 :(得分:3)
如果主程序是PIE(与位置无关的可执行文件),其加载地址也将被随机分配。即使禁用ASLR(例如通过在具有默认值的GDB下运行)也不会将其返回到0x400000,它通常是地址0x555555554000(但这可能取决于内核)。