我要问的是“如何为Windows制作软件防火墙”,但不是那么复杂。我很惊讶在搜索时我发现这么少,只是偶尔提到钩子。如果有人能指出我正确的方向,我们将不胜感激。
我希望用C做这个(虽然如果你认为还有另一种语言会更好用,我会全力以赴)。我想创建一个监视网络流量的应用程序,可以提取IP地址(传入源,传出目的地),并可以阻止所述网络活动。
这似乎是在内核中更容易做的事情,但我不想在那里乱逛,我甚至无法在Windows中访问。我不担心效率,也不打算制作个人防火墙。这仅适用于有关IP地址的实验。
任何指针?
注意:重要的是我能够阻止网络某些网络活动,而不仅仅是监控它
答案 0 :(得分:5)
DIY方式将采用内核模式,使用filter-hook drivers(适用于Windows 2000-XP)或WFP Callout Drivers。
如果您想让其他人在内核模式下执行脏工作,WinPcap驱动程序/库会运行许多低级网络功能,包括您可以从用户模式使用的功能(请注意,使用WinPcap不能丢弃数据包)。
答案 1 :(得分:3)
听起来你正在寻找的是Winsock Service Provider Interface(SPI)Layered Service Provider(LSP)。根据您的说法,如果您正在处理Vista或更新版本,您可能希望实现LSP_INSPECTOR类的实例。对于旧版本的Windows,该类不完全适用,但同样的一般想法。在Vista / 7上,使用WSCSetApplicationCategory
为应用程序设置类别(类)。要安装提供商,请填写WSAPROTOCOL_INFO
结构,然后致电WSCInstallProvider
进行注册。
答案 2 :(得分:1)
您想查看libpcap and tcpdump。
答案 3 :(得分:1)
我认为您正在寻找的是数据包嗅探器,它将拦截几乎所有通过网络进行的通信。如果您想使用库,请查看WinPCap,其目的就是为此目的。
此外,如果您认为自己只想要预先编写的内容并且只想修改它,请查看Wireshark。虽然,阅读代码通常比编写代码更困难。
答案 4 :(得分:0)