El comando Objdump Linux

El comando Objdump Linux

"El objdump es una utilidad de línea de comandos utilizada para mostrar información sobre un objeto en sistemas de tipo UNIX. El comando, cuando se usa, obtiene la información de un archivo de objeto incluso cuando no tiene su código fuente. Por lo tanto, puede ser una herramienta de depuración para archivos de objetos, especialmente cuando se trabaja con programas de compiladores."

Esta guía cubre los diferentes usos del comando objdump con ejemplos. Échale un vistazo.

Usos del comando objdump

El objdump tiene 6 propósitos principales:

  • Para depurar el archivo de objeto
  • Recuperar encabezados de archivo
  • Obtener el nombre bfdname
  • Recuperando el encabezado del archivo
  • Obtener despojos de un archivo
  • Desmontar un archivo de objeto

Su sintaxis básica es:

$ objdump

Hay muchas opciones para usar con el comando objdump, y puede ver la página de ayuda para verlas.

$ objdump --help

Este artículo utilizará /bin /echo como nuestro archivo de objeto para nuestros ejemplos. Sin embargo, puede usar otros archivos de objetos como programas C. El uso sigue siendo el mismo.

Trabajando con objdump

Mostrar encabezados de archivo del archivo de objeto

La opción -f, cuando se usa con el comando objdump, recupera todos los encabezados del archivo asociados con un archivo de objeto dado, como se muestra a continuación. Recuerde, estamos utilizando /bin /eco, que es un archivo ejecutable binario para el comando echo como nuestro objeto en este caso.

$ objdump -f /bin /eco

La salida resultante que muestra los encabezados del archivo será:

Puede notar el formato y los encabezados del archivo de objeto desde la salida.

Para obtener los encabezados de archivo específicos del objeto

Si necesita mostrar encabezados de archivo específicos para el archivo de objeto que está utilizando, use la opción -p.

$ objdump -p /bin /eco

Contenido del encabezado de la sección de visualización

Cada archivo tiene diferentes encabezados de sección. Si necesita mostrar el contenido de cada uno de los encabezados de sección, use la opción -h.

$ objdump -h /bin /eco

En este caso, la salida fue:

Desde la salida, puede notar que los diferentes encabezados de sección están numerados a partir de 1, y cada encabezado de sección tiene su tamaño, VMA, LMA, archivo y Algn.

Tamaño: representa el tamaño de la sección cargada.

VMA: representa la dirección de memoria virtual

LMA: representa la dirección de memoria lógica

Limar: representa el desplazamiento de la sección desde el inicio del archivo.

Algn: representa la alineación de la sección.

Los otros detalles, como asign, datos, lectura y contenido, son las diferentes banderas que representan si la sección está lectura o está cargada.

Mostrar información de todos los encabezados

También puede obtener toda la información sobre los encabezados en el archivo de objeto. Para hacer esto, use la opción -x.

$ objdump -x /bin /eco

En este ejemplo, la salida parcial para el comando anterior será:

Para obtener el contenido del ensamblador de la sección ejecutable

Para obtener el contenido del ensamblador de la sección ejecutable, use la opción -d.

$ objdump -d /bin /eco

En este ejemplo, la salida parcial es:

La salida se divide en secciones ejecutables, y para cada una, su contenido de ensamblador se muestra como se muestra. Por ejemplo, puede ver la sección ".init ”y su contenido de ensamblador correspondiente debajo de él antes de continuar a la siguiente sección ejecutable del archivo de objeto.

Obtenga contenido de ensamblador de cada sección

El -d muestra el contenido del ensamblador de solo las secciones ejecutables. Sin embargo, use la opción si necesita el contenido para todas las secciones de archivo.

$ objdump -d /bin /eco

Para obtener todo el contenido de todas las secciones

Para esto, use la opción -s

$ objdump -s /bin /eco

La salida para todas las secciones y su contenido será:

Mostrar información de depuración

La opción -g muestra toda la información de depuración disponible del archivo de objeto.

$ objdump -g /bin /eco

Mostrar contenido de la tabla de símbolos

Si el archivo de objeto tiene una tabla de símbolos, puede mostrar su contenido usando la opción -t

$ objdump -t /bin /eco

Conclusión

Un comando objdump es una herramienta útil para programadores que tratan con los compiladores. El comando tiene múltiples usos, y hemos cubierto el uso de ejemplo más común. También puede consultar su página Man para obtener más detalles sobre cómo puede usar la herramienta. Además, el comando puede ser un poco abrumador. Entonces, sigue practicándolo más. Mis mejores deseos!