Question

En bref: je souhaite 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 (à l'époque, la société n'utilisait pas le contrôle de code source). Cette application utilise une DLL tierce.

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

Etant donné que l'application VB6 utilise cette DLL, je souhaite voir comment elle appelle plusieurs fonctions. Jusqu'ici 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 ressemble à une surcharge.
  2. EasyHook - identique à 1, mais permet d'écrire dans le code en langage .NET.
  3. OllyDbg avec uHooker - Je dois encore écrire du code pour chaque fonction, cette fois en Python. De plus, je dois effectuer de nombreuses conversions en Python à l'aide du 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 souhaite une solution simple. Existe-t-il un outil automatisé pour lequel je pourrais indiquer les fonctions à surveiller et leur signature, puis obtenir un fichier journal détaillé?

Était-ce utile?

La solution 2

Une recherche supplémentaire sur Google a trouvé ce que je cherchais: WinAPIOverride32 . Il permet d’écrire des fichiers texte tels que:

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

Plus tard, ces fichiers peuvent être utilisés dans le programme pour enregistrer tous les appels dans NameOfFunction . Il ne me reste plus qu'à comprendre comment consigner les paramètres de tableaux et de structures.

Autres conseils

A " statique " La solution (dans le sens où elle peut capturer une trace de pile à la demande) serait Moniteur de processus .

Moniteur de processus

Une solution plus dynamique serait ApiMonitor , mais elle est peut-être trop ancienne pour être compatible avec la applications à surveiller. Cela vaut la peine d'essayer.

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

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

  

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top