Почему `не удаляет 'заголовки разделов из исполняемых файлов ELF?


9

Для работы минимального исполняемого файла ELF требуется только заголовок ELF и хотя бы один программный заголовок. Однако, когда я запускаю strip на коротком исполняемом файле, он решает не выбрасывать таблицу заголовков разделов или раздел строк разделов, оставляя их рядом, хотя они не имеют цели (насколько я знаю) для выполнения программы.

Есть ли причина, по которой они не удаляются полосой? Есть ли другая утилита, которая удаляет все, что не требуется для запуска исполняемого файла? Я попытался вручную отредактировать исполняемый файл code-golfing, который создавал, чтобы удалить заголовки разделов, и он, кажется, работает нормально и намного меньше.


Возможно, он не удален, потому что он может сломать некоторые программы / среды выполнения
cat

Ответы:


3

Документация для GNU binutilsstrip ссылается на причину, но не является явной, упоминая в описании --only-keep-debugэтого

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

То есть, если не указано явно с помощью этой -Rопции, stripбудут сохранены заголовки разделов, чтобы помочь другим программам (в том числе gdb) выполнять свою работу.

Страница Правильное использование команды strip (часть Reverse Engineering с использованием операционной системы Linux ) отмечает

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

и далее перечисляет несколько полезных вещей, которые могут быть оставлены позади - для анализа «раздетого» исполняемого файла.

В Learning Linux Binary Analysis , это подтвердил, отметив , что заголовки разделов , как правило , хватает только , когда кто - то намеренно удалил их, и что без заголовков разделов, gdbи objdumpпрактически бесполезны.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.