Бинарная аппаратура Pie/pic elf

Предположим, у меня есть исполняемый файл elf 32 или 64 бита. Этот двоичный файл был скомпилирован с опциями pic/pie.

Это означает, что все функции отображаются на случайный адрес в памяти.

Что мне делать, если мне нужно провести инструментирование или реверс-инжиниринг для такого двоичного файла?

Есть ли способ подключить бинарный загрузчик Linux, чтобы всегда давать одни и те же адреса?

Спасибо


person Bob5421    schedule 31.07.2018    source источник


Ответы (1)


Это означает, что все функции отображаются на случайный адрес в памяти.

Нет, это не означает это.

Если включена рандомизация адресов, двоичный файл PIE будет загружаться со случайным базовым адресом от запуска к запуску, но все функции и данные будут перемещаться вместе.

То есть, если &foo == 0x12345600 и &bar == 0x12345700 в одном исполнении, то дельта между ними всегда будет 0x100 в последующих исполнениях (пока не будет перекомпонован бинарник).

Есть ли способ подключить бинарный загрузчик Linux, чтобы всегда давать одни и те же адреса?

Есть несколько способов:

  • Рандомизацию адресов можно глобально отключить с помощью
    echo 0 > /proc/sys/kernel/randomize_va_space
  • Используйте setarch ... -R a.out
  • Запустите программу под GDB, которая отключит рандомизацию через систему personality. вызов.
person Employed Russian    schedule 02.08.2018