pyelftools: una herramienta escrita en Python para analizar ELFs

noviembre 06, 2020 , 0 Comments

Formato ELF Linux (binario)

La herramienta pyelftools es una utilidad escrita usando el lenguaje de programación Python y que se presenta como un gran recurso para poder analizar ejecutables binarios en formato ELF de Linux. Es cierto que existen otras muchas utilidades similares, pero algunas tienen ciertas limitaciones que puedes solventar si usas esta otra.

Por ejemplo, es una herramienta universal y altamente especializada en estos formatos para poder explorar todo lo que necesitas de estos formatos. Así que si necesitas estudiar este tipo de ficheros binarios de Linux, con tener instalado Python 3.6 o superior en tu distro favorita, y el propio paquete pyelftools (puedes conseguirlo fácilmente usando pip), podrás hacer verdaderas maravillas…

Pero antes de nada, seguro que te estás preguntando qué es eso de ELF, si aún no lo conoces. Pues bien, son las siglas de Executable and Linkable Format, un tipo de fichero ejecutable binario para Linux, aunque también se puede emplear para otros tipos como las bibliotecas compartidas, volcados de memoria, etc.

En un principio se desarrolló para plataformas de 32-bit, pero en la actualidad se ha extendido también para las de 64-bit. Además, no es único de Linux, sino que se usa de forma mayoritaria en la mayoría de sistemas tipo UNIX, incluidos macOS, los *BSD, Solaris, etc. Y ha venido a sustituir a otros algo más antiguos como a.out, COFF, etc.

NOTA: aunque por defecto gcc sigue generando un binario llamado a.out si no le asignas un nombre, debes saber que es realmente un ELF a pesar de que se llame como los antiguos binarios…

Dicho esto, si quieres comenzar a analizar estos ELFs en tu distro Linux, entonces puedes seguir los pasos de instalación y leer más información desde su página de GitHub. ¡Y a someter a los ELF a un serio escrutinio con pyelftools!


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.