简而言之:我想监视从应用程序到DLL的选定调用.
我们有一个旧的VB6应用程序,我们丢失了源代码(该公司当时没有使用源代码控制..).此应用程序使用第三方DLL.
我想在新的C++应用程序中使用此DLL.不幸的是,DLL API只是部分记录,所以我不知道如何调用某些函数.我有功能签名.
由于VB6应用程序使用此DLL,我想看看它如何调用多个函数.到目前为止,我已经尝试或看过 -
APIHijack - 要求我为每个函数编写C++代码.由于我只需要记录值,这似乎是一种矫枉过正.
EasyHook - 与1相同,但允许用.NET语言编写代码.
使用uHooker的OllyDbg - 我仍然需要为每个函数编写代码,这次是在Python中.此外,我必须使用该struct
模块在Python中进行许多转换,因为大多数函数使用指针传递值.
由于我只需要记录函数参数,我想要一个简单的解决方案.有没有自动化工具,我可以告诉哪些功能要监控和签名,然后获取详细的日志文件?
"静态"解决方案(在某种意义上它可以按需捕获堆栈跟踪)将是Process Monitor.
更动态的解决方案是ApiMonitor,但它可能太旧而无法与要监控的应用程序兼容.值得一试.
更多谷歌搜索找到了我想要的东西:WinAPIOverride32.它允许编写文本文件,例如:
CustomApi.dll|void NameOfFunction(long param1, double& param2);
稍后,可以在程序内部使用这些文件来记录所有调用NameOfFunction
.现在我只需要弄清楚如何记录数组和结构参数.