A documentação para o GNU binutilsstrip
alude à razão, mas não é explícita, mencionando na descrição --only-keep-debug
dessa
Nota - os cabeçalhos das seções removidas são preservados, incluindo seus tamanhos, mas o conteúdo da seção é descartado. Os cabeçalhos da seção são preservados para que outras ferramentas possam corresponder o arquivo debuginfo ao executável real, mesmo que esse executável tenha sido realocado para um espaço de endereço diferente.
Ou seja, a menos que solicitado explicitamente por meio da -R
opção, strip
manterá os cabeçalhos das seções para ajudar outros programas (inclusive gdb
) a fazerem seu trabalho.
A página Uso correto do comando strip (parte da Engenharia Reversa usando o Sistema Operacional Linux ) observa
A execução do strip
comando em um executável é o método de proteção de programa mais comum. Em sua operação padrão, o strip
comando remove a tabela de símbolos e qualquer informação de depuração de um executável. É assim que é normalmente usado. No entanto, ainda há informações úteis que não são removidas.
e continua a enumerar várias coisas úteis que podem ser deixadas para trás - para análise de um executável "despojado".
No Learning Linux Binary Analysis , isso é reiterado, comentando que os cabeçalhos de seção normalmente só estão ausentes quando alguém os removeu deliberadamente , e sem os cabeçalhos de seção gdb
e objdump
são quase inúteis.