卡巴斯基反病毒软件实现了 NDIS中间层驱动程序技术,而且虽然用户可以禁用卡巴斯 基的反病毒仰13过滤功能,但是其3仍然是安全产品。然而,禁用仰13过滤功能将造成反 黒客/防火墙无法执行数据包过滤功能,也无法拦截恶意网络通信。根据文章“基于NDIS 中间层驱动程序的个人防火墙的设计和实现”,目前防御外来网络攻击和威胁(用户模式下 处理数据包)的防火墙技术存在许多的局限性。本文建议使用仰13中间层驱动程序,以更好地保护计算机系统的安全。NDIS数据包用NDIS_PACKET结构表示,其主要功能就是确保 正常接收和发送所有的网络数据。在发送数据之前,协议驱动程序首先分配仰13数据包; 然后用数据填充并发送给下层NDIS驱动程序。相反,某些底层NIC驱动程序分配数据包空 间用来存储接收的数据并传送给上层驱动程序。NDIS提供协助分配并操纵子结构的函数。 PCAUSA网站上有有关NDIS_PACKET结构的详细描述。
图2显示了仰13网络驱动程序桟中发送请求进程的整个过程。图片顶端是协议驱动程序, 下面是两个中间层驱动程序,最底端是小端口(miniport)。在调用况ndissend函数之前,协议驱动程序可以在private header(专用字头)中设置标记,该header『特为分配的数据包描 述符的仰13保留。这些标记指定调用者确定的信息,如未包含在数据包数据中的发送的请求 操作。底层^0驱动程序的組1^口01^3的(1函数将发送标记作为输入参数。当序列化的底层驱 动程序的资源不足以传输有效861«1数据包时,有两种方案可供选择:首先,MiniportSend 函数可以将数据包插入内部队列,并返回仰13_31八11^_?£仰1呢。驱动程序将数据包队列保 持到资源可用为止,然后在资源准备就绪时发送数据包。其次,Minip0rtSend函数可以简单 地用NDIS_STATUS_RESOURCES标记返回控制值。仰13库为作801^^881(^,在内部队列中拥有 这样一个返回的数据包,序列化的小端口驱动程序。之后调用NdisMSendComplete和 NdisMSendResourcesAvailable函数,则表示该小端口驱动程序已准备好接受861^数据包。 在恥^61^函数将新的阳1^请求发送给下层小端口驱动程序之前,即13中间层驱动程序必须 将来自上层驱动协议输入的阳1^数据包,用新的数据包描述符重新打包。 |