¿Cómo ver las funciones de DLL?

Respuestas:

73

Para el código nativo, probablemente sea mejor usar Dependency Walker . También es posible usar la utilidad de línea de comandos dumpbin que viene con Visual Studio.

desintonizado
fuente
1
Con las nuevas ediciones de VS, pruebe DumpBin como herramienta externa .
Laurie Stearn
Hay un artículo de Wikipedia sobre Dependency Walker. Aparentemente, el programa se ha quedado obsoleto y no funciona con algunas características más nuevas de Windows, pero hay un reemplazo disponible: github.com/lucasg/Dependencies
user1324109
50

Use el Visor de exportación de DLL gratuito , es muy fácil de usar.

Ken D
fuente
8
@sumit, ¿puedes ser más específico? Esta herramienta me funciona a lo largo de los años.
Ken D
66
En realidad, la herramienta funciona bien, simple y llanamente, justo lo que necesitaba.
informatik01
55
Es una gran herramienta para generar una lista de métodos / funciones, pero no muestra los parámetros de los métodos (ni sus tipos).
bvdb
1
Es genial tener algo pequeño y compacto, y no un producto hinchado como los productos oficiales de MS.
ワ イ き ん ぐ
38

Puede probar el Explorador de objetos en Visual Studio.

Seleccione Editar conjunto de componentes personalizados . Desde allí, puede elegir entre una variedad de bibliotecas .NET, COM o de proyectos o simplemente importar archivos dlls externos a través de Examinar.

cslewy
fuente
16
Visual Studio dice "El componente seleccionado no se puede examinar" cuando se usa Examinar y selecciona DLL :( - msdn.microsoft.com/query/…
Xdg
55
el navegador de objetos se ha movido a View. Y sí, no funciona (por qué lo haría, es Microsoft)
phil294
1
Más un vendedor que un problema de MS. Probablay no hay typelib en el dll. Ver: stackoverflow.com/a/13903040/1614903
Holger Böhnke
@ HolgerBöhnke no typelib en userdll32 tampoco
Kimmax
2
@Kimmax Sí, pero user32.dll es una DLL nativa de Windows y no un servidor COM. En primer lugar, solo los servidores COM (p. Ej., Dlls COM, controles ActiveX, * .ocx ...) pueden tener typelibs, si se compilaron. Para las DLL nativas (= objeto no COM), algunas de las otras herramientas mencionadas aquí (dumpbin et. Al.) Pueden funcionar. Es decir, si la DLL exporta sus funciones por nombre y no solo por ordinal.
Holger Böhnke
27

Usa dumpbinla línea de comandos .

  • dumpbin /IMPORTS <path-to-file> debería proporcionar la función importada en esa DLL.
  • dumpbin /EXPORTS <path-to-file> debe proporcionar las funciones que exporta.
jmcarter9t
fuente
9

Usa dotPeek de JetBrains.

https://www.jetbrains.com/decompiler/

dotPeek es una herramienta gratuita basada en ReSharper. Puede descompilar de manera confiable cualquier ensamblado .NET en código C # o IL.

Shayan
fuente
Entonces, ¿esto es específico para las DLL que usan el marco .NET?
Joel Bodenmann
8

Para las DLL de .NET, puede usar ildasm

altumano
fuente
Como ildasm es un producto de Microsoft y está instalado en la PC de forma predeterminada si tiene instalado Visual Studio. Creo que es la mejor opción. También tiene una interfaz de usuario, por lo que no necesita usar la línea de comandos. Gracias
Mehrdad Babaki
Se puede encontrar: C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ <VERSION> \ bin
f4d0
6

Sin decirnos de qué idioma es este dll / ensamblado, solo podemos adivinar.

Entonces, ¿qué hay de .NET Reflector

Adriaan Stander
fuente
2
Entonces este debería ser tu chico.
Adriaan Stander
1
El reflector .net solía ser gratuito, pero ahora es un producto comercial. Para .net dll, "JustDecompile" es una alternativa gratuita.
bvdb
¿El descompilador solo te dice qué funciones hay? ¿podemos ver su implementación también de alguna manera?
vipin8169
2

Si una DLL está escrita en uno de los lenguajes .NET y solo desea ver qué funciones, hay una referencia a esta DLL en el proyecto.

Luego haga doble clic en la DLL en la carpeta de referencias y luego verá qué funciones tiene en la ventana OBJECT EXPLORER

Si desea ver el código fuente de ese archivo DLL, puede usar una aplicación de descompilador como .NET reflector. Espero que esto te ayude.

Karamafrooz
fuente