制作拦截Windows中的networkingstream量的程序

我问的是“如何为Windows制作软件防火墙”,但其实并不那么复杂。 我很惊讶,在search这个时候我可以find这么一点,只是偶尔提到钩子。 所以,如果有人能指引我正确的方向,我将非常感激。

我期望用C来做这件事(不过如果还有另外一种语言你会认为会更好,我完全可以接受)。 我想创build一个监视networkingstream量的应用程序,可以提取IP地址(传入源,传出目标),并可以阻止上述networking活动。

这看起来好像在内核中要容易得多,但是我不想在那里混淆,也不能在Windows中访问。 我并不担心效率,也不想制造个人防火墙。 这只是一个关于IP地址的实验。

任何指针?

注意:重要的是我可以阻止networking某些networking活动,而不仅仅是监视它

DIY方式将采用内核模式,使用过滤钩子驱动程序 (对于Windows 2000-XP)或WFP标注驱动程序 。

如果你想让其他人在内核模式下进行肮脏的工作, WinPcap驱动程序/库会包含许多低级网络功能,包括你需要的功能,你可以在用户模式下使用(注意使用WinPcap你可以丢包)。

这听起来像你正在寻找的是一个Winsock 服务提供商接口 (SPI) 分层服务提供商 (LSP)。 从你所说的话来看,如果你使用的是Vista或者更新的版本,你可能想要实现一个LSP_INSPECTOR类的实例。 对于旧版本的Windows,该类并不完全适用,但总体思路是一样的。 在Vista / 7上,使用WSCSetApplicationCategory为应用程序设置类别(class)。 要安装提供程序,请填写WSAPROTOCOL_INFO结构,然后通过调用WSCInstallProvider进行注册。

你想看看libpcap和tcpdump 。

我想你要找的是一个数据包嗅探器,它将拦截网络上几乎所有的通信。 如果你想使用一个库,检查WinPCap ,这是为了这个目的。

另外,如果你认为你只是想要预先写好的东西,只想修改它,请查看Wireshark 。 尽管阅读代码通常比编写代码更困难。

尝试winpcap 。 作为“带有GUI的tcpdump”,你可以尝试wireshark 。