Quais seções são necessárias para um executável ELF utilizável?
-
26-09-2019 - |
Pergunta
Estou criando um arquivo executável ELF e preciso saber quais seções são exigidas pelo sistema operacional para carregá-lo e executá-lo.
Detalhes:
OS: Ubuntu 10.04 (64-bit) Kernel version: 2.6.32-24 Architecture: i386
Sei que provavelmente seria necessário o seguinte:
- .texto
- .symtab
- .rel.texto
Existem outros?
Solução
"Um tutorial Whirlwind sobre como criar executáveis ELF realmente pequenos para Linux" contém informações sobre como (ab)usar as diversas seções ELF para tornar um executável o menor possível.Ele também contém um link para a especificação ELF se você precisar de mais informações.(Também é uma leitura bastante divertida.) Talvez lhe diga o que você precisa saber?
Outras dicas
Decidi tentar remover sistematicamente seções de um arquivo ELF gerado pelo GCC.
Consegui remover muitas das seções, mas elas não puderam ser removidas e o executável ainda é executado sem uma falha de segmentação:
.dynsym .dynstr .gnu.version_r .rel.plt .init .plt .text .fini .ctors .dtors .dynamic .got.plt .data .strtab