当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

.net中的简单防火墙

admin 2℃
我想尝试创建一个简单的防火墙来限制应用程序访问Internet,但我允许的应用程序除外。就像网络限制器。 因此,它必须允许白名单上的应用程序访问互联网,并删除其余应用程序的连接。 这在c或vb.net中是否可行? 如果可能的话,请你指点我正确的方向。

谢谢

Pr>正如Tre0q所说的,你需要使用C++或另一种低级编程语言(低级I是指接近机器代码)。

如果你想坚持使用.net,你的选择是非常有限的。首先,你需要大量使用WiNAPI,这从.NET中不是很方便(当然也不是不可能)-你可能想考虑使用VC++.NET,你可以尝试使用EasyHook管理挂钩。请注意,这肯定不是一个好的解决方案,tutorial实际上警告您在安全软件中使用它:

不像某些(商业)勾搭 外面的图书馆有广告 促进销售,用户模式挂钩可以 永远不要选择应用额外的 以任何安全的方式进行安全检查。如果 你只想'沙盒'一个 过程,你很清楚, 过程其实不知道 轻松,这可能成功!但是 不要试图写任何东西 基于用户模式的安全软件 勾搭。不会成功的,我保证… 这也是为什么easyhook没有 支持所谓的'全系统' 注射,实际上只是 幻觉,因为正如我所说, 用户模式挂钩 不可能的。但如果你想 这个幻觉你可能会坚持另一个 (商业)图书馆试图 这样做…

教程中的其他提示:

你应该考虑购买 PatchGuard API允许您 基于内核编写安全应用 模式拦截。内核模式 挂接(或patchguard api)是 唯一的附加选项 安全检查。从Windows Vista开始, 还有windows过滤平台 其他vista特有的api将是 有助于编写安全软件!

如您所见,在这里使用.net并不能真正起作用。如果你还想尝试easyhook,继续吧,但要记住危险。我更建议你去学习C++,在尝试防火墙之类的东西之前,先深入了解WiNAPI。

PacketX是一个用来嗅探数据包的简单的小库。但不确定是否可以完全阻止网络。您必须找到一种方法来禁用网络适配器,然后使您的程序显示为网络适配器,以便根据需要在数据包上转发。

编辑:我的错。'PacketX不能用于阻止网络流量以建立防火墙。'

你需要低级别的工具,如C++和Win API来实现防火墙的系统级层。

转载请注明:我的代码 » .net中的简单防火墙