Um executável ELF mínimo requer apenas o cabeçalho ELF e pelo menos um cabeçalho do programa para funcionar. No entanto, quando executo strip em um executável curto, ele decide não jogar fora a tabela de cabeçalho da seção ou a seção de strings da seção, mantendo-as por perto, embora elas não tenham nenhum objetivo (tanto quanto eu saiba) para a execução do programa.
Existe uma razão para que eles não sejam removidos por tira? Existe outro utilitário que remove tudo o que não é necessário para a execução do executável? Eu tentei editar manualmente o executável de código de golfe que eu estava criando para remover os cabeçalhos de seção, e parece funcionar bem e ser muito menor.
executable
elf
strip
Mystor
fonte
fonte
Respostas:
A documentação para o GNU binutils
strip
alude à razão, mas não é explícita, mencionando na descrição--only-keep-debug
dessaOu seja, a menos que solicitado explicitamente por meio da
-R
opção,strip
manterá os cabeçalhos das seções para ajudar outros programas (inclusivegdb
) a fazerem seu trabalho.A página Uso correto do comando strip (parte da Engenharia Reversa usando o Sistema Operacional Linux ) observa
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
eobjdump
são quase inúteis.fonte