Volver a la página principal
domingo 22 septiembre 2024
46

Cómo utilizar Dumpbin: Una guía completa

En el mundo de la programación, especialmente cuando trabajamos con archivos binarios y desarrollos a nivel bajo en Windows, la herramienta Dumpbin es una de las más útiles. Dumpbin es una utilidad proporcionada por Microsoft que permite inspeccionar archivos binarios de manera detallada, incluyendo archivos ejecutables (EXE), bibliotecas de enlaces dinámicos (DLL) y archivos de objetos generados por el compilador. Esta herramienta es parte del conjunto de herramientas del compilador de Visual Studio, y proporciona una gran cantidad de información técnica que resulta indispensable para la depuración y análisis de estos archivos.

¿Qué es Dumpbin?

Dumpbin es una herramienta de línea de comandos que permite inspeccionar archivos binarios y proporciona información clave sobre el contenido de estos archivos, tales como:

  • Tabla de símbolos: los símbolos de las funciones y variables presentes en el archivo.
  • Secciones del archivo: las diferentes partes en que se divide el binario.
  • Dependencias de las DLL: lista de las bibliotecas necesarias para que el archivo funcione correctamente.
  • Cabeceras del archivo: información técnica como el tipo de archivo, la arquitectura y la versión del compilador.

Esta herramienta es especialmente útil para desarrolladores que trabajan con aplicaciones nativas de Windows y necesitan analizar el comportamiento o la estructura interna de un ejecutable o una biblioteca. Además, es útil para entender cómo está vinculado un archivo binario y depurar problemas relacionados con dependencias de bibliotecas.

Cómo acceder a Dumpbin

Para poder utilizar Dumpbin, necesitas tener instalado Visual Studio o, al menos, el conjunto de herramientas de compilación de Visual Studio que incluye Dumpbin.exe. Este archivo se puede encontrar dentro de las herramientas del compilador de Visual Studio, que suelen estar ubicadas en un directorio similar a este:

C:\Program Files (x86)\Microsoft Visual Studio\20XX\Community\VC\Tools\MSVC\XX.XX.XXXXX\bin\Hostx64\x64

O bien, puedes ejecutar Dumpbin directamente desde el símbolo del sistema del desarrollador de Visual Studio, que configura las rutas necesarias para acceder a estas herramientas sin especificar la ruta completa.

Paso 1: Abrir el símbolo del sistema de Visual Studio

1. Abre Visual Studio.

2. Ve al menú de Herramientas y selecciona Símbolo del sistema para desarrolladores o simplemente busca "Developer Command Prompt" en el menú de inicio de Windows.

Una vez abierto, estarás listo para utilizar Dumpbin y otros comandos relacionados con el compilador.

Paso 2: Comando básico de Dumpbin

El comando básico para utilizar Dumpbin es el siguiente:

dumpbin [opciones] archivo

Donde archivo es el archivo binario que deseas analizar, y las opciones especifican qué tipo de información deseas obtener.

Opciones más comunes de Dumpbin

Existen numerosas opciones disponibles en Dumpbin, cada una de las cuales proporciona un tipo de información específico sobre el archivo binario. A continuación, detallamos algunas de las más utilizadas:

1. /HEADERS: Ver la cabecera del archivo

Esta opción permite ver información básica sobre el archivo, como el tipo de archivo (EXE, DLL), la arquitectura del procesador (x86, x64), la versión del subsistema y otras propiedades técnicas.

Ejemplo:

dumpbin /headers archivo.exe

El resultado incluirá algo como esto:

Dump of file archivo.exe

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
     8664 machine (x64)
       5 number of sections
60AE9A00 time date stamp Tue Jun 06 12:01:20 2023
       0 file pointer to symbol table
       0 number of symbols
      F0 size of optional header
     2022 characteristics

2. /SYMBOLS: Ver la tabla de símbolos

La opción /SYMBOLS muestra una lista de símbolos presentes en el archivo, como funciones, variables y otros elementos que pueden ser utilizados por otros archivos.

Ejemplo:

dumpbin /symbols archivo.obj

Este comando resulta especialmente útil cuando se necesita depurar un archivo de objetos y entender qué funciones y variables están disponibles.

3. /DEPENDENTS: Ver las dependencias de las DLL

Si deseas conocer qué bibliotecas o archivos DLL necesita un archivo para ejecutarse correctamente, la opción /DEPENDENTS es la adecuada.

Ejemplo:

dumpbin /dependents archivo.dll

Esto mostrará una lista de bibliotecas vinculadas dinámicamente que se cargan cuando se ejecuta el archivo.

Dump of file archivo.dll

File Type: DLL

  Image has the following dependencies:

    KERNEL32.dll
    USER32.dll
    GDI32.dll
    ADVAPI32.dll

4. /EXPORTS: Ver las funciones exportadas

Este comando muestra una lista de las funciones que el archivo DLL exporta, es decir, las funciones que pueden ser utilizadas por otros programas o bibliotecas.

Ejemplo:

dumpbin /exports archivo.dll

El resultado incluirá una lista de las funciones exportadas, como:

ordinal hint RVA      name

      1    0 00001010 Func1
      2    1 00001020 Func2
      3    2 00001030 Func3

5. /IMPORTS: Ver las funciones importadas

Si deseas ver qué funciones está utilizando tu archivo binario desde otras bibliotecas o DLLs, la opción /IMPORTS te mostrará esa información.

Ejemplo:

dumpbin /imports archivo.exe

Este comando mostrará qué funciones están siendo importadas desde otras bibliotecas en el archivo binario.

Section contains the following imports:

    KERNEL32.dll
        7C8097F3 ExitProcess
        7C809BF5 CreateFileA
        7C80A417 ReadFile

Ejemplos prácticos

Inspeccionar un ejecutable

Imagina que has creado un ejecutable llamado miPrograma.exe y deseas obtener más información sobre sus dependencias y estructura interna. Podrías ejecutar los siguientes comandos:

1. Para ver la cabecera del archivo:

dumpbin /headers miPrograma.exe

2. Para listar las dependencias de DLL:

dumpbin /dependents miPrograma.exe

3. Para inspeccionar las funciones importadas:

dumpbin /imports miPrograma.exe

Depuración de una DLL

Si estás trabajando con una biblioteca dinámica miBiblioteca.dll y necesitas ver qué funciones exporta, puedes utilizar:

dumpbin /exports miBiblioteca.dll

De esta manera, sabrás qué funciones pueden ser utilizadas por otros programas que carguen esa DLL.

Conclusión

Dumpbin es una herramienta poderosa que todo desarrollador de software debe tener en su arsenal, especialmente cuando se trata de proyectos en C++ o cualquier otro lenguaje que genere archivos binarios nativos. Gracias a Dumpbin, puedes analizar archivos ejecutables y bibliotecas con un alto nivel de detalle, facilitando la depuración y optimización de tu código.

Aprender a utilizar Dumpbin y comprender su salida puede ahorrarte horas de trabajo, permitiéndote identificar rápidamente problemas como dependencias faltantes, símbolos no definidos, o arquitecturas incorrectas. Así que no dudes en probar estas opciones y explorarlas en tus propios proyectos.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer