web-dev-qa-db-fra.com

Surveillance des appels d'application à DLL

En bref: je veux surveiller les appels sélectionnés d'une application vers une DLL.

Nous avons une ancienne application VB6 pour laquelle nous avons perdu le code source (la société n'utilisait pas le contrôle de source à l'époque ..). Cette application utilise une DLL tierce.

Je veux utiliser ceci DLL dans une nouvelle application C++. Malheureusement, l'API DLL n'est que partiellement documentée, donc je ne sais pas comment appeler certaines fonctions J'ai la signature des fonctions.

Étant donné que l'application VB6 utilise cette DLL, je veux voir comment elle appelle plusieurs fonctions. Jusqu'à présent, j'ai essayé ou regardé -

  1. APIHijack - m'oblige à écrire du code C++ pour chaque fonction. Comme je n'ai besoin que de consigner les valeurs, cela semble être une surpuissance.
  2. EasyHook - identique à 1, mais permet d'écrire dans le code en langage .NET.
  3. OllyDbg avec Hooker - Je dois encore écrire du code pour chaque fonction, cette fois en Python. De plus, je dois faire de nombreuses conversions en Python en utilisant le module struct, car la plupart des fonctions transmettent des valeurs à l'aide de pointeurs.

Comme je n'ai besoin que de consigner les paramètres des fonctions, je veux une solution simple. Existe-t-il un outil automatisé pour lequel je pourrais déterminer les fonctions à surveiller et leur signature, puis obtenir un fichier journal détaillé?

36
kshahar

Une solution "statique" (dans le sens où elle peut capturer une trace de pile à la demande) serait Process Monitor .

Process Monitor

Une solution plus dynamique serait ApiMonitor , mais elle peut être trop ancienne pour être compatible avec les applications à surveiller. Ça vaut le coup d'essayer.

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

25
VonC

Complément Visual Studio Flux d'exécution ici :

Runtime Flow en temps réel surveille et enregistre les appels de fonction et les paramètres de fonction dans votre application .NET en cours d'exécution et affiche un arbre de trace de pile. Aucune instrumentation ou code source requis pour la surveillance.

3
google dev