2008-11-22 17 views
33

En resumen: deseo monitorear las llamadas seleccionadas desde una aplicación a una DLL.Monitoreo de llamadas de aplicaciones a DLL

Tenemos una aplicación VB6 antigua para la que perdimos el código fuente (la compañía no estaba usando el control de fuente en ese entonces ...). Esta aplicación utiliza una DLL de terceros.

Quiero utilizar esta DLL en una nueva aplicación C++. Lamentablemente, la DLL API solo está parcialmente documentada, por lo que no sé cómo llamar a algunas funciones. Tengo la firma de funciones.

Dado que la aplicación VB6 usa esta DLL, quiero ver cómo llama a varias funciones. Hasta ahora lo he probado o visto -

  1. APIHijack - requiere que escriba el código C++ para cada función. Como solo necesito registrar los valores, parece una exageración.
  2. EasyHook - igual que 1, pero permite escribir en el código en el lenguaje .NET.
  3. OllyDbg con uHooker - Todavía tengo que escribir el código para cada función, esta vez en Python. Además, tengo que hacer muchas conversiones en Python usando el módulo struct, ya que la mayoría de las funciones pasan valores usando punteros.

Como solo necesito registrar los parámetros de funciones, quiero una solución simple. ¿Hay alguna herramienta automatizada para la que pueda decir qué funciones supervisar y su firma, y ​​luego obtener un archivo de registro detallado?

Respuesta

10

Un poco más de Google busca exactamente lo que estaba buscando: WinAPIOverride32. Permite escribir archivos de texto, tales como:

CustomApi.dll|void NameOfFunction(long param1, double& param2); 

Más tarde, estos archivos se pueden utilizar dentro del programa para registrar todas las llamadas a NameOfFunction. Ahora solo necesito descubrir cómo registrar matrices y estructurar parámetros.

+2

Bah. Para mí no es tan fácil.Estoy tratando de encontrar la función que está llamando Outlook, pero no tengo idea de qué función está llamando: / –

25

Una solución "estática" (en el sentido de que puede capturar un seguimiento de la pila a pedido) sería Process Monitor.

Process Monitor

Una solución más dinámico sería ApiMonitor, pero puede ser demasiado viejo para ser compatible con las aplicaciones para monitorear. Vale la pena probarlo.

http://www.rohitab.com/gallery/api-monitor-2-0/main-window.png

+4

Parece que solo está monitoreando las funciones de la API de Windows. Necesito monitorear una DLL de la API de Windows. ¿Me estoy perdiendo de algo? – kshahar

+0

No, de hecho. Incluso Process Monitor mostrará su pila DLL, pero con "Desconocido" para el método. – VonC

+2

ApiMonitor es increíble. – expert

3

Visual Studio Addin tiempo de ejecución de flujohere:

flujo de tiempo de ejecución en los monitores de tiempo y los registros de llamadas a funciones y parámetros de función real en su aplicación .NET en ejecución y muestra un árbol de seguimiento de la pila . No se requiere instrumentación o código fuente para el monitoreo.