NDIS HOOK和WinSock2 SPI技术原理
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,在不需要时通过它将特定的服务提供者从系统中删除。
…… 此处隐藏:282字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




