一种驱动程序修复方法及装置与流程

文档序号:13252890阅读:154来源:国知局
技术领域本发明涉及计算机信息安全领域,特别涉及一种驱动程序修复方法及装置。

背景技术:
每一个驱动程序加载时,终端的系统都会为其创建一个对应的驱动对象,该驱动对象中包含了包括该驱动程序的执行入口地址在内的众多信息。并且该驱动对象可以通过驱动程序的名称查询到,且存储于该终端的系统中。终端的系统提供了一种模块加载回调机制,驱动程序在注册一个模块加载回调函数后,当终端的系统中有其他驱动程序加载时,终端的系统会通知与该驱动程序对应的回调函数有其他驱动程序加载,该回调函数会获取该其他驱动程序的加载信息,该加载信息中包括该其他驱动程序的执行入口地址以及其他驱动程序的文件路径等等,进而进行处理。此时,对于该其他驱动程序来说,该其他驱动程序只是加载到了终端的系统的内存中,还未开始执行该其他驱动程序的执行入口地址处对应的汇编代码。进行处理后,会使得该其他驱动程序无法正常运行,使其功能不能发挥。举例而言,在终端的系统中,恶意软件可以采用上述方法获得安全软件的驱动程序的运行,该恶意软件获得该安全软件的驱动程序的加载信息,从加载信息中获得该安全软件的驱动程序的执行入口地址,然后对该执行入口地址处所对应的汇编代码进行修改,如修改为代码:moveax,0xC0000022ret0x8,对应的二进制数据为0xB8,0x22,0x00,0x00,0xC0,0xC2,0x08,0x00,这段代码的意思就是返回拒绝访问,当安全软件的驱动程序从执行入口地址处开始执行汇编代码时,就会执行修改后的汇编代码,即返回拒绝访问,从而不会执行安全软件的驱动程序的真正代码内容,这就使得安全软件的驱动程序工作失败,进而安全软件的保护功能失效,终端的系统存在安全隐患。

