Включен ли ASLR libc рандомизирует адрес функции - PullRequest
0 голосов
/ 06 декабря 2018

Это основной вопрос, касающийся ASLR

Если у меня есть двоичный файл, для которого не включена ASLR.Однако в используемом им файле libc включена функция ASLR, и тогда адрес system () в файле libc будет каждый раз рандомизироваться?

Или адрес будет одинаковым каждый раз, поскольку сам основной двоичный файл не имеетASLR включен?

В GDB я получаю адрес функции system (), как показано ниже:

 (gdb) break main
 (gdb) run
 (gdb) print &system

Итак, это возвращает адрес system () из libc илиPLT основного бинарного файла?

Кроме того, если у меня есть файл libc из другой системы, то как я могу найти внутри него адрес system ()?По умолчанию, если я запускаю gdb в моем основном двоичном файле, он найдет адрес system () для libc в локальной системе.Должен ли я сказать gdb загрузить файл libc (который я получил из удаленной системы)?

1 Ответ

0 голосов
/ 07 декабря 2018

Однако в используемом им файле libc включена функция ASLR, тогда будет ли каждый раз произвольно назначаться адрес system () в файле libc?

Да (при условии, что вы не отключили ASLR)другими способами).Обратите внимание, что GDB по умолчанию отключает ASLR.Если вы хотите наблюдать эффекты ASLR при запуске вашей программы под GDB, вам нужно set disable-randomization off.

Кроме того, если у меня есть файл libc из другой системы, то как я могу найти адрессистема () внутри?

Это просто: nm libc.so.6 | grep ' system'.Однако это говорит только о смещении в пределах libc.so.6, вам также необходимо знать, где libc.so.6 был загружен в другой системе.

Этот ответ можетбыть полезным для вас.

...