Как временно отключить ASLR (рандомизация размещения адресного пространства)?

Я использую Ubuntu 12.04 32-бит сейчас для некоторого эксперимента Мне нужно отключить ASLR, как я могу это сделать? и после этого, что я должен сделать, чтобы снова включить ASLR?

1
задан 11 July 2013 в 06:19

3 ответа

Интерфейс /proc/sys/kernel/randomize_va_space управляет ASLR в системном масштабе.

Если вы не хотите общесистемного изменения, используйте функцию ADDR_NO_RANDOMIZE для временного отключения ASLR. Управление этим значком личности может выполняться с помощью setarch и его опции -R (manpage), добавляя команду.

Мне очень удобно открывать совершенно новую оболочку, используя:

setarch `uname -m` -R /bin/bash

Это откроет новую оболочку Bash для вас с отключенным ASLR, включая все дочерние процессы (запущены программы из этой оболочки)

Просто exit оболочка, как только вы закончите.

Кстати, на i386, ulimit -s unlimited может " отключить "ASLR.

EDIT (Apr 2016): ulimit -s unlimited был исправлен и назначен личность .

20
ответ дан 24 May 2018 в 20:09
  • 1
    Незначительная деталь в духе util-linux: вместо uname -m можно также использовать arch, двоичный код, который по существу делает то же самое. – drumfire 8 January 2016 в 19:16
  • 2
    @drumfire arch недоступен в качестве загруженного апплета – zhangyoufu 29 October 2016 в 06:25
  • 3
    +1 для возвращения через два года и добавления информации о CVE. – Multisync 16 April 2018 в 10:37

Более постоянные способы отключения ASLR должны быть сохранены в виртуальной машине по очевидным причинам.

, чтобы проверить возможность перезаписывать обратные адреса фрейма стека и т. д., вам нужно будет скомпилировать без стековых канарейков , а для выполнения кода в стеке необходимо скомпилировать с -z execstack, сделав

$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c
2
ответ дан 24 May 2018 в 20:09

Вы можете просто использовать sudo sysctl kernel.randomize_va_space=0 для временного отключения ASLR.

1
ответ дан 24 May 2018 в 20:09

Другие вопросы по тегам:

Похожие вопросы: