开发Windows 2000/XP下的防火墙

开发Windows 2000/XP下的防火墙-windowsxp防火墙">
介绍

如果你决定开发LINUX下的防火墙,你会找到很多免费的信息与源代码。但如果开发WINDOWS平台下的防火墙会有点困难,找到相关信息与代码都简直是不可能的任务。

因此我决定写这篇文章介绍在WINDOWS 2000/XP下开发防火墙的简单方法。

背景

在WINDOWS 2000 DDK中,微软包含了称为Filter-Hook Driver的新型网络驱动。你可以使用它来过滤所有进出接口的数据。

因为关于此的文档很少并没有代码,我把使用它的成功方法写入文章,希望帮助你理解这种简单的方法。

Filter-Hook 驱动

像我刚才所说的,在Microsoft Windows 2000 DDK中介绍了Filter-Hook Driver, 事实上,它不是一种新的网络驱动,它只是扩展了IP过滤驱动(IP Filter Driver)的功能。

实际上,Filter-Hook Driver并不是网络驱动,它是一种内核模式驱动(Kernel Mode Driver). 大致上是这样的:在Filter-Hook Driver中我们提供回调函数(callback),然后使用IP Filter Driver注册回调函数。这样当数据包发送和接收时,IP Filter Driver会调用回调函数。那么我们到底该如何实现这些步骤呢?总结如下:

1) 建立Filter-Hook Driver.我们必须建立内核模式驱动,你可以选择名称,DOS名称和其它驱动特性,这些不是必须的,但我建议使用描述名称。

2) 如果我们要安装过滤函数,首先我们必须得到指向IP Filter Driver的指针,这是第二步。

3) 我们已经取得了指针,现在我们可以通过发送特殊的IRP来安装过滤函数,该"消息"传递的数据包含了过滤函数的指针。

4) 过滤数据包!!!

5) 当我们想结束过滤,我们必须撤销过滤函数。这通过传递null指针作为过滤函数指针来实现。

哦,只有五个步骤,这看起来非常容易,但...如何生成内核模式驱动?如何得到IP Filter Driver指针,如何..... 是的,请稍等,我现在将解释这些步骤并提供源代码:P

时间: 2024-12-23 05:58:41

开发Windows 2000/XP下的防火墙的相关文章

Windows 2000/XP 下巧拒强行关机的方法_其它相关

从去年8月到现在,冲击波和震荡波让无数人的爱机无数次重启,折腾得要命.当然现在有了补丁,有了专杀工具,它们的威力已大大减弱.但还是常有一些人遭受它们的毒害,由于重启不得不关闭看得正好的电影,中止运行处于关键阶段的程序,因而丢失重要的数据,让人痛恨不已!那么能不能阻止由冲击波和震荡波引起的强制重启,先做完重要的工作,然后再去收拾这两个家伙呢? 为找到答案,我们有必要先了解一下WINDOWS XP的关机.Windows XP系统通过一个名为Shutdown.exe的程序来完成关机操作(位置在Wind

[转载]Windows NT/2000/XP下不用驱动的Ring0代码实现

Windows NT/2000/XP下不用驱动的Ring0代码实现                   WebCrazy(http://webcrazy.yeah.net/)      大家知道,Windows NT/2000为实现其可靠性,严格将系统划分为内核模式与用户模式,在i386系统中分别对应CPU的Ring0与Ring3级别.Ring0下,可以执行特权级指令,对任何I/O设备都有访问权等等.要实现从用户态进入核心态,即从Ring 3进入Ring 0必须借助CPU的某种门机制,如中断门.

活用Windows 2000/XP/2003的故障恢复控制台

故障恢复控制台是Windows 2000/XP/2003中专用于修复系统的工具,它可以启用和禁用服务.格式化 驱动器.在本地驱动器上读写数据(包括被格式化为 NTFS 文件系统的驱动器),并执行许多其他管理任 务,是我们连Windows 2000/XP/2003安全模式都无法进入时修复系统的"法宝".本期E12版有安装故障 恢复控制台的介绍文章,本文将对故障恢复控制台做进一步的探讨. 1.使用故障恢复控制台 计算机启动时选择"Microsoft Windows Recover

Windows 2000/XP中神秘的数字签名

大家知道吗?微软发布的具有数字签名的SP2才是正式版本(右击打开文件属性窗口可以查看到图1所示的数字签名信息),这是怎么一回事呢? 图1 一.Windows的文件保护功能 在Windows 2000以前的Windows版本中,安装操作系统之外的软件,可能会覆盖掉一些共享的系统文件,例如动态链接库(*.dll文件).可执行文件(*.exe),这样可能会导致程序运行不稳定.系统出现故障,这主要是由于所谓的DLL陷阱所导致. 为了彻底解决这一问题,在Windows 2000和Windows XP中,微

巧妙清除Windows 2000/XP登录密码

对系统管理员来说,不慎忘记Windows 2000/XP的登录密码是一件非常痛苦的事情,以前还可以利用一下输入法漏洞,但Windows 2000 SP2早已将这一漏洞补好,当然你可以用ERD Commander或O&0 BlueCon 2000来清除密码,可惜这两款软件都是价值不菲的商业软件:或者利用Windows 2000/XP引导软盘,但恐怕大多数朋友是不会制作这张软盘的.再说了,如今的时代,还有多少人会用软盘呀? 这里,笔者向朋友们推荐DreamPackPL,个头儿绝小(才74KB),虽然

Windows 2000/XP中对窗口进行透明化

前言 很多文章示范了使用Windows 2000/XP的层次特性来实现窗口的透明化.本文可以通过该特性使任意窗口透明化,即使你没有该程序的源代码. 使用 "WinTrans" 程序你可以选择任意正在运行的程序,用鼠标左键拖拽左上角框内的棒并将它压在该程序的标题栏上,然后放开,则该程序就可以变成透明.你可以调整滑动条的位置来控制透明度."WinTrans" 有一个非常象 SPY 的界面,还可以示范Win32 APIs的如下用法:用鼠标指针定位窗口,获取例如类名.标题等

Windows 2000/XP启动时进入纯DOS模式的技巧

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   DOS是英文Disk Operating System的缩写,意思是"磁盘操作系统".DOS是个人计算机上的一类操作系统.从1981年直到1995年的15年间,DOS在IBM PC 兼容机市场中占有举足轻重的地位.而且,若是把部份以DOS为基础的Microsoft Windows版本,如Windows 95.98和Me等都算进去的话,那么其商

C#发现之旅:C#开发Windows Service程序(下)

类似的对于"停止服务",其点击事件处理为 private void btnStopService_Click(object sender, EventArgs e) { if (bolServiceInstalled == false) return; using (System.ServiceProcess.ServiceController control = new System.ServiceProcess.ServiceController("MyFileSyste

Windows 2000/XP/2003 下 IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置

iis|mysql|window 一.软件准备:以下均为截止2005-4-20的最新正式版本PHP(5.1.2):http://www.php.net MySQL(5.0.19):http://www.mysql.com Zend Optimizer(2.6.2):http://www.zend.com phpMyAdmin(2.8.0.2):http://www.phpmyadmin.net 假设 C:\ 为你现在所使用操作系统的系统盘,如果你目前操作系统不是安装在 C:\ ,请自行修改. 二