当前位置:  开发笔记 > 编程语言 > 正文

监视应用程序对DLL的调用

如何解决《监视应用程序对DLL的调用》经验,为你挑选了2个好方法。

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

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

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

由于VB6应用程序使用此DLL,我想看看它如何调用多个函数.到目前为止,我已经尝试或看过 -

    APIHijack - 要求我为每个函数编写C++代码.由于我只需要记录值,这似乎是一种矫枉过正.

    EasyHook - 与1相同,但允许用.NET语言编写代码.

    使用uHooker的OllyDbg - 我仍然需要为每个函数编写代码,这次是在Python中.此外,我必须使用该struct模块在Python中进行许多转换,因为大多数函数使用指针传递值.

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



1> VonC..:

"静态"解决方案(在某种意义上它可以按需捕获堆栈跟踪)将是Process Monitor.

进程监视器

更动态的解决方案是ApiMonitor,但它可能太旧而无法与要监控的应用程序兼容.值得一试.

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


似乎它只监视Windows API函数.我需要监视非Windows API DLL.我错过了什么吗?
ApiMonitor太棒了.

2> kshahar..:

更多谷歌搜索找到了我想要的东西:WinAPIOverride32.它允许编写文本文件,例如:

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

稍后,可以在程序内部使用这些文件来记录所有调用NameOfFunction.现在我只需要弄清楚如何记录数组和结构参数.


呸.对我而言,这并不容易.我正在尝试_find_ Outlook正在调用的函数,但我不知道它调用的是什么函数:/
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有