在Windows 7中使用WMI监控网络活动?

时间:2018-02-14 02:45:45

标签: c# windows networking wmi

是否有WMI查询来监控网络连接;不是网络适配器连接/断开也不是wifi网络连接/断开,而是类似于netstat ~5-tuple:(source IP address, source IP port, destination IP address, destination IP port, process ID)的输出,通过指定一些事件回调而不是重复(定期轮询)然后做一个diff),或嗅探网络数据包?我似乎无法找到一个。

1 个答案:

答案 0 :(得分:0)

不确定是否有任何API可以为您提供回调,任何解决方案都将基于轮询。

然而

您可以将Dll injection实用程序编写为 Windows服务,它会挂钩一些目标 WinSock2 函数,例如Connect等,并存储您需要的信息,然后可以通过某种 IPC 访问。

Windows Sockets 2 (Windows) - MSDN - Microsoft

Interprocess Communications (Windows) - MSDN - Microsoft

有几个问题是

  • 跟踪新加载的进程。 然而,在内核模式驱动程序的帮助下,您可以挂钩加载和卸载进程
  • 不使用 WinSock2 的进程(我不知道你想要走多远这个兔子洞)。 也许你可以在驱动程序级别监控更基本的东西(虽然我不确定)

一旦你的挂钩架构完成,你就可以暴露某种 IPC ,这样你的用户模式监控器就可以提取它所需要的信息......

当我们不得不为32和64个应用程序挂钩打印功能来监控打印作业和指标时,我在上一个工作中遇到了类似的问题。简而言之,这是完全可能的,如果你不介意一些C ++

,实际上并不难做到

在Mathias Rauen开发的madCodeHook之类的Libs的帮助下,大部分工作都可以为您完成。他已经开发了驱动程序,并且是用于跟踪进程和DLL注入的各种技巧的绝佳API。

无论如何,祝你好运