Для работы минимального исполняемого файла ELF требуется только заголовок ELF и хотя бы один программный заголовок. Однако, когда я запускаю strip на коротком исполняемом файле, он решает не выбрасывать таблицу заголовков разделов или раздел строк разделов, оставляя их рядом, хотя они не имеют цели (насколько я знаю) для выполнения программы.
Есть ли причина, по которой они не удаляются полосой? Есть ли другая утилита, которая удаляет все, что не требуется для запуска исполняемого файла? Я попытался вручную отредактировать исполняемый файл code-golfing, который создавал, чтобы удалить заголовки разделов, и он, кажется, работает нормально и намного меньше.
executable
elf
strip
Mystor
источник
источник
Ответы:
Документация для GNU binutils
strip
ссылается на причину, но не является явной, упоминая в описании--only-keep-debug
этогоТо есть, если не указано явно с помощью этой
-R
опции,strip
будут сохранены заголовки разделов, чтобы помочь другим программам (в том числеgdb
) выполнять свою работу.Страница Правильное использование команды strip (часть Reverse Engineering с использованием операционной системы Linux ) отмечает
и далее перечисляет несколько полезных вещей, которые могут быть оставлены позади - для анализа «раздетого» исполняемого файла.
В Learning Linux Binary Analysis , это подтвердил, отметив , что заголовки разделов , как правило , хватает только , когда кто - то намеренно удалил их, и что без заголовков разделов,
gdb
иobjdump
практически бесполезны.источник