如何监视对应用程序/服务的Windows API调用?

时间:2009-01-13 19:15:26

标签: winapi monitoring

我的公司正在考虑实施新的VPN解决方案,但要求我们的软件以编程方式维护连接。 VPN解决方案包括一个似乎管理物理连接的后台服务和一个启动连接/断开请求的命令行/ GUI实用程序。我正在寻找一种方法来“窥探”前端实用程序和后端服务之间的API调用,以便我们的软件可以对服务进行相同的调用。有没有推荐的软件解决方案或方法呢?

4 个答案:

答案 0 :(得分:1)

通常,前端应用程序和后端服务之间的通信是通过某种形式的IPC(套接字,命名管道等)或通过服务控制管理器发送的自定义消息完成的。您可能需要找出此解决方案使用的方法,并从那里开始工作 - 尽管如果它是通过套接字进行加密通信,这可能很困难。

答案 1 :(得分:1)

就像哈珀谢尔比说的那样,这可能非常困难,但你可以从filemon开始,它可以告诉你某些进程何时创建或写入文件regmon,这可以做同样的事情。注册表写入和读取,wireshark监视网络流量。这可以为您提供一些数据,但即使使用数据,也可能难以以允许您进行相同调用的方式进行解释。

答案 2 :(得分:1)

我不明白为什么要替换该实用程序,而不是简单地从应用程序中运行该实用程序。

无论如何,您可以运行“dumpbin / imports whatevertheutilitynameis .exe”来查看该实用程序所链接的API函数名称的静态列表;这并没有显示它们被调用的顺序,也没有显示参数值。

然后,您可以使用系统调试器(例如Winice或其更现代的等价物)在这些API上设置断点,以便在实用程序调用这些API时进入调试器(然后可以检查参数值)

答案 3 :(得分:1)

您可以使用Spy++等工具收集一些信息,以查看Windows消息。调试/跟踪工具(Windbg等)可能允许您查看正在进行的API调用。 Sysinternals工具可以向您显示某种程度的使用细节信息。

虽然我会在大多数情况下建议不要这样做 - 是否可以联系解决方案提供商并获取文档?其中一个原因就是脆弱性 - 如果供应商不期望用户使用界面的这一方面,他们更有可能在没有通知的情况下进行更改。