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

文档序号:8298888阅读:来源:国知局
,根据该干净的注册表加载伪造(fake)的LSP模块,这时候得到的是微软提供的mswsock.dll模块的文件路径,之后可以根据该文件路径加载微软提供的mswsock.dll模块。该mswsock.dll模块会调用底层的网络驱动完成函数调用。
[0051]其中,mswsock.dll模块是微软的LSP网络模块。
[0052]S406:查找注册表找到当前要处理的LSP模块的文件位置,初始时,当前要处理的LSP模块是注册表中最顶层的LSP模块。
[0053]由于LSP是分层服务提供者,采用LSP机制可以实现分层,得到不同层的LSP模块。
[0054]S407:通过1adlibrary函数加载该当前要处理的LSP模块并调用该当前要处理的LSP模块并调用该模块的WSAStartup函数。
[0055]S408:通过注册表检测是否还有下一层LSP模块,若是,重复执行S407及其后续步骤,若否,执行S409。
[0056]其中,LSP是分层服务提供者,包括很多层,因此可以逐层进行处理。例如,初始时先处理最顶层的LSP模块,之后通过注册表可以读取到第二层的LSP模块作为下一层LSP丰旲块。
[0057]其中,当存在下一层LSP模块时,将该下一层LSP模块作为新的当前要处理的LSP模块,并重复执行上述步骤中对当前要处理的LSP模块的处理流程。
[0058]S409:调用网络驱动层完成。
[0059]其中,S406-S409可以具体参见S32-S35,在此不再赘述。
[0060]如图4所示的流程,现有技术中,通过注册表重定向技术会把所有的LSP模块都屏蔽。
[0061 ] 而本实施例中,为了实现对LSP模块的区分处理,本实施例在Sll之后还执行如下步骤:
[0062]S12:判断所述LSP模块是否是需要屏蔽的模块。
[0063]例如,可以预先配置需要屏蔽的LSP模块的信息,当加载的LSP模块的信息属于预先配置的需要屏蔽的LSP模块的信息时,判断出加载的LSP模块是需要屏蔽的模块,否则不是需要屏蔽的模块。
[0064]S13:如果是,屏蔽所述LSP模块注入到可执行程序中。
[0065]例如,当加载的LSP模块是需要屏蔽的模块时,加载fake的LSP模块,以及加载微软提供的mswsock.dll模块,该mswsock.dll模块会调用底层的网络驱动完成函数调用,从而实现对LSP模块注入的屏蔽。
[0066]具体的,当加载的LSP模块是需要屏蔽的模块后,可以具体执行S404-S405的所示的内容,在此不再赘述。
[0067]本实施例通过判断加载的LSP模块是否是需要屏蔽的模块,在是需要屏蔽的模块时进行屏蔽处理,可以区分注入的LSP模块,屏蔽需要屏蔽的LSP模块注入,而不屏蔽不需要屏蔽的LSP模块注入。
[0068]图5是本发明另一实施例提出的屏蔽LSP模块注入的方法的流程示意图,图6是图5对应的系统结构示意图。
[0069]参见图6,该系统可以包括运行可执行程序的模块,图6中用可执行程序61表示,还包括倾出(dump)平台62和服务端,服务端在图6中用云端数据库配置模块63表示。其中,运行可执行程序的模块中可以包括LSP钩子拦截模块611,自检测模块612和dump上报模块613,LSP钩子拦截模块611用于执行钩子拦截,通过钩子拦截可以及时检测到通过1adlibrary的方法加载的LSP模块;自检测模块612用于检测是否发生预设的不良后果,不良后果例如为不能上网;dump上报模块613用于检测崩溃信息和向dump平台62上报崩溃信息。dump平台可以根据接收到的崩溃信息进行dump分析621和检测到LSP崩溃622。云端的数据库配置模块63可以进行云端配置策略分析631,云端配置策略分析631可以将dump平台得到的引起崩溃的LSP模块的信息记录在配置文件中。
[0070]参见图5,本实施例的屏蔽LSP模块注入的方法包括:
[0071]S51:可执行程序在崩溃时,将崩溃信息发送给dump平台。
[0072]其中,可执行程序可以采用其中的dump上报模块进行崩溃信息检测和上报。
[0073]崩溃信息可以包括发生崩溃时注入的模块的信息和全局LSP信息。
[0074]全局LSP信息是包括所有已经注册的LSP模块的信息,具体可以记录在注册表中。
[0075]发生崩溃时注入的模块的信息是注入到可执行程序后引起崩溃的模块的信息,具体可以记录在用于记录崩溃信息的文件中。
[0076]S52:dump平台根据所述崩溃信息确定出所述崩溃是由LSP模块注入引起的,将引起所述崩溃的LSP模块的信息发送给云端。
[0077]其中,dump平台中可以包括dump分析模块,dump分析模块可以根据崩溃信息分析崩溃是否由LSP模块注入引起,例如,崩溃信息中包含发生崩溃时注入的模块的信息和全局的LSP信息,通过比对可以确定崩溃是否由LSP模块注入引起,例如,发生崩溃时注入的模块的信息属于全局的LSP信息,通过比对可以确定崩溃是由LSP模块注入引起,具体如,如果发生崩溃时得到注入的模块的信息是第一模块的信息,而全局的LSP模块的信息中包含第一模块的信息,由于发生崩溃时注入的模块的信息属于全局的LSP模块的信息,也就是说,发生崩溃时注入的模块的信息是LSP模块的信息,则可以确定崩溃是由LSP模块注入引起。
[0078]通过dump分析检测到LSP模块注入引起的崩溃后,可以将崩溃信息中包含的模块的信息发送给云端,例如,将第一模块的信息发送给云端。
[0079]云端接收到第一模块的信息后,可以将其保存在配置文件中。
[0080]S53:可执行程序再次启动后,从云端获取配置文件,并启动钩子拦截。
[0081]参见图7,获取配置文件和启动钩子拦截后,进行屏蔽LSP模块注入的流程可以包括:
[0082]S701:应用层调用网络函数。
[0083]网络函数包括一些预设的函数,例如,socket函数,send函数,sendto函数等。
[0084]S702:查找注册表找到当前要处理的LSP模块的文件位置,初始时,当前要处理的LSP模块是注册表中最顶层的LSP模块。
[0085]S703:通过1adlibrary函数加载当前要处理的LSP模块。
[0086]S704:通过钩子拦截检测到加载LSP模块。
[0087]例如,对1adlibrary函数进行钩子(hook),从而通过钩子拦截可以及时的检测到LSP模块的加载。
[0088]S705:判断加载的LSP模块的信息是否在配置文件中,若是,执行S706,若否,执行S708o
[0089]S706:加载伪造(fake)的LSP模块。
[0090]其中,可以通过文件名字替换实现加载fake的LSP模块,例如,将预设的文件名称替换当前加载的LSP模块的文件名称,该预设的文件名称是预设的fake的LSP模块的文件名称,fake的LSP模块可以是预设一个LSP模块并将其设置为fake的LSP模块,之后需要加载fake的LSP模块时,都将当前加载的文件名称替换为fake的LSP模块的文件名称。
[0091]S707:加载微软提供的mswsock.dll模块。之后,执行S710。
[0092]其中,可以通过加载fake的LSP模块,实现加载微软提供的mswsock.dll模块。
[0093]mswsock.dll模块是微软的LSP网络模块。
[0094]S708:调用该模块的WSAStartup函数。
[0095]1adlibrary函数和WSAStar
当前第2页1 2 3 4 
网友询问留言 已有1条留言
  • 177837... 来自[中国] 2023年02月14日 23:15
    看上去好厉害的样子
    0
1