Volver |

Binarios ejecutables

Introducción

Existen archivos binarios tanto ejecutables como no ejecutables. En estas secciones hablaremos de los archivos binarios ejecutables.

En linux, se puede utilizar el comando file para identificar ante qué tipo de archivo binario estamos.

Si este comando muestra que el archivo es de tipo ELF (Executable and Likable Format), efectivamente es un archivo binario ejecutable.

Formato ELF

Este formato es ampliamente usado en Linux.

 

Se puede utilizar el comando readelf para poder obtener información de la cabecera del archivo binario ejecutable.

readelf -h archivo_binario

 

Uso de gdb

Se puede utilizar la herramienta GDB (GNU Debugger) para leer el código en ensamblador de un binario. Por ejemplo, si el binario se llama labsis:

$ gdb labsis

Adentro de gdb se puede hacer:

(gdb) set disassembly-flavor intel
(gdb) disass main

La palabra main indica que se va obtener el assembler de la función main.

 

También se pueden visualizar todas las funciones del binario con:

(gdb) info functions

 

Referencias:

https://mundo-hackers.weebly.com/binariesreversing.html

Uso del comando file de Linux

Cuando uno ejecuta:

file archivo_binario

Puedo retornar una salida similar a:

archivo_binario: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 2.6.24, BuildID[sha1]=cd439ea515ecfbb1280cfacd93e0703ed9c4d38c, not stripped

Prestar especial atención en el "not stripped". Un binario ejecutable stripped indica que va a tener los símbolos de debug. En caso que sea not stripped no los va a tener.

Además, figura la arquitectura para la cual fue compilado el programa. En este caso para Intel 80386.

Analizando syscall ejecutadas por un binario ejecutable

strace archivo_binario

 

En este artículo participaron: