前一段时间,用了XFilter个人防火墙,刚开始的时候,感觉还不错,可是渐渐的发现,原来是那么的不如任意.同时我也阅读了他的源代码,我个人认为,对于XFilter,如果作为个人开发测试还可以,但是如果要作为专业的防火墙,还差得远!!
XFilter的实现原理:
只是根据我阅读的源代码而论,XFilter是用的spi实现的对网络的监控和拦截,但是有一个最重要的部分要注意的是它修改了注册表这个位置([HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries])里面的值,然后当系统加载网络的动态连接库的时候,它修改为自己的连接库,这样以来,大家都应该知道他的拦截是怎么回事了吧.也就是修改了这个过后,那么系统任何一个网络调用spi的时候,其实是调用XFilter编译的dll,那么在这个dll里面,我们想做什么都可以,也当然可以拦截到网络数据包.虽然这个有一定的技术含量,可是我并不认为这个软件的技术含量很高,它大部分的时间花在了怎么查找某一个进程是否允许对网络进行某一种操作,并且,如果用spi,应该是不能够拦截icmp包的.相比网镖来说,它还是有差距(虽然是个人软件).
不过问题的出现主要是我朋友的电脑上使用的时候,当他的services.exe试着载入XFilter.dll的时候出错,导致不能够开机(在我这里不存在) 包括任何一个操作都不能够执行.另外,安装了该软件的电脑一律在使用iis的时候会有问题(我测试了三台电脑无一例外).然后偶尔会使你的网络处于瘫痪,也许是里面算法的出错问题.我还感觉到网速有一定的降低,不过对于spi来说这个也许是必然的,因为它相当于在里面多加了一个过滤层.
不过尽管如此,XFilter让我学到了很多东西,我也非常佩服他的作者.也就是 朱雁辉,朱雁冰.这里我没有批判的意思,因为我还没有这个资格,不过这样来作为一个防火墙,难免让人不容易接受.现在我把注册表修改回来过后,发现系统稳定了很多.我怀疑是由于它写的spi没有全部写完,导致在调用一些spi的时候出错.因为我的印象中spi一共有30个左右,但是里面明显没有这么多,那么没有写完的那部分,很大程度上是这个软件失败的原因.