2008-11-22 233 views
33

简而言之:我想监视从应用程序到DLL的选定调用。监视DLL的应用程序调用

我们有一个旧的VB6应用程序,我们失去了源代码(该公司当时没有使用源代码控制..)。此应用程序使用第三方DLL。

我想在新的C++应用程序中使用此DLL。不幸的是,DLL API仅部分记录,所以我不知道如何调用某些函数。我确实有函数签名。

由于VB6应用程序使用这个DLL,我想看看它是如何调用几个函数。到目前为止,我已经试过或看过 -

  1. APIHijack - 要求我为每个函数编写C++代码。由于我只需要记录这些值,因此看起来像是一种矫枉过正。
  2. EasyHook - 与1相同,但允许使用.NET语言编写代码。
  3. OllyDbguHooker - 我仍然需要为每个函数编写代码,这次用Python编写。另外,我必须使用struct模块在Python中进行许多转换,因为大多数函数都使用指针传递值。

由于我只需要记录函数参数,我想要一个简单的解决方案。是否有任何自动化工具,我可以告诉哪些功能要监视和签名,然后获取详细的日志文件?

回答

10

一些更多的谷歌搜索找到了我一直在寻找:WinAPIOverride32。它允许写入文本文件,如:

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

后来,这些文件可以在程序中用于登录到NameOfFunction所有呼叫。现在我只需要弄清楚如何记录数组和结构参数。

25

“静态”解决方案(在某种意义上,它可以根据需要捕获堆栈跟踪)将为Process Monitor

Process Monitor

更动态的解决方案将是ApiMonitor,但它可能是太旧,与监控的应用程序兼容。值得一试虽然。

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

+4

似乎它只是监视Windows API函数。我需要监视一个非Windows API DLL。我错过了什么吗? – kshahar 2008-11-22 12:28:25

+0

不,确实如此。即使进程监视器将显示您的DLL堆栈,但方法的“未知”。 – VonC 2008-11-22 12:45:39

3

的Visual Studio外接运行流程here

运行流程进行实时监测和记录函数调用和 功能参数在运行.NET应用程序,并显示一个堆栈跟踪 树。没有监测所需的仪器或源代码。