屏蔽lsp模块注入的方法和装置的制造方法

文档序号:8298888阅读:1238来源:国知局
屏蔽lsp模块注入的方法和装置的制造方法
【技术领域】
[0001]本发明涉及信息技术领域,尤其涉及一种屏蔽LSP模块注入的方法和装置。
【背景技术】
[0002]可执行程序的线上崩溃率一部分是由于第三方软件的注入引起的,其中以分层服务提供者(Layer Service Provider,LSP)模块注入比较多,为了降低崩溃率,可以对LSP模块注入进行屏蔽处理。
[0003]相关技术中,进行注入的所有的LSP模块都被屏蔽,这就会导致有些软件功能不能使用。

【发明内容】

[0004]本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0005]为此,本发明的一个目的在于提出一种屏蔽LSP模块注入的方法,该方法可以区分注入的LSP模块,屏蔽需要屏蔽的LSP模块,而不屏蔽不需要屏蔽的LSP模块。
[0006]本发明的另一个目的在于提出一种屏蔽LSP模块的装置。
[0007]为达到上述目的,本发明第一方面实施例提出的屏蔽LSP模块注入的方法,包括:检测到要加载LSP模块;判断所述LSP模块是否是需要屏蔽的模块;如果是,屏蔽所述LSP模块注入到可执行程序中。
[0008]本发明第一方面实施例提出的屏蔽LSP模块注入的方法,通过判断要加载的LSP模块是否是需要屏蔽的模块,在是需要屏蔽的模块时进行屏蔽处理,可以区分注入的LSP模块,屏蔽需要屏蔽的LSP模块注入,而不屏蔽不需要屏蔽的LSP模块注入。
[0009]为达到上述目的,本发明第二方面实施例提出的屏蔽LSP模块注入的装置,包括:检测模块,用于检测到要加载LSP模块;判断模块,用于判断所述LSP模块是否是需要屏蔽的模块;屏蔽模块,用于如果是,屏蔽所述LSP模块注入到可执行程序中。
[0010]本发明第二方面实施例提出的屏蔽LSP模块注入的装置,通过判断要加载的LSP模块是否是需要屏蔽的模块,在是需要屏蔽的模块时进行屏蔽处理,可以区分注入的LSP模块,屏蔽需要屏蔽的LSP模块注入,而不屏蔽不需要屏蔽的LSP模块注入。
[0011]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【附图说明】
[0012]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0013]图1是本发明一实施例提出的屏蔽LSP模块注入的方法的流程示意图;
[0014]图2是本发明实施例中网络机制和LSP扩展的示意图;
[0015]图3是相关技术中LSP模块加载的流程示意图;
[0016]图4是相关技术中屏蔽LSP模块注入的流程示意图;
[0017]图5是本发明另一实施例提出的屏蔽LSP模块注入的方法的流程示意图;
[0018]图6是图5对应的系统结构示意图;
[0019]图7是本发明实施例中屏蔽LSP模块注入的流程示意图;
[0020]图8是本发明实施例中采用钩子拦截技术屏蔽LSP模块注入的结果示意图;
[0021]图9是本发明另一实施例提出的屏蔽LSP模块注入的装置的结构示意图;
[0022]图10是本发明另一实施例提出的屏蔽LSP模块注入的装置的结构示意图。
【具体实施方式】
[0023]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0024]图1是本发明一实施例提出的屏蔽LSP模块注入的方法的流程示意图,该方法包括:
[0025]Sll:检测到要加载LSP模块。
[0026]LSP模块是采用LSP协议进行通信的功能模块。
[0027]LSP协议用于扩展windows套接字(winsock), winsock是windows系统平台上的应用程序的网络套接字工具。
[0028]参见图2,是使用LSP协议扩展winsock的原理图。使用LSP协议扩展winsock时会加载服务,其中,加载的服务是以dll形式存在的,具体可以通过服务提供接口(serviceprovider interface,SPI)加载服务。
[0029]SPI 有两种,分别是 Transport SPI 和 NameSpace SPI,其中,Transport 是传输协议机制,NameSpace是域名解析机制,NameSpace SPI例如具体是getXXXbyXXX之类的调用接口。
[0030]为了与本发明实施例进行比对,首先介绍现有技术中加载LSP模块的流程以及现有技术中屏蔽LSP模块的流程。
[0031]参见图3,现有技术中加载LSP模块的流程可以包括:
[0032]S31:应用层调用网络函数。
[0033]网络函数包括一些预设的函数,例如,socket函数,send函数,sendto函数等。
[0034]S32:查找注册表找到当前要处理的LSP模块的文件位置,初始时,当前要处理的LSP模块是注册表中最顶层的LSP模块。
[0035]S33:通过1adlibrary函数加载该当前要处理的LSP模块并调用该当前要处理的LSP模块的WSAStartup函数。
[0036]S34:通过注册表检测是否还有下一层LSP模块,若是,重复执行S33及其后续步骤,若否,执行S35。
[0037]其中,LSP是分层服务提供者,包括很多层,因此可以逐层进行处理。例如,初始时先处理最顶层的LSP模块,之后通过注册表可以读取到第二层的LSP模块作为下一层LSP模块。
[0038]S35:调用网络驱动层完成。
[0039]由于LSP是在应用层,需要调用驱动完成整套网络功能,因此,通过图3所示的步骤可以完成网络驱动层的调用,从而实现整套网络功能。
[0040]屏蔽LSP模块也可以称为LSP拦截,现有技术中,可以采用注册表的重定向技术实现对LSP模块的拦截。参见图4,现有技术中,屏蔽LSP模块的流程可以包括:
[0041]S401:应用层调用网络函数。
[0042]网络函数包括一些预设的函数,例如,socket函数,send函数,sendto函数等。
[0043]S402:判断是否执行LSP拦截,若是,执行S403,若否,执行S406。
[0044]例如,通过1adlibrary函数加载的注册表的值可以确定是否执行LSP拦截。
[0045]S403:采用注册表重定向技术,读取到一个干净没被安装过任何LSP模块的注册表。
[0046]例如,先预设一个干净的注册表,之后读取到该预设的干净的注册表。
[0047]S404:加载伪造(fake)的LSP模块。
[0048]其中,可以通过文件名字替换实现加载fake的LSP模块,例如,将预设的文件名称替换当前加载的LSP模块的文件名称,该预设的文件名称是预设的fake的LSP模块的文件名称,fake的LSP模块可以是预设一个LSP模块并将其设置为fake的LSP模块,之后需要加载fake的LSP模块时,都将当前加载的文件名称替换为fake的LSP模块的文件名称。
[0049]S405:加载微软提供的mswsock.dll模块。之后,执行S409。
[0050]通过注册表的重定向技术,读取到一个预先设定好的干净的注册表,也就是没被安装过任何LSP的一张注册表
当前第1页1 2 3 4 
网友询问留言 已有1条留言
  • 177837... 来自[中国] 2023年02月14日 23:15
    看上去好厉害的样子
    0
1