He visto una discusión antes sobre la magia ELF, más recientemente los comentarios en esta pregunta de intercambio de la pila de seguridad . Lo he visto mencionado antes, y lo he visto en mis propios registros de arranque ... Pero no estoy seguro de qué es.
La página de manual de elf está un poco sobre mi cabeza, ya que no hago C ni lenguajes de nivel inferior.
Como alguien que usa Linux como sistema operativo todos los días, ¿qué es ELF?
Respuestas:
Desde la página del manual al que hace referencia:
ELF define el formato binario de los archivos ejecutables utilizados por Linux. Cuando invoca un ejecutable, el sistema operativo debe saber cómo cargar el ejecutable en la memoria correctamente, cómo resolver las dependencias de la biblioteca dinámica y luego dónde saltar al ejecutable cargado para comenzar a ejecutarlo. El formato ELF proporciona esta información. ELF magic se usa para identificar archivos ELF y son simplemente los primeros bytes de un archivo:
o
Estos 16 bytes identifican inequívocamente un archivo como un ejecutable ELF. Muchos formatos de archivo tienen bytes "mágicos" que realizan la misma tarea: identificar un tipo de archivo.
fuente
readelf
reconoce que son 16 bytes.e_ident
), de los cuales los primeros 4 bytes son el número mágico (aEI_MAG0
travésEI_MAG3
)/bin
, seguro, es casi seguro que es un binario ELF. Sin embargo, algunos archivos aleatorios que descargaste ... no se sabe."Números mágicos" es el nombre dado a las secuencias constantes de bytes (generalmente) al comienzo de los archivos, que se utilizan para marcar esos archivos como de un formato de archivo particular. Sirven un propósito similar a las extensiones de archivo.
Consulte la entrada del archivo de jerga para obtener más información.
Por ejemplo, las imágenes PNG siempre comienzan con los mismos ocho bytes: 137 80 78 71 13 10 26 10
Por lo tanto, los números mágicos de ELF son los bytes al comienzo de los archivos de elfos que los identifican como tales.
fuente