浏览器主页返回方法及装置与流程

文档序号:11432338阅读:243来源:国知局
浏览器主页返回方法及装置与流程

本发明涉及计算机领域,具体而言,涉及一种浏览器主页返回方法及装置。



背景技术:

目前,在市场上很多软件厂商的软件在windows中都能够锁定浏览器主页,尽管锁定浏览器主页的方法各种各样,但是大部分方法的平台兼容性比较弱,而且很容易被绕过,并且只能支持ie和个别的第三方浏览器。

针对上述相关技术中对浏览器主页进行锁定可靠性低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种浏览器主页返回方法及装置,以至少解决相关技术中对浏览器主页进行锁定可靠性低的技术问题。

为了解决上述问题,根据本发明实施例的一个方面,提供了一种浏览器主页返回方法,包括:通过内核异步过程调用apc注入动态链接库dll;在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;根据调用函数所包括的浏览器参数返回浏览器主页。

可选地,通过内核apc注入dll包括:在执行进程镜像文件的原始进入点oep应用之前,通过内核apc注入dll。

可选地,通过内核apc注入dll包括:确定要注入dll的目标进程;将中间跳板dll映射到目标进程的上下文中;将中间跳板dll的导出函数作为apc的dll插入到目标进程中。

可选地,在确定要注入dll的目标进程之后,还包括:在目标进程中分配一段用户态内存;将中间跳板dll的基地址,以及中间跳板dll的导出函数存入用户态内存中。

可选地,确定要注入dll的目标进程包括:通过createprocessnotifyroutine函数判断预定进程的父进程是否为预定浏览器进程,以及预定进程是否是wow64进程;在判断结果为均为是的情况下,确定预定进程为要注入dll的目标进程。

可选地,根据调用函数所包括的浏览器参数返回浏览器主页包括:在调用函数为getcommadlinew的情况下,在执行getcommadlinew所挂钩的进程时,根据getcommadlinew所包括的浏览器参数获得浏览器主页;返回获得的浏览器主页。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种浏览器主页返回装置,包括:调用单元,用于通过内核异步过程调用apc注入动态链接库dll;挂钩单元,用于在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;返回单元,用于根据调用函数所包括的浏览器参数返回浏览器主页。

可选地,调用单元包括:注入模块,用于在执行进程镜像文件的原始进入点oep应用之前,通过内核apc注入dll。

可选地,调用单元包括:确定模块,用于确定要注入dll的目标进程;映射模块,用于将中间跳板dll映射到目标进程的上下文中;插入模块,用于将中间跳板dll的导出函数作为apc的dll插入到目标进程中。

可选地,调用单元还包括:分配模块,用于在目标进程中分配一段用户态内存;导入模块,用于将中间跳板dll的基地址,以及中间跳板dll的导出函数存入用户态内存中。

可选地,确定模块包括:判断子模块,用于通过createprocessnotifyroutine函数判断预定进程的父进程是否为预定浏览器进程,以及预定进程是否是wow64进程;确定子模块,用于在判断结果为均为是的情况下,确定预定进程为要注入dll的目标进程。

可选地,返回单元包括:获取模块,用于在调用函数为getcommadlinew的情况下,在执行getcommadlinew所挂钩的进程时,根据getcommadlinew所包括的浏览器参数获得浏览器主页;返回模块,用于返回获得的浏览器主页。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述中任意一项的浏览器主页返回方法。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的浏览器主页返回方法。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种终端,包括:浏览器主页返回装置;处理器,处理器运行程序,其中,程序运行时对于从浏览器主页返回装置输出的数据执行如下处理步骤:通过内核异步过程调用apc注入动态链接库dll;在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;根据调用函数所包括的浏览器参数返回浏览器主页。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种终端,包括:浏览器主页返回装置;存储介质,用于存储程序,其中,程序在运行时对于从浏览器返回装置输出的数据执行如下处理步骤:通过内核异步过程调用apc注入动态链接库dll;在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;根据调用函数所包括的浏览器参数返回浏览器主页。

在本发明实施例中,可以实现通过内核异步过程调用apc注入动态链接库dll,然后在dll挂钩浏览器进程的调用函数,再根据调用函数所包括的浏览器参数返回浏览器主页,从而有效减少了在对浏览器主页进行锁定时容易被绕过的现象,进而解决了相关技术中对浏览器主页进行锁定可靠性低的技术问题,提高了用户的体验。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的浏览器主页返回方法的流程图;

图2是根据本发明实施例的浏览器主页返回装置的示意图;

图3是根据本发明实施例的浏览器主页返回装置的调用单元21优选示意图;

图4是根据本发明实施例的浏览器主页返回装置的调用单元21又一优选示意图;

图5是根据本发明实施例的浏览器主页返回装置的调用单元21另一优选示意图;

图6是根据本发明实施例的浏览器主页返回装置的确定模块41优选示意图;以及

图7是根据本发明实施例的浏览器主页返回装置的返回单元25优选示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:

