Документация для GNU binutilsstrip
ссылается на причину, но не является явной, упоминая в описании --only-keep-debug
этого
Примечание. Заголовки разделов разделов сохраняются, включая их размеры, но содержимое раздела отбрасывается. Заголовки разделов сохраняются, так что другие инструменты могут сопоставить файл debuginfo с реальным исполняемым файлом, даже если этот исполняемый файл был перемещен в другое адресное пространство.
То есть, если не указано явно с помощью этой -R
опции, strip
будут сохранены заголовки разделов, чтобы помочь другим программам (в том числе gdb
) выполнять свою работу.
Страница Правильное использование команды strip (часть Reverse Engineering с использованием операционной системы Linux ) отмечает
Выполнение strip
команды на исполняемом файле является наиболее распространенным методом защиты программы. В операции по умолчанию strip
команда удаляет таблицу символов и любую отладочную информацию из исполняемого файла. Вот как это обычно используется. Тем не менее, есть еще полезная информация, которая не удаляется.
и далее перечисляет несколько полезных вещей, которые могут быть оставлены позади - для анализа «раздетого» исполняемого файла.
В Learning Linux Binary Analysis , это подтвердил, отметив , что заголовки разделов , как правило , хватает только , когда кто - то намеренно удалил их, и что без заголовков разделов, gdb
и objdump
практически бесполезны.