NDIS HOOK和WinSock2 SPI技术原理
更新时间:2024-04-18 18:17:01 阅读量: 综合文库 文档下载
NDIS HOOK和WinSock2 SPI技术原理
NDIS HOOK技术原理
NDIS是微软和3COM共同提出来的网络驱动程序开发技术,NDIS HOOK是NDIS体系中技术最复杂,但功能最强大的一种子技术[32]。
NDIS HOOK技术原理:在Windows网络体系中,所有的数据接收和发送,网卡状态的设置与查询都经过了NDIS,无论是协议驱动程序,中间层驱动程序,还是微端口驱动程序它们都是直接调用NDIS相应的库函数。通过挂接这些NDIS库函数将所有这些收发数据途径截获,从而获得所有网络数据封包,然后我们可以对网络封包的内容进出处理包括解析、过滤、安全认证、加密等后再转发处出去。
在实际上,我们并不需要挂接所有的库函数,只需要钩挂少许的几个函数即可,如NdisRegisterProtocol和NdisOpenAdater。采用NDIS挂接库函数的方法来实现数据的截获是一种较高级、非常规的做法,需要对系统比较熟悉,并且对PE格式和NDIS的操作流程也要有一定的了解[33]。NDIS HOOK在协议栈中结构如图1所示。
TCP/IP Other Protocals NDIS HOOK Intermediate driver Miniport driver NetCard
图1 NDIS协议栈的结构图
Fig.1 Structure Chart of NDIS Protocol Stack
WinSock2 SPI技术原理
网络编程规范Windows Sockets是在Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。从1991年的1.0版到最新的2.2版,经过不断完善并且在Intel、 Microsoft、 Sun、 SGI、 Informix、 Novell等公司的全力支持下,己成为Windows网络编程的事实上的标准[34]。它不仅包含了具有Berkeley Socket风格的库函数,也包含了一组针对Windows的扩展库函数,使程序员能充分地利用Windows消息驱动机制进行编程。
Windows Socket规范提供给应用程序开发者一套简单的API,任何能够与Windows Sockets兼容实现协同工作的应用程序就被认为具有Windows Sockets接口。Windows Socket规范定义并记录了如何使用API与Internet协议族(IPS,通常指的是TCP/IP)连接。应用程序调用WinSock的API实现相互之间的通信,WinSock利用下层的网络通信协议功能和操作系统调用实现实际的通信工作,它们之间的关系如图2所示。
Process1 Process2
TCP/IP协议栈 WinSock API OS(Windows,Unix) 物理通讯介质
图2 WinSock体系结构 Fig. 2 WinSock Architecture
WinSock2是Windows Sockets的2.0版本,该版本引入了一种新的叫做SPI的编程接口。利用这种技术开放出标准的接口函数供程序员在服务提供者中间插入一层,从而完成诸如传输质量控制(Qos)、扩展TCP/IP协议栈、URL过滤及网络安全控制等功能。WinSock 2是一个接口,而不是协议,所以它可以用于发现和使用任意数量的底层传输协议所提供的通信能力。
WinSock2的传输服务提供者是以动态链接库形式(DLL)存在的,通过WSPStartup函数为上层函数提供接口,而其他的传输服务提供者函数则是通过分配表的方式来访问WS2_32.dll。传输服务提供者的动态链接库只有在应用程序需要时才由Ws2_32.dll来装入内存中的,在不需要时会被自动卸载。WinSock 2提供的服务提供者者的结构如图3所示。
Winsock2应用程序
Winsock2应用程序 Winsock API接口 传输函数 名字空间函数 TransportFunctions Name Space Function WS2_32.DLL
Winsock2传输服务提供者接口 Winsock2名字空间服务提供者接口
传输 服务提供者 服务提供者
传输 名字空间 服务提供者 名字空间 服务提供者 图3 WinSock2 SPI结构 Fig.3 WinSock2 SPI Structure
传输服务提供者实现的功能包括建立连接,传输数据,实现流控制和差错控制等函数。不仅要正确的安装服务提供者,还必须在Windows Socket中注册,将相关的系统信息保存在数据库中,这样Ws2_32.dll才能够获得下层服务提供者的相关信息。在Ws2_32.dll中提供了用来安装服务提供者的函数,它需要服务提供者的有关数据,例如DLL的名称和路径。同时Ws2_32.dll还提供了卸载服务提供者的函数SCDeinstallProvider,在不需要时通过它将特定的服务提供者从系统中删除。
正在阅读:
NDIS HOOK和WinSock2 SPI技术原理04-18
?小学支部委员会党建工作计划03-28
三菱FX2NPLC利用485BD与三菱变频器通讯的实例05-20
水质评价研究进展及水质评价方法综述_王维06-07
固体物理学习题解答(完整版)04-22
试题2014年上半学期CorelDRAW期末考试试题10-04
2015届高考高三英语二轮语法专项训练:情态动词与虚拟语气(1)Word版及答案08-18
大工16秋《公司金融》在线作业2满分答案12-07
逛新城表演唱02-17
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- WinSock2
- 原理
- 技术
- NDIS
- HOOK
- SPI