LSP和Hooks拦截 您所在的位置:网站首页 微软lsp LSP和Hooks拦截

LSP和Hooks拦截

2023-10-27 21:25| 来源: 网络整理| 查看: 265

分层服务提供者(英语:Layered Service Provider,缩写LSP)是一项已被弃用的Microsoft Windows中Winsock 2服务提供者接口(SPI)的特性,它也被称为分层服务提供商或分层服务提供程序。

分层服务提供者为使用Winsock API插入本身到TCP/IP协议栈的DLL。在进入协议栈后,分层服务提供者可以拦截和修改入站和出站的互联网流量。它可以处理所有访问互联网的应用程序(例如网页浏览器、电子邮件客户端等)连接互联网的TCP/IP流量。

但是,它也可能被恶意软件用以重定向网络访问到恶意网站,或阻止访问Windows Update等网站。不过,计算机安全程序也可以用它扫描网络流量以检测病毒和其他威胁。Winsock服务提供者接口(SPI)API提供了一种将提供者彼此分层的机制。Winsock LSP可用于一系列功能目的,包括家长控制和Web内容过滤。Windows Vista中的家长控制Web过滤器就是一个LSP。所有提供者的分层顺序保存在Winsock目录中。

LSP用在正途上可以方便程序员们编写监视系统网络通讯情况的Sniffer,可是现在常见的LSP都被用于浏览器劫持.

(1)LSP劫持WSPrecv实现HTTP劫持 (2)LSP劫持WSPrecv实现TCP(HTTP也是TCP)劫持 (3)LSP劫持WSPSend实现TCP(HTTP也是TCP)劫持 (4)LSP劫持WSPConnect实现TCP(HTTP也是TCP)连接服务器IP端口劫持

 

在编程中,钩子(HOOK)是一个地方,通常是打包代码中提供的接口,允许程序员插入自定义编程。 例如,程序员可能希望提供用于分析在程序中采用特定逻辑路径的频率的代码。 或者编程人员可能希望插入其他功能。 通常,钩子是出于声明的目的而提供的,并且为程序员记录。

首先来说说windows 消息Hook,这个消息Hook就是我们常用的通过SetWindowsHookEx来设置一个Hook,这个函数通过将这个Hook插入到Hook链的最前端,而发送给我们已经Hook了的窗口的消息首先会被我们的Hook函数截获,也就是我们优先于窗体捕获到消息。

Windows Message Hook 可以实现全局Hook和局部Hook。局部Hook是在自身进程中创建一个Hook,可以用来捕获自身进程中的消息;而全局Hook是可以捕获操作系统下所有的指定的消息,需要借助于DLL来实现。全局钩子必须要使用DLL,DLl存放了钩子函数的代码。在操作系统中安装了全局钩子后,只要进程收到可以发出钩子的消息后,全局钩子的DLl文件会被操作系统自动或强行地加载到该进程中。可以发现设置消息钩子也是一种导入DLl的方法。

(1)Hook技术之API拦截(API Hook)

API HOOK 顾名思义是挂钩API函数,拦截,控制某些API函数的调用,用于改变API执行结果的技术。需要注意的是API HOOK技术与windows下的Messages Hook技术是不同的,在原理上就完全不一样。消息钩子是截获程序中的消息或事件的。 API钩子是拦截目标程序中调用的函数,替换或者修改调用函数的功能。

(2)Hook技术之消息拦截(Windows Hook )

首先来说说windows 消息Hook,这个消息Hook就是我们常用的通过SetWindowsHookEx来设置一个Hook,这个函数通过将这个Hook插入到Hook链的最前端,而发送给我们已经Hook了的窗口的消息首先会被我们的Hook函数截获,也就是我们优先于窗体捕获到消息。

Windows Message Hook 可以实现全局Hook和局部Hook。局部Hook是在自身进程中创建一个Hook,可以用来捕获自身进程中的消息;而全局Hook是可以捕获操作系统下所有的指定的消息,需要借助于DLL来实现。全局钩子必须要使用DLL,DLl存放了钩子函数的代码。在操作系统中安装了全局钩子后,只要进程收到可以发出钩子的消息后,全局钩子的DLl文件会被操作系统自动或强行地加载到该进程中。可以发现设置消息钩子也是一种导入DLl的方法。

(3)HOOK技术之拦截进程.拦截线程.拦截模块

在32系统下, 例如我们要HOOK SSDT表,那么直接讲CR0的内存保护属性去掉. 直接讲表的地址修改即可.但是在64位系统下,不可以这样操作了.

第一是因为 SSDT表加密了.  

第二是 SSDT表你就算解密了. 那么你的API的地址也会很远. SSDT表放不下4G以外的地址. 所以也不能放.

而现在.试想一下, 杀毒软件也要在内核中做点手脚. 如果不能HOOK了,它们该怎么发展那?

所以到了win7 (64位)系统下, 微软被玩怕了. 直接告诉你. 你想HOOK那个API,我帮你做. 你不用动手做. 而且我的还稳定.不会蓝屏.

所以x64下的HOOK都是很简单的。

比如 xxx杀毒软件要监视进程的创建. 那么微软就说.我给你API调用,你提供回调. 当创建的时候我就通知你. 返回值也是你说了算.

这样我们就可以使用它的API了.  线程. 模块都是这样的.

 

先简单了解一下相关的概念,具体步骤请参考以下文章,或日后再议。

参考:https://blog.csdn.net/u013761036/article/details/72795305

            https://www.cnblogs.com/iBinary/p/8399312.html

            https://blog.csdn.net/junbopengpeng/article/details/28148253



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有