网页浏览器(internetexplorer,简称ie):浏览器是指可以显示网页服务器或者文件系统的html(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件,它用来显示在万维网或局域网等的内容、图像及其他信息,其中,网页浏览器是微软公司推出的一款网页浏览器

挂钩:其中,钩子是windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它,钩子机制允许应用程序截获处理windows消息或特定事件,它实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,也即是钩子函数先得到控制权。

硬编码:指的是软件实现上,把输出或输入的相关参数(例如:路径、输出的形式或格式)直接以常量的方式书写在源代码中,而非在运行时期由外界指定的设置、资源、数据或格式作出适应回应。

动态链接库(dynamiclinklibrary,简称dll):是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式。

程序的原始进入点(originalentrypoint,简称oep):软件加壳就是隐藏了oep,只要找到程序真正的oep,就可以立刻脱壳。

进程控制符(processidentifier,简称pid):是各个进程的身份标识,程序一旦运行系统就会自动分配给进程一个独一无二的pid,进程中止后pid被系统回收,可能被继续分配给新运行的程序。

wow64(windows-on-windows64bit):是一个windows操作系统的子系统,它为现有的32位应用程序提供了32位的模拟,可以使大多数32位应用程序在无需修改的情况下运行在windows64位版本上。

针对上述问题,本发明实施例采用通过内核异步过程调用apc注入动态链接库dll,然后在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数,再根据调用函数所包括的浏览器参数返回浏览器主页。下面进行详细说明。

根据本发明实施例,提供了一种浏览器主页返回方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的浏览器主页返回方法的流程图,如图1所示,该浏览器主页返回方法包括如下步骤:

步骤s102,通过内核异步过程调用apc注入动态链接库dll。

步骤s104,在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数。

步骤s106,根据调用函数所包括的浏览器参数返回浏览器主页。

通过上述步骤,可以实现通过内核异步过程调用apc注入动态链接库dll,然后在dll挂钩浏览器进程的调用函数,再根据调用函数所包括的浏览器参数返回浏览器主页,从而有效减少了在对浏览器主页进行锁定时容易被绕过的现象,进而解决了相关技术中对浏览器主页进行锁定可靠性低的技术问题,提高了用户的体验。

在上述步骤s102至步骤s106中,通过内核异步过程调用apc注入动态链接库dll,在dll挂钩浏览器进程的调用函数,然后根据调用函数所包括的浏览器参数返回浏览器主页,从而有效减少了在需要锁定浏览器主页时被绕过的情况。

在本发明一个可选的实施例中,通过内核apc注入dll可以包括:在执行进程镜像文件的原始进入点oep应用之前,通过内核apc注入dll。

上述实施例中是向内核apc注入dll来实现的,这种方式是在进程镜像文件oep代码执行之前就将dll注入,相比相关技术中的在进程镜像oep执行之后注入dll的执行方式优势明显;另外,现在市场上很多注入方式都是通过写硬编码来实现dll的注入和挂钩系统api的,而本申请实施例中是不需要硬编码的,只需要c/c++编码就可以实现,从而达到了平台兼容性强的目的。

在本发明一个可选的实施例中,通过内核apc注入dll可以包括:确定要注入dll的目标进程;将中间跳板dll映射到目标进程的上下文中;将中间跳板dll的导出函数作为apc的dll插入到目标进程中。

在本发明另外一个可选的实施例中,在确定要注入dll的目标进程之后,该浏览器主页返回方法还可以包括:在目标进程中分配一段用户态内存;将中间跳板dll的基地址,以及中间跳板dll的导出函数存入用户态内存中。

在驱动记载时,在driverentry函数中设置loadimagenotifyroutine和createprocessnotifyroutine两个回调函数,那么,确定要注入dll的目标进程可以包括:通过createprocessnotifyroutine函数判断预定进程的父进程是否为预定浏览器进程,以及预定进程是否是wow64进程;在判断结果为均为是的情况下,确定预定进程为要注入dll的目标进程。具体地,当一个新的进程启动时,在createprocessnotifyroutine中判断一下这个进程是否需要注入dll进程,并且判断它的父进程是否是目标进程,例如,explorer.exe等,再判断这个浏览器进程是不是wow64进程,在这些条件都满足的情况下,则在内核中分配一个结构体将这些信息保存下来,当应用进程通过进程pid查找到内核链表。当应进程结束时通过进程pid查找内核链表。另外,在进程加载所需的dll是loadimagenotifyroutine回调函数会得到通知,具体地,当ntdll.dll模块加载时判断是否是要要注入的进程时,如果不是loadimagenotifyroutine回调函数则直接返回不做任何操作,如果是则在当前进程上下文中分配一段用户态内存membuff,并将一个中间跳板dll(命名为thunk.dll)映射到当前进程上下文中,然后将这块dll的基地址存放到membuff中,从ntdll.dll中获得必要的导出函数地址存放到membuff中,再将thunk.dll的一个导出函数做为apc的用户态历程插入当前线程,当下一个dll加载时,在loadimagenotifyroutine中将当前线程设置成警醒状态。

另外,根据调用函数所包括的浏览器参数返回浏览器主页可以包括:在调用函数为getcommadlinew的情况下,在执行getcommadlinew所挂钩的进程时,根据getcommadlinew所包括的浏览器参数获得浏览器主页;返回获得的浏览器主页。具体地,当主线程开始执行时apc的用户态进程将得到执行,apc的用户态进程加载目标dll(命名inject.dll),在injece.dll中对getcommadlinew挂钩,当新的浏览器进程启动为它所调用挂钩的getcommadlinew函数并获得浏览器主页时,返回要保护的主页。

在本申请实施例中也是锁定浏览器主页,具体地,可以通过浏览器启动主启动时,通过内核apc注入dll然后在dll挂钩浏览器主进程的getcommadlinew函数,当浏览器通过挂钩后的getcommadlinew获得浏览器参数时,这个挂钩的函数会给进程返回要保护的主页。这种方式支持支持windowsxp到windows10系统且支持多种浏览器,相对于市场中很多软件的在锁定浏览器主页时都会选择保护注册表或者保护浏览的配置文件,或者在windows系统的资源管理器进程内挂钩系统api保护浏览器进程的输入参数,本发明实施例中挂钩浏览器进程的系统api在浏览的输入参数传输过程最后一个环节保护自己的主页,这样就绕过输入参数在传输过程中到达最后一个环节之前输入参数劫持,从而高效锁定主页,同时也绕过了注册表或者浏览器配置文件中的主页劫持。

本申请实施例还提供了一种浏览器主页返回装置,需要说明的是,本申请实施例的浏览器主页返回装置可以用于执行本申请实施例所提供的用于浏览器主页返回方法。以下对本申请实施例提供的浏览器主页返回装置进行介绍。

图2是根据本发明实施例的浏览器主页返回装置的示意图,如图2所示,该浏览器主页返回装置包括:调用单元21、挂钩单元23以及返回单元25。下面进行详细说明。

调用单元21,用于通过内核异步过程调用apc注入动态链接库dll。

挂钩单元23,用于在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数。

返回单元25,用于根据调用函数所包括的浏览器参数返回浏览器主页。

在本申请实施例中提供的浏览器主页返回装置,通过调用单元21通过内核异步过程调用apc注入动态链接库dll;挂钩单元23在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;返回单元25根据调用函数所包括的浏览器参数返回浏览器主页。从而有效减少了在对浏览器主页进行锁定时容易被绕过的现象,进而解决了相关技术中对浏览器主页进行锁定可靠性低的技术问题,提高了用户的体验。

图3是根据本发明实施例的浏览器主页返回装置的调用单元21优选示意图。如图3所示,调用单元21包括:注入模块31,用于在执行进程镜像文件的原始进入点oep应用之前,通过内核apc注入dll。

图4是根据本发明实施例的浏览器主页返回装置的调用单元21优选示意图。如图4所示,调用单元21包括:确定模块41,用于确定要注入dll的目标进程;映射模块43,与上述确定模块41连接,用于将中间跳板dll映射到目标进程的上下文中;插入模块45,与上述映射模块43连接,用于将中间跳板dll的导出函数作为apc的dll插入到目标进程中。

图5是根据本发明实施例的浏览器主页返回装置的调用单元21优选示意图。如图5所示,调用单元21还包括:分配模块51,用于在目标进程中分配一段用户态内存;导入模块53,与上述分配模块51连接,用于将中间跳板dll的基地址,以及中间跳板dll的导出函数存入用户态内存中。

图6是根据本发明实施例的浏览器主页返回装置的确定模块41优选示意图。如图6所示,确定模块41包括:判断子模块61,用于通过createprocessnotifyroutine函数判断预定进程的父进程是否为预定浏览器进程,以及预定进程是否是wow64进程;确定子模块63,与上述判断子模块61连接,用于在判断结果为均为是的情况下,确定预定进程为要注入dll的目标进程。

图7是根据本发明实施例的浏览器主页返回装置的返回单元25优选示意图。如图7所示,返回单元25包括:获取模块71,用于在调用函数为getcommadlinew的情况下,在执行getcommadlinew所挂钩的进程时,根据getcommadlinew所包括的浏览器参数获得浏览器主页;返回模块73,与上述获取模块71连接,用于返回获得的浏览器主页。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述中任意一项的浏览器主页返回方法。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的浏览器主页返回方法。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种终端,包括:浏览器主页返回装置;处理器,处理器运行程序,其中,程序运行时对于从浏览器主页返回装置输出的数据执行如下处理步骤:通过内核异步过程调用apc注入动态链接库dll;在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;根据调用函数所包括的浏览器参数返回浏览器主页。

为了解决上述问题,根据本发明实施例的另外一个方面,还提供了一种终端,包括:浏览器主页返回装置;存储介质,用于存储程序,其中,程序在运行时对于从浏览器返回装置输出的数据执行如下处理步骤:通过内核异步过程调用apc注入动态链接库dll;在dll挂钩浏览器进程的调用函数,其中,调用函数包括有用于标识要返回的浏览器主页的浏览器参数;根据调用函数所包括的浏览器参数返回浏览器主页。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1