- DUMPBIN permite listar las dependencias de DLLs o ejecutables en Windows.
- La opción /DEPENDENTS muestra las bibliotecas requeridas por un archivo.
- Es posible automatizar su uso desde PowerShell para tareas complejas.
- Otras opciones útiles incluyen /HEADERS, /EXPORTS o /IMPORTS.
Analizar las dependencias de un archivo DLL es una tarea habitual cuando se investiga el comportamiento de una aplicación, se depura un problema de carga de librerías o simplemente se busca entender qué componentes adicionales necesita un ejecutable para funcionar correctamente. En este contexto, la herramienta DUMPBIN de Microsoft se ha convertido en uno de los recursos más útiles para quienes trabajan con archivos binarios en Windows, ya sea en desarrollo, análisis forense, ingeniería inversa o mantenimiento de software.
DUMPBIN, también conocido como Microsoft COFF Binary File Dumper, es una herramienta de línea de comandos incluida en el entorno de desarrollo Visual Studio. Permite inspeccionar todo tipo de archivos binarios compatibles con el formato COFF (Common Object File Format), como ejecutables (.exe), bibliotecas estáticas (.lib) o bibliotecas dinámicas (.dll). Entre sus funcionalidades más utilizadas, destaca precisamente la posibilidad de ver las dependencias que un archivo DLL o ejecutable necesita para su ejecución.
¿Para qué sirve ver las dependencias de una DLL?
Cuando una aplicación lanza un error indicando que no encuentra una DLL determinada, lo primero que se suele sospechar es que esa dependencia no está disponible en el sistema. Utilizar DUMPBIN en estos casos permite identificar con precisión qué otras bibliotecas necesita un archivo DLL, ayudando a resolver errores de carga o distribución de software.
Además, en entornos empresariales o en proyectos donde se redistribuyen aplicaciones completas, saber qué DLLs son necesarias permite incluirlas correctamente en el instalador o validar que ya están presentes en el sistema de destino.
Cómo acceder a DUMPBIN
La manera más sencilla de ejecutar esta herramienta es abrir el Símbolo del Sistema de desarrollador para Visual Studio. Este entorno ya viene configurado con todas las variables de entorno necesarias, incluyendo la ruta de DUMPBIN.
Por ejemplo, para Visual Studio 2017 el ejecutable suele ubicarse en una ruta como:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86
Una vez ubicados en ese directorio, ya se puede invocar la herramienta de la siguiente manera:
dumpbin.exe /dependents ruta\al\archivo.dll
Comando /DEPENDENTS de DUMPBIN
La opción /DEPENDENTS es la encargada de mostrar la lista de bibliotecas DLL desde las que el archivo especificado importa funciones. Es decir, aquellas de las que depende para su correcto funcionamiento.
Este comando no proporciona información sobre las funciones concretas que se están utilizando (para eso se usaría /IMPORTS), pero es clave para identificar qué DLLs deben estar presentes en el sistema para que la ejecución no falle.
Un ejemplo real de salida generada al ejecutar:
dumpbin /DEPENDENTS MathClient.exe
Proporciona una salida como la siguiente:
Dump of file MathClient1322.exe File Type: EXECUTABLE IMAGE Image has the following dependencies: MathLibrary.dll MSVCP140D.dll VCRUNTIME140D.dll ucrtbased.dll KERNEL32.dll
Estos nombres de archivo indican las DLL que el ejecutable MathClient1322.exe necesita.
Otras opciones útiles de DUMPBIN
La herramienta DUMPBIN incluye varias opciones útiles para desarrolladores y analistas de seguridad entre otras:
- /HEADERS: Muestra los encabezados del archivo. Incluye información como tipo de archivo, arquitectura, etc.
- /SYMBOLS: Lista la tabla de símbolos, útil para depuración o ingeniería inversa.
- /EXPORTS: Muestra las funciones exportadas por el archivo. Es decir, aquellas que puede utilizar otro ejecutable o DLL.
- /IMPORTS: Muestra las funciones específicas que se están importando desde otras DLLs.
Ejemplo práctico desde PowerShell
Además de utilizar DUMPBIN desde el símbolo del sistema, también se puede usar desde PowerShell, facilitando su integración en scripts automatizados o flujos de trabajo.
Un ejemplo típico sería examinar las dependencias de una DLL como zipfldr.dll
ubicada en C:\Windows\System32
. La secuencia de comandos sería la siguiente:
cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86" .\dumpbin.exe /dependents C:\Windows\System32\zipfldr.dll
Este comando ejecuta DUMPBIN desde PowerShell sin problemas y muestra directamente las dependencias.
Obtener los nombres de funciones exportadas mediante script
Más allá de las dependencias, también es posible querer saber qué funciones exporta una DLL. Esto es clave, por ejemplo, cuando se desarrollan aplicaciones que necesitan llamar directamente a funciones externas.
Desde PowerShell se puede ejecutar DUMPBIN usando la opción /EXPORTS y luego procesar la salida para obtener los nombres de las funciones. Por ejemplo:
$content = .\dumpbin.exe /exports C:\Windows\System32\zipfldr.dll
Posteriormente, se depura la salida quitando líneas vacías y se trabaja con cadenas para identificar la sección relevante que empieza por ordinal hint RVA name
y termina en Summary
.
Este método automatizado facilita realizar auditorías, documentación o validaciones sin inspección visual.
Alternativas a DUMPBIN
En algunos casos, puede que no se quiera depender de Visual Studio. Existen alternativas externas como dependencias en forma de DLL que permiten recuperar la lista de dependencias de un archivo desde un formulario de Visual Basic, como la ofrecida en recursosvisualbasic.com.ar.
Esta DLL devuelve un array con los nombres de los archivos de los que depende una aplicación y se puede invocar con:
Listado = Obj.Depedencias
Además, permite abrir un diálogo para seleccionar el archivo objetivo y registrar la DLL mediante regsvr32
.
Casos de uso en análisis y depuración
Los usos de DUMPBIN trascienden el desarrollo básico de software. Analistas de malware, investigadores de seguridad o incluso técnicos IT la usan para detectar dependencias ausentes, verificar firmas de archivos, o realizar ingeniería inversa de binarios sospechosos.
Por ejemplo, mediante el comando /ALL
se puede obtener toda la información disponible de un archivo incluyendo dependencias, ASM desensamblado, directivas y secciones. Sin embargo, es más recomendable usar comandos por separado e ir analizando la información de forma más organizada.
Una práctica habitual es trabajar con /SECTIONS
cuando se analizan ejecutables y se busca conocer su estructura interna, ayudando a identificar qué parte contiene código, datos, recursos, etc.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.