技术实现要素:
本发明实施例公开了一种驱动程序修复方法及装置,以避免驱动程序被修改,使得驱动程序不能正常运行,进而该驱动程序的功能不能发挥。具体方案如下:一方面,本发明实施例提供了一种驱动程序修复方法,所述方法包括:修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象,其中,所述修复性驱动程序为:在防御性进程判断所述防御性驱动程序符合预定条件时,通过所述防御性进程加载至终端的系统的内存中的程序;从所述防御性驱动对象中,确定所述防御性驱动程序的第一执行入口地址;根据所述防御性驱动程序对应的文件,确定所述防御性驱动程序的原始汇编代码;将所述第一执行入口地址中对应存储的目标汇编代码修改为所述原始汇编代码;调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码。较佳的,所述预定条件包括:所述防御性进程检测到所述防御性驱动程序已加载至所述终端的系统的内存,并且在预定时间内未接收到所述防御性驱动程序发送的系统保护信息。较佳的,所述根据所述防御性驱动程序对应的文件,确定所述防御性驱动程序的原始汇编代码,包括:将所述防御性驱动程序对应的文件映射到所述终端的系统的内存中,并确定第二执行入口地址;从所述第二执行入口地址中提取对应存储的所述原始汇编代码。较佳的,在所述修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象之前,本发明实施例所提供的一种驱动程序修复方法还包括:输出第一提示信息,以提示用户所述终端的系统存在安全隐患,并开始修复过程。较佳的,在所述调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码之后,本发明实施例所提供的一种驱动程序修复方法还包括:输出第二提示信息,以提示用户所述终端的系统的安全隐患被修复成功。另一方面,本发明实施例还提供了一种驱动程序保护装置,所述装置包括:驱动对象确定模块、第一入口地址确定模块、原始汇编代码确定模块、汇编代码修改模块和入口地址调用模块;所述驱动对象确定模块:用于修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象,其中,所述修复性驱动程序为:在防御性进程判断所述防御性驱动程序符合预定条件时,通过所述防御性进程加载至终端的系统的内存中的程序;所述第一入口地址确定模块:用于从所述防御性驱动对象中,确定所述防御性驱动程序的第一执行入口地址;所述原始汇编代码确定模块:用于根据所述防御性驱动程序对应的文件,确定所述防御性驱动程序的原始汇编代码;所述汇编代码修改模块:用于将所述第一执行入口地址中对应存储的目标汇编代码修改为所述原始汇编代码;所述入口地址调用模块:用于调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码。较佳的,所述预定条件包括:所述防御性进程检测到所述防御性驱动程序已加载至所述终端的系统的内存,并且在预定时间内未接收到所述防御性驱动程序发送的系统保护信息。较佳的,所述原始汇编代码确定模块包括第二入口地址确定单元和原始汇编代码提取单元;所述第二入口地址确定单元:用于将所述防御性驱动程序对应的文件映射到所述终端的系统的内存中,并确定第二执行入口地址;所述原始汇编代码提取单元:用于从所述第二执行入口地址中提取对应存储的原始汇编代码。较佳的,本发明实施例所提供的一种驱动程序修复装置还包括第一提示信息输出模块;所述第一提示信息输出模块:用于在所述修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象之前,输出第一提示信息,以提示用户所述终端的系统存在安全隐患,并开始修复过程。较佳的,本发明实施例所提供的一种驱动程序修复装置还包括第二提示信息输出模块;所述第二提示信息输出模块:用于在所述调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码之后,输出第二提示信息,以提示用户所述终端的系统的安全隐患修复成功。在本方案中,修复性驱动程序根据防御性驱动程序的标识信息,确定该防御性驱动程序对应的防御性驱动对象,其中,该修复性驱动程序为:在防御性进程判断该防御性驱动程序符合预定条件时,通过该防御性进程加载至终端的系统的内存中的程序;从该防御性驱动对象中,确定该防御性驱动程序的第一执行入口地址;根据该防御性驱动程序对应的文件,确定该防御性驱动程序的原始汇编代码;将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码;调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码。该修复性驱动程序可以将第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码,并且调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码,可以避免驱动程序被修改,使得驱动程序不能正常运行,进而该驱动程序的功能不能发挥。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例所提供的一种驱动程序修复方法的流程示意图;图2为本发明实施例所提供的一种驱动程序修复方法的另一流程示意图;图3为本发明实施例所提供的一种驱动程序修复方法的另一流程示意图;图4为本发明实施例所提供的一种驱动程序修复方法的另一流程示意图;图5为本发明实施例所提供的一种驱动程序修复装置的结构示意图;图6为本发明实施例所提供的一种驱动程序修复装置的另一结构示意图;图7为本发明实施例所提供的一种驱动程序修复装置的另一结构示意图;图8为本发明实施例所提供的一种驱动程序修复装置的另一结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种驱动程序修复方法及装置,可以避免驱动程序被修改,使得驱动程序不能正常运行,进而该驱动程序的功能不能发挥。下面首先对本发明实施例所提供的一种驱动程序修复方法进行介绍。需要说明的是,任何一种驱动程序只有在加载至终端的系统的内存中后,才能开始运行,执行其功能。当然,应用本发明实施例所提供的驱动程序修复方法进行驱动程序的保护时,该驱动程序处于未被正常运行的状态。实现本发明实施例所提供的一种驱动程序修复方法的功能软件,可以是专门的客户端软件,也可以是其他任何一种安全软件的插件。如图1所示,本发明实施例提供了一种驱动程序修复方法,可以包括步骤:S101:修复性驱动程序根据防御性驱动程序的标识信息,确定该防御性驱动程序对应的防御性驱动对象;其中,该修复性驱动程序为:在防御性进程判断该防御性驱动程序符合预定条件时,通过该防御性进程加载至终端的系统的内存中的程序。可以理解的是,该修复性驱动程序在该防御性进程确定该防御性驱动程序符合预定条件时,加载至该终端的系统的内存中。当该防御性驱动程序符合预定条件时可以认为该防御性驱动程序的运行被拦截,该防御性驱动程序的功能不能被执行。另外,需要强调的是,本发明实施例中的“防御性驱动程序”中的“防御性”和“修复性驱动程序”中的“修复性”仅仅用于从命名上区分不同的驱动程序,并不具有任何限定意义。该防御性进程只是为了与该“防御性驱动程序”对应,也并不具有任何限定意义。该修复性驱动程序被加载至终端的系统的内存中后,会根据该防御性驱动程序的标识信息,确定该防御性驱动程序在加载至终端的系统的内存时,所创建的防御性驱动对象。其中,该确定该防御性驱动程序对应的防御性驱动对象可以采用现有技术,在此不做赘述。具体的,该标识信息可以是该防御性驱动程序的名称或者标识符,等等,凡是能够唯一确认该防御性驱动程序的信息都可以作为该标识信息,本发明实施例并不对该标识信息的类型进行限定。S102:从该防御性驱动对象中,确定该防御性驱动程序的第一执行入口地址;可以理解的是,该防御性驱动对象中可以包含多种信息,例如所对应的该防御性驱动的执行入口地址等。通过现有技术可以从该防御性驱动对象中,获得该防御性驱动程序的第一执行入口地址。进一步的,通过该第一执行入口地址,可以获取存储于该地址中的汇编代码(即后续提到的目标汇编代码)。S103:根据该防御性驱动程序对应的文件,确定该防御性驱动程序的原始汇编代码;需要说明的是,从该防御性驱动对象中,确定该防御性驱动程序的第一执行入口地址后,获得该防御性驱动程序对应的文件,根据该文件确定该防御性驱动程序的原始汇编代码。其中,该获得该防御性驱动程序对应的文件可以采用现有技术,在此不做赘述。可以理解的是,该防御性驱动程序对应的文件中对应记录该防御性驱动程序的原始汇编代码。该确定该原始汇编代码可以采用现有技术,在此不做赘述。S104:将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码;可以理解的是,该修复性驱动程序被加载,是由于该防御性进程判断该防御性驱动程序符合预定条件,即判断该防御性驱动程序被拦截,无法正常运行。其中,在实际应用中,很大程度上是由于该防御性驱动程序对应的第一执行入口地址处存储的汇编代码被修改(即后续提到的目标汇编代码)。为了保证该该防御性驱动程序的正常运行,可以将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码。可以理解的是,该原始汇编代码是从该防御性驱动程序对应的文件中获得的,其未被修改过,存在真实性。S105:调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码。具体的,将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码后,该修复性驱动程序可以直接调用该第一执行入口地址,以使该防御性驱动程序能够正确执行该原始汇编代码,发挥该防御性驱动程序的防御性功能。其中,该修复性驱动程序调用该第一执行入口地址可以采用现有技术,在此不做赘述。应用本发明实施例,修复性驱动程序根据防御性驱动程序的标识信息,确定该防御性驱动程序对应的防御性驱动对象,其中,该修复性驱动程序为:在防御性进程判断该防御性驱动程序符合预定条件时,通过该防御性进程加载至终端的系统的内存中的程序;从该防御性驱动对象中,确定该防御性驱动程序的第一执行入口地址;根据该防御性驱动程序对应的文件,确定该防御性驱动程序的原始汇编代码;将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码;调用该第一执行入口地址,以执行该原始汇编代码。该修复性驱动程序可以将第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码,并且调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码,以避免驱动程序被修改,使得驱动程序不能正常运行,进而该驱动程序的功能不能发挥。进一步的,在实际应用中,该防御性进程可以实时或定时的检测该防御性驱动程序已加载至该终端的系统的内存,或者,当该防御性驱动程序被加载至该终端的系统的内存时,可以通过现有技术通知该防御性进程,等等,这都是合理的。该防御性驱动程序加载完成后,会和该防御性进程进行信息交互,当该防御性进程在预定时间内未接收到该防御性驱动程序发送的系统保护信息时,会判断该防御性驱动程序被拦截,无法正常运行。具体的,所述预定条件可以包括:该防御性进程检测到该防御性驱动程序已加载至该终端的系统的内存,并且在预定时间内未接收到该防御性驱动程序发送的系统保护信息。具体的,如图2所示,所述根据该防御性驱动程序对应的文件,确定该防御性驱动程序的原始汇编代码(S103),可以包括:S1031:将该防御性驱动程序对应的文件映射到该终端的系统的内存中,并确定第二执行入口地址;S1032:从该第二执行入口地址中提取对应存储的原始汇编代码。需要说明的是,对于该原始汇编代码的提取,可以将该对应记录有防御性驱动程序的原始汇编代码的文件,根据现有技术映射到该终端的系统的内存中。该防御性驱动程序映射到该终端的系统的内存后,采用现有技术可以确定对应的第二执行入口地址,从该第二执行入口地址中提取对应存储的原始汇编代码。可以理解的是,驱动程序每次加载/映射到终端的系统的内存的执行入口地址都会存在差异。更进一步的,为了更好的增加用户的使用体验,使用户更清楚自身持有的终端的安全状态,如图3所示,在所述修复性驱动程序根据防御性驱动程序的标识信息,确定该防御性驱动程序对应的防御性驱动对象之前,本发明实施例所提供的一种驱动程序修复方法还可以包括:S301:输出第一提示信息,以提示用户该终端的系统存在安全隐患,并开始修复过程。可以理解的是,该第一提示信息可以为声音提示,可以为屏幕亮度提示,可以为文字信息提示,还可以为界面跳转提示,等等,本发明实施例并不对该提示信息的提示形式进行限定。当然为了使用户更好的了解修复的进度,该第一提示信息还可以以进度条的形式进行提示。举例而言,当该提示信息以界面跳转的形式进行提示时,可以是跳转至该驱动程序对应的修复界面。更进一步的,如图4所示,在所述调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码之后,本发明实施例所提供的一种驱动程序修复方法还可以包括:S401:输出第二提示信息,以提示用户该终端的系统的安全隐患修复成功。需要说明的是,同上述,该第二提示信息可以为声音提示,可以为屏幕亮度提示,可以为文字信息提示,还可以为界面跳转提示,等等,本发明实施例并不对该提示信息的提示形式进行限定。其中,该第一提示信息中可以携带修改该防御性驱动程序的目标汇编代码的应用程序的该标识信息,以起到对该应用程序进行定位的作用,用户可以根据该提示信息对该应用程序进行处理,卸载或设置权限限制。或者该第二提示信息以界面跳转的形式进行提示,可以是直接跳转至该终端的程序卸载界面,定位在该应用程序上,以便该终端用户进行处理。等等,这都是合理的。相应于上述方法实施例,本发明实施例还提供了一种驱动程序修复装置,如图5所示,所述装置可以包括:驱动对象确定模块501、第一入口地址确定模块502、原始汇编代码确定模块503、汇编代码修改模块504和入口地址调用模块505;所述驱动对象确定模块501:用于修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象,其中,所述修复性驱动程序为:在防御性进程判断所述防御性驱动程序符合预定条件时,通过所述防御性进程加载至终端的系统的内存中的程序;所述第一入口地址确定模块502:用于从所述防御性驱动对象中,确定所述防御性驱动程序的第一执行入口地址;所述原始汇编代码确定模块503:用于根据所述防御性驱动程序对应的文件,确定所述防御性驱动程序的原始汇编代码;所述汇编代码修改模块504:用于将所述第一执行入口地址中对应存储的目标汇编代码修改为所述原始汇编代码;所述入口地址调用模块505:用于调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码。应用本发明实施例,修复性驱动程序根据防御性驱动程序的标识信息,确定该防御性驱动程序对应的防御性驱动对象,其中,该修复性驱动程序为:在防御性进程判断该防御性驱动程序符合预定条件时,通过该防御性进程加载至终端的系统的内存中的程序;从该防御性驱动对象中,确定该防御性驱动程序的第一执行入口地址;根据该防御性驱动程序对应的文件,确定该防御性驱动程序的原始汇编代码;将该第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码;调用该第一执行入口地址,以使该防御性驱动程序执行该原始汇编代码。该修复性驱动程序可以将第一执行入口地址中对应存储的目标汇编代码修改为该原始汇编代码,并且调用该第一执行入口地址,以执行该原始汇编代码,以避免驱动程序被修改,使得驱动程序不能正常运行,进而该驱动程序的功能不能发挥。具体的,所述预定条件可以包括:所述防御性进程检测到所述防御性驱动程序已加载至所述终端的系统的内存,并且在预定时间内未接收到所述防御性驱动程序发送的系统保护信息。具体的,如图6所示,所述原始汇编代码确定模块503可以包括第二入口地址确定单元5031和原始汇编代码提取单元5032;所述第二入口地址确定单元5031:用于将所述防御性驱动程序对应的文件映射到所述终端的系统的内存中,并确定第二执行入口地址;所述原始汇编代码提取单元5032:用于从所述第二执行入口地址中提取对应存储的原始汇编代码。具体的,如图7所示,本发明实施例所提供的一种驱动程序修复装置还可以包括第一提示信息输出模块701;所述第一提示信息输出模块701:用于在所述修复性驱动程序根据防御性驱动程序的标识信息,确定所述防御性驱动程序对应的防御性驱动对象之前,输出第一提示信息,以提示用户所述终端的系统存在安全隐患,并开始修复过程。具体的,如图8所示,本发明实施例所提供的一种驱动程序修复装置还可以包括第二提示信息输出模块801;所述第二提示信息输出模块801:用于在所述调用所述第一执行入口地址,以使所述防御性驱动程序执行所述原始汇编代码之后,输出第二提示信息,以提示用户所述终端的系统的安全隐患修复成功。对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1