最近开始研究数据包的过滤了。我接手的是用filter-hook方式开发的一套程序,但是逐渐发现了问题。首先是某些防火墙,比如金山防火墙就跟这套程序有冲突,多数情况下过滤会失效,后来确定是因为filter-hook的机制问题:以独占方式注册回调函数,难怪;接着Windows Vista发布了,发现程序又挂掉了,想过好几个原因,比如数字签名,比如驱动打开权限不够,都否决了,最后google发现,Vista开始,微软已经不再支持此方式。于是决定更换驱动,filter-hook过时了。
又是google,找了一大堆资料,终于确定下来使用NDIS中间层驱动。虽然其开发最复杂,但是兼容性、控制的灵活度、可控范围都是最好的,几乎无所不能。下一步工作就是研究研究NDIS中间层驱动程序怎么写了。