深度剖析WinPcap之(三)——内核驱动NPF涉及的基础知识(1)

本文介绍了WinPcap内核驱动NPF涉及的Windows驱动基础知识,包括驱动对象DRIVER_OBJECT、设备对象DEVICE_OBJECT、设备扩展_DEVICE_EXTENSION以及IRP与派遣函数。详细讲解了这些概念的结构、作用以及在驱动程序中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WinPcap的内核驱动程序NPF是一个协议驱动程序,其涉及到一些编写Windows驱动程序的基础知识与NDIS协议驱动程序编写的基础知识。本章主要对这些基础知识进行简要的描述以便于后续的理解。

 

 

1.1        Windows驱动的基础知识

本节主要描述在WinPcapNPF中经常使用一些编写Windows驱动程序所需掌握的部分基础知识,以便于后面的理解。

1.1.1        驱动对象DRIVER_OBJECT

    每个驱动程序都有唯一的驱动对象与之对应,该驱动对象在驱动程序被加载时由内核的对象管理程序所创建。

驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动程序的一个实例被内核加载,对一个驱动程序内核I/O管理器只加载一个实例。

驱动对象数据结构在wdm.h文件中的定义如下。

typedef struct _DRIVER_OBJECT {

    CSHORT Type;

    CSHORT Size;

 

/*

*DeviceObject为每个驱动程序所创建的一个或多个设备对象链表,

*Flags提供一个扩展的标识定位驱动对象

*/

    PDEVICE_OBJECT DeviceObject;

    ULONG Flags;

  

/*下列各成员字段描述驱动程序从哪儿被加载*/

PVOID DriverStart;

    ULONG DriverSize;

    PVOID DriverSection;

    PDRIVER_EXTENSION DriverExtension;

 

    /*

*DriverName成员被错误日志线程用来

*确定一个I/O请求越界的驱动名称

*/

    UNICODE_STRING DriverName;

   

    /*指向注册表中硬件信息的路径*/

    PUNICODE_STRING HardwareDatabase;

 

   

/*

*如果驱动支持“fast I/O”,

*就指向一个“fast I/O”的派遣函数数组

*/

    PFAST_IO_DISPATCH FastIoDispatch;

 

  

/*

*描述该特定驱动的入口点。

*主函数(major function)派遣函数表必须是对象最后的成员,

*因此它仍然是可扩展的

*/

    PDRIVER_INITIALIZE DriverInit;

什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets。 这是一种简单的实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口。 然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中的数据包。也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的数据包。 WinPcap产生的目的,就是为Win32应用程序提供这种访问方式; WinPcap提供了以下功能 捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包 将原始数据包通过网络发送出去 收集并统计网络流量信息 以上这些功能需要借助安装在Win32内核中的网络设备驱动程序才能实现,再加上几个动态链接库DLL。 所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。 如果您现在就想开始摸索这些功能,您可以直接进入 WinPcap用户手册. 哪些程序在使用WinPcap WinPcap可以被用来制作许多类型的网络工具,比如具有分析,解决纷争,安全和监视功能的工具。特别地,一些基于WinPcap的典型应用有: 网络与协议分析器 (network and protocol analyzers) 网络监视器 (network monitors) 网络流量记录器 (traffic loggers) 网络流量发生器 (traffic generators) 用户级网桥及路由 (user-level bridges and routers) 网络入侵检测系统 (network intrusion detection systems (NIDS)) 网络扫描器 (network scanners) 安全工具 (security tools) 什么是WinPcap做不到的 WinPcap能 独立地 通过主机协议发送和接受数据,如同TCP-IP。这就意味着WinPcap不能阻止、过滤或操纵同一机器上的其他应用程序的通讯:它仅仅能简单地"监视"在网络上传输的数据包。所以,它不能提供类似网络流量控制、服务质量调度和个人防火墙之类的支持
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值