admin管理员组

文章数量:1651797

2024年3月13日发(作者:)

分层服务提供者(LSP)(1)

开发过滤数据包的LSP程序可以定义过滤规则,恩,先看看

LSP本身是DLL,可以将它安装至Winsock目录,创建套接字的应用程序不必知道此

LSP的任何信息就能调用它

1. 运行原理

用户创建套接字

1) 套接字创建函数(如socket)在Winsock目录寻找合适的协议

2) 此协议的提供者导出的函数完成各种功能

我们的目的:

1) 将自己编写的提供者安装到Winsock目录中,让用户调用我们的服务提供者

2) 由我们的提供者调用下层提供者

就可以截获所有的Winsock调用

服务提供者本身是DLL,导出与Windows API相对应的函数,如

WSPStartup,WSPSocket,WSPSendTo等.

这里的LSP向上导出所有的SPI函数供Ws2_调用,在内部又通过基础服务提供

者实现这些SPI

2. 安装LSP

实现LSP之前,将分层提供者安装到Winsock目录,安装一个LSP包括安装一个

WSAPROTOCOL_INFOW结构(协议的入口),让创建套接字的应用程序可以枚举到它.

WSAPROTOCOL_INFOW结构:定义了分层提供者的特性和LSP是如何填写"链"的.

(1) 协议链

LSP和基础提供者连在一起形成了协议链,协议链描述了分层提供者加入Winsock目

录的顺序.

SPI提供三中协议:分层协议,基础协议,协议链

协议类型由WSAPROTOCOL_INFOW结构内的WSAPROTOCOLCHAIN结构中数据

指定,如下:

typedef struct _WSAPROTOCOLCHAIN {

int ChainLen; // 链的大小,也就是下面数组

的大小

DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; // 协议链入口数组,数组成

本文标签: 协议提供者分层过滤