Влияет ли ASLR на файл карт?
Влияет ли ASLR на файл карт? AFAIK Виртуальный адрес по умолчанию для текстового сегмента - 0x400000 для 64-разрядных двоичных файлов, но при анализе файла /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
Может кто-нибудь объяснить, что здесь происходит?
1 ответ
Если основной программой является PIE (Position-Independent Executable), ее адрес загрузки также будет рандомизирован. Даже отключение ASLR (скажем, при запуске под GDB со значениями по умолчанию) не вернет его к 0x400000, обычно это будет адрес 0x555555554000 (но это может зависеть от ядра).