过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)

翻译 2001年01月13日 14:51:00

本章说明过滤钩子驱动程序. 一个过滤钩子驱动程序是用于操作系统中的一个IP过滤驱动程序的上下文
中处理或过滤网络包,过滤钩子驱动程序扩展了IP过滤驱动程序的功能。下面主题描述了过滤钩子驱动程序
的一些特性, 解释怎样建立过滤钩子并列出实现一个过滤钩子驱动程序相关的输入输出控制代码函数的参考
信息:
  1.1 关于过滤钩子驱动程序
   一个过滤钩子驱动程序是一个用于过滤网络包的核心模式驱动程序. 一个过滤钩子驱动程序扩展系统提
供的IP过滤驱动程序的功能。一个过滤钩子驱动程序仅仅只能安装于2000及其之后的系统上。仅仅只有一个
过滤钩子驱动程序能被安装在系统之上并且被IP过滤驱动程序使用。如果一个过滤钩子驱动程序的指向用于
IP过滤驱动程序的扩展钩子指针为空,那么他只能使用IP过滤驱动程序注册自己。一旦一个过滤钩子驱动程
序使用了IP过滤驱动程序注册自己,IP过滤程序给这个IP过滤程序的扩展钩子分派文件对象,用这种方法,
这个IP过滤驱动程序确保自己只能接受和使用单个的过滤钩子驱动程序.

  1.2 建立一个过滤钩子驱动程序
   一个过滤钩子驱动程序在包过滤API不能满足过滤网络包时候来建立。用户模式应用程序使用这些API来
建立和管理系统在IP过滤驱动程序中提供的输出和输入过滤器。更多API信息查看SDK。
   一个过滤钩子驱动程序是在核心模式驱动程序下开发的. 另外, 一个过滤钩子驱动程序完成一个过滤钩
子回调函数并在系统提供的IP过滤驱动程序中注册这个回调函数. 这个回调函数被看作一个过滤钩子。这个
IP过滤驱动程序以后使用这个过滤钩子以决定怎样处理到达和输出的包.

   下面的章节将说明怎样建立一个过滤钩子驱动程序
  1.2.1 建立过滤钩子
   一个过滤钩子在执行一个PacketFilterExtensionPtr类型的函数时被建立。
   当一个过滤钩子驱动程序在系统提供的IP过滤驱动程序中注册自己的过滤钩子实体指针时 ,这个过滤钩子
驱动程序给他的过滤钩子提供符号地址. 因为一个过滤钩子驱动程序提供这个地址, 而不是名字,这个过滤钩
子可以选择任何名字。当然,好的程序习惯是用其基本的功能来命名这个过滤钩子的名字。
   一个过滤钩子对到达与发出的包进行特定的动作,他将与IP过滤驱动程序发送给过滤钩子来检查怎样的包
将进一步处理的信息与到达的特定信息做比较。在过滤钩子检查包以后,他将使用PF_FORWARD, PF_DROP, 或
PF_PASS返回响应代码给IP过滤驱动程序怎样处理的信息:
  PF_FORWARD
  规定给IP过滤驱动程序马上返回转发响应给IP栈. 对于本地包, IP转发他们到栈顶. 如果包目标地址为外
部机器并且路由允许, IP路由他们到对应的路由.
  PF_DROP
  规定给IP过滤驱动程序马上返回drop响应给IP栈. IP将drop这个包.
  PF_PASS
   规定给IP过滤驱动程序过滤这个包并且返回这个结果响应给IP栈. IP过滤驱动程序怎样处理这个过滤包决
定于他怎样在Packet Filtering API中做的设置. 过滤钩子如果他检查到他不能处理的包但将允许IP过滤驱动
程序过滤包的时候返回这个pass响应。

  1.2.2 过滤钩子例子
   本节显示了一个简单的过滤钩子基于某几个固定的包属性来构成forward和drop检查. 这个过滤钩子指定
drop TCP包而forward其他协议的包.
   注意:如果特定IP地址或TCP/UDP端口的包必须被过滤,考虑使用包过滤API替代建立一个用户模式的应用
