2010-01-04 12 views
8

Tengo varios cientos de archivos DLL que pertenecen a un gran proyecto de código spagetti y necesito ver qué llamadas exportan o importan. Y también sería genial si pudiera obtener un gráfico de dependencia entre las DLL. ¿Alguien podría recomendarme utilidades gratuitas y confiables para eso? Gracias.Mejor utilidad de volcado de símbolos DLL

Editar: Dependancy walker parece no ser suficiente: Necesito obtener una lista no solo de las DLL compensadas, sino también para saber para qué sirven esas DLL.

Respuesta

13

Dependency Walker (depends.exe) puede hacerlo y es gratis. También tiene una función de perfil para que pueda ver qué DLL se cargan dinámicamente.

depends.exe screenshot http://dependencywalker.com/snapshot.png

Si sus archivos DLL son ensamblados .NET que puede utilizar Reflector y si se trata de un archivo DLL COM con una biblioteca de tipos que puede utilizar OleView para obtener más información. Para obtener más información de un dll regular, debe recurrir a desmontadores y ensamblaje de lectura.

+0

Gracias. Es muy útil cuando alguien necesita ver qué módulos están siendo llamados por un ejecutable en particular. Pero necesito resolver algún tipo de problema inverso: necesito saber para qué sirven esas DLL. –

+0

También muestra las funciones exportadas e importadas desde otras DLL. No hay mucha más información que pueda obtener de una DLL normal. Y puede cargar una DLL en lugar de un EXE si lo desea. –

-2

No hay forma de obtener información para qué archivos DLL se utilizan. Tienes que leer la documentación del software de tu proyecto; espero que haya alguno. También estudie los makefiles cuidadosamente.

Puede usar los nombres de las funciones para ver el código fuente asignado a las DLL y Para obtener esto, debe usar la herramienta "dumpbin" que viene con MSVC. "Dependancy walker" es solo una interfaz de esta herramienta.

Luego escriba algunos scripts y/o use grep para filtrar el resultado para analizar los contenidos de la DLL.

Puede buscar SO para otras técnicas de ingeniería inversa. Creo que encontrarás mucha información porque es una habilidad común para los programadores.

+0

Dependency walker también tiene funcionalidad de análisis en tiempo de ejecución que no solo muestra los dlls cargados estáticamente, sino también los dlls cargados dinámicamente, las excepciones y las rutas desde donde son explorados y cargados. Eso puede ser útil y no es algo que hace dumpbin. Procmon podría hacer eso sin embargo. –

+0

Sí, pero esto siempre le proporcionará una sola instantánea a tiempo. Todos con un poco de ética de ingeniería y sentido de la calidad le dirán que es muy peligroso confiar en esto. Otros luego de obtener una comprensión inicial del sistema. – Lothar

Cuestiones relacionadas