Можно ли преобразовать исполняемый файл без пирога в исполняемый файл без исходного кода? - PullRequest
3 голосов
/ 25 июня 2019

Я хочу преобразовать исполняемый файл в общую библиотеку, используя lief, и заметил, что он поддерживает только исполняемый файл pie.Поэтому мне интересно, есть ли способ, при котором исполняемый файл без пирога можно преобразовать в исполняемый файл пирога.

1 Ответ

3 голосов
/ 25 июня 2019

Нет, нет, если только при соединении не использовалась скрытая опция -q. ET_EXEC ELF-файлы связаны для определенного адреса загрузки и имеют адресные ссылки, разрешенные и завершенные в качестве непосредственных в их потоках команд и простых чисел в их разделах данных. Информация о том, что эти числа относятся к адресам объектов или функций и не являются просто обычными постоянными числами, уже уже потеряна и принципиально невосстановима. Исполняемые файлы PIE, с другой стороны, имеют записи динамического перемещения по всем адресным ссылкам, чтобы их можно было исправлять во время загрузки, и обычно имеют все такие ссылки в сегменте данных (GOT или статические данные), чтобы текстовый сегмент был чисто только для чтения и обмена.

Так что нет, нет способа делать то, что ты хочешь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...