【问题标题】:Identify processes that access the internet识别访问 Internet 的进程
【发布时间】:2012-05-26 22:15:40
【问题描述】:

我需要编写一个程序(最好是 C/C++)来识别连接到互联网的正在运行的进程,以及它们试图访问的域名/URL。

(如果进程访问域名,例如 google.com,我需要能够识别该域名,而不是解析的 IP)。

程序需要在 Windows XP、Vista、7 上运行。

据我研究,winpcap 无法识别进程。 我在 stackoverflow 上搜索过类似的主题,但没有找到满意的答案...

【问题讨论】:

  • BTW 查看命令行实用程序netstat
  • 是作业吗?如果是,请标记它。
  • 这是一个措辞非常含糊的问题。您想监控一般 TCP/IP 流量还是仅监控 DNS 流量等?
  • 查看来自 sysinternals 的进程资源管理器。这不是一个真正的编程问题。
  • 目的非常明确:编写 C 应用程序,可以确定哪个进程连接到 Internet,并识别它们连接到的 URL - 如果这是通过 TCPIP 监控或 DNS 监控或其他方式完成的API,我不在乎。这是一个编程问题,因为我需要编写一个应用程序,而不是使用 GUI。

标签: c++ windows winapi networking tcp


【解决方案1】:

Google 搜索 tcpdumptcptracetcpsplitlibpCapwireShark 等工具。您将能够查看他们的源代码,了解如何捕获正在进行的 TCP/IP 流并对其进行分析

【讨论】:

  • 我已经研究并尝试了工具和libpcap/winpcap框架。他们都无法识别连接到互联网的进程。
【解决方案2】:

您可以使用 Detours 来挂钩 DNS,这是一个项目示例:CodeProject 和下面是 Detours Page

【讨论】:

  • 哇!如果用于商业软件,Detours 的成本为 9999 美元。谢谢,但我需要一些免费的东西,或者至少要便宜得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多