程序。这些API优化了系统提供的IP过滤驱动程序处理包而不需要在其上关联一个过滤钩子驱动程序.
 
  #define PROT_TCP  6
  // Drop all TCP packets
  PF_FORWARD_ACTION
  DropTcpPackets(
    unsigned char  *PacketHeader,
    unsigned char  *Packet,
    unsigned int  PacketLength,
    unsigned int  RecvInterfaceIndex,
    unsigned int  SendInterfaceIndex,
     IPAddr      RecvLinkNextHop,
     IPAddr      SendLinkNextHop
    )
  {
  if (PacketHeader->iph_protocol == PROT_TCP)
  {
    return PF_DROP;
  }
  return PF_FORWARD;
 }

 

过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)

2001年01月13日 14:51:00 本章说明过滤钩子驱动程序. 一个过滤钩子驱动程序是用于操作系统中的一个IP过滤驱动程序的上下文中处理或过滤网络包,过滤钩子驱动程序扩展了IP过滤驱动程...
  • softart
  • softart
  • 2007年10月27日 07:48
  • 296

DDK翻译:IOCTL指令简介

IO控制指令(IOCTLs)主要用于用户态应用程序和驱动之间的沟通或者设备栈内驱动之间的沟通,这种指令通过IRP来进行传送。    用户态应用程序通过调用DeviceIoControl来向...
  • guoduhua
  • guoduhua
  • 2016年03月28日 11:44
  • 348

过滤钩子驱动程序

这也是转的,把最近看的关于数据包拦截技术的好地文章都转出来。 ...
  • liang13664759
  • liang13664759
  • 2007年03月20日 20:25
  • 1791

过滤钩子驱动程序(2)

过滤钩子驱动程序参考     一个过滤钩子驱动程序提供自己的过滤钩子地址来注册过滤钩子实体指针给系统提供的IP过滤驱动程序. 这个过滤钩子是一个由PacketFilterExtensionPtr定义的...
  • mrh123
  • mrh123
  • 2002年08月23日 09:38
  • 1382

Windows内核开发之串口过滤

学习了几个月的内核编程,现在对Windows驱动开发又了更加深入的认识,特别是对IRP的分层处理逻辑有了深入认识。 总结起来就几句话: 当irp下来的时候,你要根据实际情况,进行处理 1> 无处理,继...
  • u012541747
  • u012541747
  • 2016年04月15日 13:51
  • 4148

VS2010 DDK编译驱动程序 环境配置详细步骤

VS2010  DDK编译驱动程序环境配置详细步骤   首先,建立一个文件,内容如下:          将内容里的 “D:\WinDDK”替换你的DDK安装路径        ...
  • wanyeye
  • wanyeye
  • 2014年02月20日 13:30
  • 3875

DDK编译驱动程序

驱动程序的编译和运行        首先,假设我们有驱动程序目录如下:        MinDriver         |--MAKEFILE   :DDK本身提供...
  • wcg19921010
  • wcg19921010
  • 2016年10月28日 21:34
  • 440

驱动程序中文件操作函数之ZwCreateFile

据说Windows是用80%的C和20%的汇编写成的,那么在驱动程序的DDK提供给程序员使用的内核函数就都包含了C的特性,比如一个函数的使用会包含多个结构体,所以在使用起来没有在用户模式下这么简单。 ...
  • yyylll62803112
  • yyylll62803112
  • 2014年03月30日 21:19
  • 1048

VC知识库文章 - NT DDK的安装以及设备驱动程序的编译

导读: 经常有人问及如何安装DDK,如何编译第一个设备驱动程序以及如何消除掉编译驱动程序 时出现的大量错误信息.  其实, DDK的安装和驱动程序的编译是很简单的. 为了编译驱动程 序, 你必须首先...
  • chief1985
  • chief1985
  • 2008年05月01日 15:01
  • 1165

VS2005编写window驱动

1、去http://ddkwizard.assarbad.net/ 下载ddkwizard,ddkbuild_bat.zip,ddkbuild_cmd.zip,这两个也要下载 2、拷贝 DDKBUI...
  • zhou191954
  • zhou191954
  • 2013年08月01日 22:34
  • 755
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:过滤钩子驱动程序一(微软DDK文档,FLASHSKY翻译)
举报原因:
原因补充:

(最多只允许输入30个字)