和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信科技

您的当前位置: 和记娱乐主页 > 通信科技 >

网络编程之编写LSP进行Winsock API拦截或LSP注入

发布日期:2019-09-20 11:02 来源:和记h88 发布人:和记娱乐 点击:

  用到的工具:VS2015 语言:C/C++ 需要系统提供的动态链接库:1、 sporder.dll    //很多系统不自带着个dll,导致编译时缺少dll无法编译. (发布时必须将此dll放到程序目录) 本人只提供:   WIN7 64位的sporder.dll :其他系统自行网上下载. 安装、移除LSP、编写分层提供者DLL、测试程序的源码:(申明:本人只在Win7 32/64位 和 Win10 64测试过) (除了文章中的源码之外,包含了测试程序的源码)

  3、当Windows程序想要使用网络时,必须加载SPI的基础提供者(TCP、UDP、原始)才能进行网络通讯。

  4、安装LSP分层服务提供者就是写一个DLL,让网络程序先加载进去调用,然后再我们的DLL内,再调用基础服务提供者,进行网络通讯,所以在这过程中,我们可以对系统上所有使用特定协议的网络程序,在用户模式下进行Winsock API调用,HOOK拦截,甚至利用LSP注入DLL。

  5、LSP一般是对网络进行更高级的通讯服务管理、过滤,黑客常用它来进行浏览器劫持、用户信息等等.

  4、拦截API函数就是将下层提供者(基础协议提供者)的函数地址记录下来,将我们自定义的函数地址替换上去,执行到如send时就会先调用我们的自定义函数,再由我们的自定义函数,考虑要不要调用真正的send.

  1、网络程序加载LSP分层服务提供者的DLL,并调用了DLL里的WSPStartup初始化函数.

  3、对下层提供者的函数表地址进行修改,修改感兴趣的网络函数指向我们的自定义函数,进行拦截、Winsock API.

  头文件:       //在SPI篇的时候,用到的函数,用于遍历系统所有协议,包括分层协议

  一、简述:1、安装、卸载LSP必须是管理员用户组的权限才能使用.2、下面的例子中,我一共安装了1个分层协议(DLL),3个协议链(用于抢在TCP、UDP、原始套接字提供者前执行)3、在篇中的     “网络程序是如何调用Winsock2 服务提供者进行网络通讯”    调用网络通讯的机制,所以要将新安装的协议链,排在遍历函数的最前面,网络程序先找到适合的协议,就会用那个协议,如果排在后面,就可能载入别的相同类型的协议的提供者,而不使用我们的分层提供者.

  【编写步骤分析】一、遍历所有协议,将UDP、TCP、原始的Winsock目录入口(结构体)各复制一份出来.二、随便找一个下层协议(基础服务提供者)的Winsock目录入口结构体作为模板,用于安装LSP时作为它的Winsock目录入口(结构体).1、必须修改协议名称(szProtocol).2、dwServiceFlags1必须将XP1_IFS_HANDLES标志去掉.

  三、安装3个协议链(协议链,排在第一位的就是我们新安装的分层提供者)1、为什么有3个协议链,因为它们各对应一个基础协议提供者,分别是TCP、UDP、原始,当网络程序使用TCP、UDP、原始,会先加载我们的分层服务提供者LSP的DLL。

  四、重新排序Winsock目录1、因为新安装的提供者,都会排在最后,这样如果前面有网络程序适合的提供者时,就会直接载入它的DLL,而不载入我们LSP的DLL.头文件:

  【测试】1、安装了一个LSP分层服务提供者(相当于HOOK了TCP、UDP、原始套接字),三个协议链

  2、当有程序使用8888端口进行TCP连接或8888端口使用UDP发送数据时,就会拦截:

      和记娱乐,和记h88,h88平台官网