Links é o melhor elfo para ser apresentado aqui |
Antes de começar, readelf é um comando que exibe informações sobre arquivos no formato ELF que, apesar de a palavra elf em inglês significar elfo (é; temos elfos, gnomos, anões e magos no Linux. Basicamente o senhor dos aneis), ELF aqui vem de é a abreviação de Executable and Linking Format que é o padrão de binários que temos hoje e que substituiu o antigo padrão a.out. Quando digitamos o comando file seguido de um binário, vemos essas informações
Executando o comando file no binário do toybox, podemos ver a descrição ELF 64-bit bem no inicio. |
Para saber mais sobre o formato ELF, digite man 5 elf no terminal ou simplesmente clique aqui.
Já o comando readelf é um comando do pacote gnu binutils utilizado para realizar leitura exatamente de arquivos binários neste formato (como o próprio nome sugere). A diferença entre o comando readelf e o comando strings (que já utilizei no canal sobre o driver do dualshock para mostrar que Linux possui suporte ao joystick do PS4) é que o readelf serve somente para leitura de binários, enquanto que o strings serve para leitura de qualquer tipo de arquivo (menos diretório). Vale também ressaltar que ambos os comandos exibem informações diferentes (mesmo em binários). Esse comando é utilizado para inclusive trabalhar em engenharia reversa.
Para saber mais sobre o comando readelf, digite man 1 readelf no terminal ou clique aqui.
Leitura das informações do binários do toybox utilizando o comando readelf. |
A implementação básica inicial do readelf com saída próxima ao binutils será utilizável com scripts e iniciou como uma implementação do comando nm (man 1 nm. Não irei comentar sobre o comando nm aqui para não tornar o assunto muito longo) até que mudaram de ideia e que precisam de muito trabalho no readelf para implementar o nm. Então, pode ser que ao escrever o código para o readelf, automaticamente o código seja aproveitado para a implementação do comando nm.
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.