A documentação do GNU binutils strip
alude ao motivo, mas não é explícito, mencionando na descrição de --only-keep-debug
que
Note - the section headers of the stripped sections are preserved, including their sizes, but the contents of the section are discarded. The section headers are preserved so that other tools can match up the debuginfo file with the real executable, even if that executable has been relocated to a different address space.
Ou seja, a menos que seja explicitamente informado por meio da opção -R
, strip
reterá cabeçalhos de seção para ajudar outros programas (incluindo gdb
) a realizar seu trabalho.
A página Uso correto do comando strip (parte do Engenharia reversa usando o sistema operacional Linux )
Running the
strip
command on an executable is the most common program protection method. In its default operation, thestrip
command removes the symbol table and any debugging information from an executable. This is how it is typically used. However, there is still useful information that is not removed.
e continua a enumerar várias coisas úteis que podem ser deixadas para trás - para análise de um executável "despojado".
Em Aprendendo a Análise Binária do Linux , isto é reiterado, comentando os cabeçalhos das seções normalmente só estão faltando quando alguém removeu-os deliberadamente e, sem os cabeçalhos das seções, gdb
e objdump
são quase inúteis.