【问题标题】:How to hook into Windows network events如何挂钩 Windows 网络事件
【发布时间】:2012-01-25 08:05:11
【问题描述】:

我想挂钩某些 Windows 网络事件,例如新的传入和传出连接。

有哪些选择? wmic,Windows API?

【问题讨论】:

  • WDK,你需要一个过滤驱动。编写和调试你自己的,嗯,不平凡。

标签: windows winapi


【解决方案1】:

你可以看看WinPcap:
http://www.winpcap.org/

“WinPcap 是一个开源库,用于 Win32 平台的数据包捕获和网络分析。”
http://www.winpcap.org/docs/docs_412/html/main.html

这是像Wireshark 这样的程序用来完成所有捕获的库。 http://www.winpcap.org/misc/features.htm

【讨论】:

  • WinPcap 一直在我的脑海中,总体上是很有前途的方法。
  • 在广泛搜索“最佳”方法之后,我已经确定了这一点。原因是注入像@jonathan-lingle 建议的系统级别可能对性能造成太大影响,更不用说如果您在某处获得 NULL 取消引用会冻结。带有非常窄过滤器的 WinPcap 希望不会对性能造成太大影响,同时能够捕获 tcp-syn 事件。
【解决方案2】:

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

【讨论】:

  • 我喜欢这种方法。你有什么公开的例子可以推荐吗?
  • 如果我没记错的话,对于 CreateProcess() 的系统范围挂钩,我们需要添加内核挂钩对吗?
【解决方案3】:

这里有一些在windows中过滤、修改、读取数据包的工具:

  1. WinDivert 在 Windows 7、2008 或 上。网络层。
  2. WinpkFilter 3.0 商业版、Windows XP 及更高版本。数据链接 层
  3. pcausa,商业。数据链路层
  4. Windows Filtering Platform Packet Modification Sample 样品 要创建 WinDivert 使用的标注驱动程序,您现在应该 实现内核驱动。网络层。

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2015-06-05
    • 2021-03-22
    • 2015-07-05
    • 2015-10-11
    • 2012-09-26
    相关资源
    最近更新 更多