VC++基于LSP拦截数据封包

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

LSP即分层服务提供商,Winsock 作为应用程序的 Windows 的网络套接字工具,可以由称为“分层服务提供商”的机制进行扩展。

Winsock LSP 可用于非常广泛的实用用途,包括 Internet 家长控制 (parental control) 和 Web 内容筛选。在以前版本的 Windows XP 中,删除不正确的(也称为“buggy”)LSP 可能会导致注册表中的 Winsock 目录损坏,潜在地导致所有网络连接的丢失。
LSP(Layered Service Provider )  中文名为分层服务提供程序。 LSP就是TCP/IP等协议的接口.LSP用在正途上可以方便程序员们编写监视系统网络通讯情况的Sniffer,可是现在常见的LSP都被用于浏览器劫持.

 LSP安装卸载代码如下

//// InstLSP.cpp文件// 包含了安装LSP的代码// InstallProvider(WCHAR *pwszPathName) 将指定LSP提供者安装到TCP UDP 和原始套节字之上// RemoveProvider()      移除InstallProvider函数安装的LSP#define UNICODE#define _UNICODE#include <Ws2spi.h>#include <Sporder.h>  // 定义了WSCWriteProviderOrder函数#include <windows.h>#include <stdio.h>#pragma comment(lib, "Ws2_32.lib")#pragma comment(lib, "Rpcrt4.lib"// 实现了UuidCreate函数// 要安装的LSP的硬编码,在移除的时候还要使用它GUID  ProviderGuid = {
   0xd3c21122, 0x85e1, 0x48f3,        {
   0x9a,0xb6,0x23,0xd9,0x0c,0x73,0x07,0xef}};LPWSAPROTOCOL_INFOW GetProvider(LPINT lpnTotalProtocols){ DWORD dwSize = 0int nError; LPWSAPROTOCOL_INFOW pProtoInfo = NULL;  // 取得需要的长度 if(::WSCEnumProtocols(NULL, pProtoInfo, &dwSize, &nError) == SOCKET_ERROR) {  if(nError != WSAENOBUFS)   return NULL; }  pProtoInfo = (LPWSAPROTOCOL_INFOW)::GlobalAlloc(GPTR, dwSize); *lpnTotalProtocols = ::WSCEnumProtocols(NULL, pProtoInfo, &dwSize, &nError); return pProtoInfo;}void FreeProvider(LPWSAPROTOCOL_INFOW pProtoInfo){ ::GlobalFree(pProtoInfo);}BOOL InstallProvider(WCHAR *pwszPathName){ WCHAR wszLSPName[] = L"PhoenixLSP"; LPWSAPROTOCOL_INFOW pProtoInfo; int nProtocols; WSAPROTOCOL_INFOW OriginalProtocolInfo[3]; DWORD    dwOrigCatalogId[3]; int nArrayCount = 0; DWORD dwLayeredCatalogId;  // 我们分层协议的目录ID号 int nError;   // 找到我们的下层协议,将信息放入数组中 // 枚举所有服务程序提供者 pProtoInfo = GetProvider(&nProtocols); BOOL bFindUdp = FALSE; BOOL bFindTcp = FALSE; BOOL bFindRaw = FALSE; for(int i=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSP(Language Server Protocol)的C/C++程序编辑与编译服务需要以下几个关键组件: 1. 编辑器/客户端:这可以是任何支持LSP的编辑器或IDE,例如Visual Studio Code、Sublime Text、Vim等。编辑器通过LSP与服务端进行通信,发送请求并接收响应。 2. 语言服务器:语言服务器是一个独立的进程,负责处理客户端发送的请求并返回响应。对于C/C++语言,可以使用clangd作为语言服务器。clangd提供了代码补全、跳转到定义、重构等功能,以及代码的静态分析和编译。 3. 编译器/工具链:C/C++语言需要一个编译器来将源代码编译为可执行文件。在服务端中,你需要安装适当的C/C++编译器(例如GCC、Clang)和相关的工具链。 4. 代码分析工具:为了提供更多的代码分析和智能提示功能,你可能需要使用其他代码分析工具,如Clang-Tidy、Cppcheck等。这些工具可以帮助检查代码中的潜在问题或错误,并提供建议。 5. 构建系统:服务端需要一个构建系统来编译和构建C/C++项目。常见的构建系统包括Make、CMake等。你需要确保你的构建系统配置正确,并能与语言服务器配合使用。 6. 服务器端代码:这是一个运行在服务器上的代码,负责与客户端进行通信,并提供C/C++编辑和编译服务。服务器端代码需要实现LSP协议,处理客户端的请求并返回响应。 通过以上组件的组合,你可以搭建一个基于LSP的C/C++程序编辑与编译服务,提供代码补全、导航、重构等功能,以及对代码的静态分析和编译支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值