WinDDK基于规则的防火墙设计续

2 篇文章 0 订阅
2 篇文章 0 订阅

经过两天的摸索和尝试,实现了简单的过滤规则设置,但是还不够完备。先简单总结一下。

关于基于规则的防火墙设计中的数据流动上次已经说明过了,但是有些问题。首先,规则设置客户端、驱动层和中间层是3个平行的层次,如果不是数据交换,三层其实是没有必然关联的。我在中间层加入了规则队列,初始化的问题一直没搞明白,所以最初的想法是启动用户界面后和驱动层交互时,然后进行中间层规则队列的初始化。但是,事实证明这是不对的……服务加载后,服务会实时运行,此时没有运行客户端也就是不可能进行规则队列初始化……结果就蓝屏了若干次……

经过仔细阅读passthru.c的源码后,经同学指点,终于找到了合适的初始化点。我开始一直想找到进入驱动的函数入口,苦于没有驱动开发经验,居然直接忽视了DriverEntry这个函数……找到了合适的入口,初始化也就迎刃而解了。

但是苦逼的经历还没有过去。

当客户端和中间层的相关设计完成后,进入analysispacket.c设计后,问题就出来了。这个文件中主要是实现对具体协议的规则过滤。可是我在编码时忽略了一个关键变量的初始化,导致第一次进入后变量值未定,进而引发指针越界,蓝屏又一次发生。结果排查了一上午,snapshot搞了十几个才想明白……真是大问题没有,小问题不断。

好在现在问题都一一解决了。下面要做的就是完善规则的定义,如何基于规则进行过滤。如果有时间还可以考虑规则队列的维护,比如说规则判冲突等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值