Eu já vi discussões antes sobre a magia ELF, mais recentemente os comentários nesta questão de troca de pilhas de segurança . Já vi isso mencionado antes e nos meus próprios logs de inicialização. Mas não tenho certeza do que é.
A página de manual no elf está um pouco acima da minha cabeça, pois eu não faço idiomas C ou de nível inferior.
Como alguém que usa o Linux como um sistema operacional diário, o que é ELF?
Respostas:
Desde a página de manual que você faz referência:
O ELF define o formato binário de arquivos executáveis usados pelo Linux. Quando você invoca um executável, o sistema operacional deve saber como carregar o executável na memória corretamente, como resolver dependências dinâmicas da biblioteca e, em seguida, onde pular para o executável carregado para começar a executá-lo. O formato ELF fornece essas informações. A mágica ELF é usada para identificar arquivos ELF e são apenas os primeiros bytes de um arquivo:
ou
Esses 16 bytes identificam inequivocamente um arquivo como um executável ELF. Muitos formatos de arquivo possuem bytes "mágicos" que realizam a mesma tarefa - identificando um tipo de arquivo.
fonte
readelf
reconhece até 16 bytes.e_ident
), dos quais os 4 primeiros bytes são o número mágico (EI_MAG0
atravésEI_MAG3
)/bin
, com certeza, é quase certamente um binário ELF. Algum arquivo aleatório que você baixou ... não há como dizer."Números mágicos" é o nome dado a seqüências constantes de bytes (geralmente) no início dos arquivos, usadas para marcar esses arquivos como tendo um formato de arquivo específico. Eles servem a um propósito semelhante às extensões de arquivo.
Consulte a entrada do arquivo de jargão para obter mais informações.
Por exemplo, as imagens PNG sempre começam com os mesmos oito bytes: 137 80 78 71 13 10 26 10
Portanto, os números mágicos ELF são os bytes no início dos arquivos elf que os identificam como tal.
fonte