Si tengo un ejecutable de Windows, ¿cómo puedo saber qué dlls cargará?¿Cómo averiguo qué dlls cargará un ejecutable?
Estoy hablando de cuáles se cargarán estáticamente, no de cuáles se cargarán dinámicamente con algo como LoadLibrary.
Si tengo un ejecutable de Windows, ¿cómo puedo saber qué dlls cargará?¿Cómo averiguo qué dlls cargará un ejecutable?
Estoy hablando de cuáles se cargarán estáticamente, no de cuáles se cargarán dinámicamente con algo como LoadLibrary.
Hay utilidades que harán esto por usted.
En el pasado he utilizado la herramienta MS (depends.exe) que viene con (creo) VB .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx
y hay esto también:
http://dependencywalker.com/
y probablemente otros también.
Dependency Walker lo puede ayudar a determinar qué .dll se cargará.
Buen programa GUI. 'Dependency Walker' intenta encontrar archivos DLL y sus dependencias jerárquicas. – SuB
progfr es simple y útil: [http://members.fortunecity.com/michaelmoser/tip11.htm]
dumpbin es una herramienta que viene con VC++.
Para ver qué archivos DLL un programa importará:
Dump of file whatever.exe File Type: EXECUTABLE IMAGE Image has the following dependencies: AIOUSB.DLL sqlite3.dll wxmsw293u_core_vc_custom.dll wxbase293u_vc_custom.dll KERNEL32.dll ole32.dll OLEAUT32.dll MSVCP90.dll MSVCR90.dll
Para ver qué funciones (y DLL) que importará, utilice
C:\> dumpbin /imports whatever.exe
Creo que debería ser: dumpbin/dependents whatever.exe –
/dependientes solo muestra las DLL./ imports muestra las funciones * y * DLL. –
Esta es la mejor respuesta. Lamentablemente, esta herramienta muestra solo archivos DLL cargados directamente para el '.exe' no DLL que el archivo ejecutable depende de ellos indirectamente. – SuB
Hay una práctica herramienta llamada NDepend que le dará todas las dependencias de DLL.
_'NDepend' es una herramienta de análisis estático para .NET managed code'_. Por lo tanto, funciona solo para aplicaciones .Net. – SuB
Simplemente vaya al símbolo del sistema y escriba tasklist /m
, verá la lista de archivos dll utilizados por el programa específico.
Sí, esto hace lo que dice, sin embargo, si un ejecutable inicia varios procesos, nunca descubrirá desde la línea de comandos qué proceso fue iniciado por los ejecutables, por lo tanto, no sabrá todos los dll dependientes del ejecutable. – Fazi
Solución para Microsoft .Net:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}
Abra el símbolo del sistema y escriba a continuación comandar
lista de tareas/m/fi "imagename eq netbeans.exe"
Tipo vez netbeans.exe cualquiera que sea el nombre de su nombre de archivo exe.
buen consejo, aunque solo funciona para ejecutar el proceso. –
usé esto y no me da una lista completa de las DLL que está usando, hay un montón de DLLs de informes de cristal que mi exe está usando pero no veo ninguno mencionado en la lista impresa a través de ese comando. ¿Algunas ideas? – user734028
El "depends.exe" que está instalado con Visual Studio/VB/... y el "depends.exe" que uno puede descargar desde http://dependencywalker.com/ son exactamente la misma herramienta (solo versiones diferentes) . ;) –