@luaPower

Как рандомизировать адреса функций в ELF-файле?

Здравствуйте.

Я компилирую некоторый исполняемый файл в среде Linux, с помощью GCC с флагом -O2.
На выходе получаю ELF-файл, в котором функции из одного и того же исходного файла имеют подряд идущие адреса:

# nm binfile | sort
...
000000000040ca40 T queue_create                                                                                                     
000000000040cab0 T queue_free
000000000040cad0 T queue_append
000000000040cb00 T queue_remove
...


Как можно с помощью флагов компилятора/линкера или любых стандартных UNIX-средств расположить адреса функций в исполняемом файле в случайном порядке? То есть, чтобы не было группировки функций по принадлежности к одному и тому же исходному файлу.

UPD Иначе говоря, нужно поменять последовательность, в которой компоновщик присвоил адреса функциям.
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Так они не подряд идут. У них дистанция для первых двух - 112 байт. Далее 32. Упаковка. А ты что хотел? Чтоб бинарник был дырявый как сыр и имел 1 Гигабайт размером?
Ответ написан
@Miron11
Пишу sql 20 лет. Срок :)
смещение адреса функций можно отрегулировать после сборки, есть всякие редакторы для выполнимых
случайные адреса функций внутри блока, это ответственность так называемых обфускаторов, как правило это отдельные утилиты встроенные в пакеты сборки, возможно GCC имеет встроенный тогда да, может быть флаг, по которому функции будут иметь случайные адреса
поскольку конкретный флаг легко ищется в яндексе не сложным запросом, будьте так добры, поделитесь в комментарии, когда найдете :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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