如何钩取Windows网络事件

3

我想要钩取某些Windows网络事件,例如新的进出连接。

有哪些选项?wmic、Windows API?


WDK,你需要一个过滤驱动程序。编写和调试自己的驱动程序是相当困难的。 - Hans Passant
3个回答

3

WinPcap一直在我心中,总体来说是一个非常有前途的方法。 - Konrads
在广泛寻找“最佳”方法后,我选择了这种方法。原因是像@jonathan-lingle建议的注入系统级别可能会对性能产生过重的负担,更不用说如果在某个地方得到NULL引用时会出现冻结。WinPcap带有非常狭窄的过滤器,希望不会对性能产生太大影响,同时可以捕获tcp-syn事件。 - Konrads

2
你可以注入一个DLL来挂钩每个进程中的send()和recv()。然后,该DLL还将挂钩CreateProcess以将自身注入到未来创建的进程中。

我喜欢这种方法。你有什么公共示例可以推荐吗? - Konrads
如果我没错的话,要想对CreateProcess()进行系统范围的钩取,我们需要添加内核钩子,对吗? - Dev.K.

1

以下是一些在Windows中用于过滤、修改和读取数据包的工具:

  1. WinDivert 免费开源项目,适用于Windows 7、2008或更高版本。网络层。
  2. WinpkFilter 3.0 商业软件,适用于Windows XP及以上版本。数据链路层。
  3. pcausa,商业软件。数据链路层。
  4. Windows Filtering Platform Packet Modification Sample 一个示例,用于创建WinDivert使用的调用驱动程序,您需要了解如何实现内核驱动程序。网络层。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接