CN106203070A - 驱动加载阻止方法及装置 - Google Patents

驱动加载阻止方法及装置 Download PDF

Info

Publication number
CN106203070A
CN106203070A CN201610500022.3A CN201610500022A CN106203070A CN 106203070 A CN106203070 A CN 106203070A CN 201610500022 A CN201610500022 A CN 201610500022A CN 106203070 A CN106203070 A CN 106203070A
Authority
CN
China
Prior art keywords
file
module
function
hook function
loading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610500022.3A
Other languages
English (en)
Inventor
李文靖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Baoqu Technology Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201610500022.3A priority Critical patent/CN106203070A/zh
Publication of CN106203070A publication Critical patent/CN106203070A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请提出一种驱动加载阻止方法及装置,其中,该方法包括:通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备系统调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。

Description

驱动加载阻止方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种驱动加载阻止方法及装置。
背景技术
随着互联网技术的快速发展,病毒、木马等恶意程序技术层出不穷,部分恶意程序会加载驱动模块来提高自身软件权限,强力删杀毒软件文件,卸载杀毒软件等,降低了用户终端设备的安全。
目前,应用程序主要通过调用NtLoadDriver函数或NtSetSystemInformation函数进行驱动模块的加载,而由应用程序调用上述两个函数,使得恶意程序可以挂钩上述两个函数,在上述两个函数中填充一些恶意程序的驱动模块路径,使得终端设备系统可以对恶意程序的驱动模块进行加载,提高恶意程序的软件权限,降低用户终端设备的安全。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种驱动加载阻止方法,该方法用于阻止恶意程序的驱动模块的加载,从而避免杀毒软件被恶意程序的驱动模块卸载或删除,提高终端设备的安全。
本申请的第二个目的在于提出一种驱动加载阻止装置。
为达上述目的,本申请第一方面实施例提出了一种驱动加载阻止方法,包括:创建钩子函数,获取所述钩子函数的地址;从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址;将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址;在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;若所述钩子函数的调用结果为空,则执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
本申请实施例的驱动加载阻止方法,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
为达上述目的,本申请第二方面实施例提出了一种驱动加载阻止装置,包括:创建模块,用于创建钩子函数,获取所述钩子函数的地址;存储模块,用于从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址;替换模块,用于将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址;获取模块,用于在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;调用模块,用于根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;执行模块,用于在所述钩子函数的调用结果为空时,执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
本申请实施例的驱动加载阻止装置,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本申请一个实施例的驱动加载阻止方法的流程图;
图2是本申请另一个实施例的驱动加载阻止方法的流程图;
图3是本申请一个实施例的驱动加载阻止装置的结构示意图;
图4是本申请另一个实施例的驱动加载阻止装置的结构示意图;
图5是本申请另一个实施例的驱动加载阻止装置的结构示意图;
图6是本申请另一个实施例的驱动加载阻止装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的驱动加载阻止方法及装置。
图1是本申请一个实施例的驱动加载阻止方法的流程图。
如图1所示,该驱动加载阻止方法包括:
步骤101,创建钩子函数,获取所述钩子函数的地址。
本发明提供的驱动加载阻止方法的执行主体为驱动加载阻止装置,驱动加载阻止装置具体可以为毒霸等杀毒软件,或者安装有毒霸等杀毒软件的终端设备的操作系统。终端设备可以为手机、平板电脑、笔记本等终端设备。
用户根据自身的需求在终端设备上安装了至少一个应用或程序,其中部分应用或程序可能感染了病毒、木马等恶意程序,为了避免恶意程序加载驱动模块,杀毒软件需要实时检查获取待加载的模块文件,判断待加载的模块文件是否为恶意程序的驱动模块文件;当待加载的模块文件为恶意程序的驱动模块文件时,结束加载过程。
其中,钩子函数具体可以为NewNtCreateSection函数。
步骤102,从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址。
其中,系统服务描述符表(System Services Descriptor Table,SSDT)用于把ring3的Win32API和ring0的内核API联系起来。系统服务描述符表SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。其中,系统服务描述符表中预先存储了多个函数的地址,以便查询等。
步骤103,将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址。
步骤104,在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址。
其中,模块文件加载函数具体可以为NtLoadDriver函数或者NtSetSystemInformation函数。
具体的,本实施例中终端设备加载模块文件的过程具体可以为:应用程序调用NtLoadDriver函数或者NtSetSystemInformation函数;终端设备系统内核层的NtLoadDriver函数或者NtSetSystemInformation函数执行;执行过程中调用钩子函数NewNtCreateSection;然而根据钩子函数的调用结果确定后续过程。
步骤105,根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果。
具体的,驱动加载阻止装置可以根据钩子函数的地址从钩子函数的存储位置获取所述钩子函数,然后调用所述钩子函数,获取所述钩子函数的调用结果。
步骤106,若所述钩子函数的调用结果为空,则执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
进一步的,所述的方法还包括:若所述钩子函数的调用结果不为空,则根据所述模块文件加载函数的地址调用所述模块文件加载函数,加载所述模块文件。
其中,若钩子函数的调用结果为空,则表示待加载的模块文件为恶意程序的驱动模块文件,需要阻止驱动模块文件的加载;若钩子函数的调用结果不为空,则表示待加载的模块文件为非恶意程序的驱动模块文件或者其他模块文件,可以进行加载。
具体的,若所述钩子函数的调用结果不为空,驱动加载阻止装置恶意根据所述模块文件加载函数的地址获取所述模块文件加载函数,然后调用模块文件加载函数,接着调用终端设备系统内核层的NtMapViewOfSection函数,完成模块文件的加载过程。若所述钩子函数的调用结果为空,驱动加载阻止装置可以执行预设的回调函数退出驱动加载函数,而不执行NtCreateSection函数,实现驱动模块文件打开的失败,相应地应用程序调用驱动加载函数就会失败,这样就阻止了恶意程序的驱动模块的加载。
本申请实施例的驱动加载阻止方法,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
图2是本申请另一个实施例的驱动加载阻止方法的流程图。
如图2所示,针对图1所示实施例,步骤105具体可以包括:
步骤1051,根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称。
其中,在钩子函数NewNtCreateSection中,首先可以调用PsGetCurrentProcessId函数获取当前操作的进程标识,根据当前操作的进程标识判断是由谁在加载模块文件,由于钩子函数NewNtCreateSection的调用是由终端设备系统内核层完成的,而系统进程标识为4或者8;因此,若当前操作的进程标识为4或者8,则符合要求;然后,获取SectionPageProtection参数包含的PAGE_EXECUTE值,PAGE_EXECUTE值表示当前加载的模块文件的执行状态;获取AllocationAttributes参数包含的SEC_IMAGE值,SEC_IMAGE值表示当前加载的模块文件的文件类型;然后由文件句柄FileHandle参数为参数,调用ObReferenceObjectByHandle函数获取文件对象指针,这个指针保存的一个包括文件路径的结构,根据该文件路径可以获取当前加载的模块文件的文件名称。
步骤1052,根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果。
步骤1052具体可以包括:根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果。
具体的,若SectionPageProtection参数包含的PAGE_EXECUTE值表示当前加载的模块文件的执行状态为可执行,且AllocationAttributes参数包含的SEC_IMAGE值表示当前加载的模块文件的文件类型为驱动模块文件,则根据当前加载的模块文件的文件名称查询黑模块列表,判断所述黑模块列表中是否包括有所述当前加载的模块文件的文件名称,若所述黑模块列表中包括有所述当前加载的模块文件的文件名称,则确定当前加载的模块文件的状态为有毒状态,确定所述钩子函数的调用结果为空;若所述黑模块列表中不包括有所述当前加载的模块文件的文件名称,则确定当前加载的模块文件的状态为无毒状态,确定所述钩子函数的调用结果不为空。
另外,驱动加载阻止装置也可以将当前加载的模块文件的文件名称发送给上层文件查询系统,由上层文件查询系统根据当前加载的模块文件的文件名称确定当前加载的模块文件的状态为有毒状态或者无毒状态,然后确定钩子函数的调用结果。
进一步的,若所述当前加载的模块文件的执行状态为不可执行,或者所述文件类型为非驱动模块文件,或者所述当前加载的模块文件的状态为无毒状态,则确定所述钩子函数的调用结果不为空。
本申请实施例的驱动加载阻止方法,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
为了实现上述实施例,本申请还提出一种驱动加载阻止装置。
图3是本申请一个实施例的驱动加载阻止装置的结构示意图。
如图3所示,该驱动加载阻止装置包括:
创建模块31,用于创建钩子函数,获取所述钩子函数的地址;
存储模块32,用于从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址;
替换模块33,用于将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址;
获取模块34,用于在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;
调用模块35,用于根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;
执行模块36,用于在所述钩子函数的调用结果为空时,执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
本发明提供的驱动加载阻止装置具体可以为毒霸等杀毒软件,或者安装有毒霸等杀毒软件的终端设备的操作系统。终端设备可以为手机、平板电脑、笔记本等终端设备。
用户根据自身的需求在终端设备上安装了至少一个应用或程序,其中部分应用或程序可能感染了病毒、木马等恶意程序,为了避免恶意程序加载驱动模块,杀毒软件需要实时检查获取待加载的模块文件,判断待加载的模块文件是否为恶意程序的驱动模块文件;当待加载的模块文件为恶意程序的驱动模块文件时,结束加载过程。
其中,钩子函数具体可以为NewNtCreateSection函数。系统服务描述符表(SystemServices Descriptor Table,SSDT)用于把ring3的Win32API和ring0的内核API联系起来。系统服务描述符表SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数个数等。其中,系统服务描述符表中预先存储了多个函数的地址,以便查询等。模块文件加载函数具体可以为NtLoadDriver函数或者NtSetSystemInformation函数。
具体的,本实施例中终端设备加载模块文件的过程具体可以为:应用程序调用NtLoadDriver函数或者NtSetSystemInformation函数;终端设备系统内核层的NtLoadDriver函数或者NtSetSystemInformation函数执行;执行过程中调用钩子函数NewNtCreateSection;然而根据钩子函数的调用结果确定后续过程。
进一步的,图4是本申请另一个实施例的驱动加载阻止装置的结构示意图,如图4所示,在图3所示实施例的基础上,所示的驱动加载阻止装置还包括:加载模块37,用于在所述钩子函数的调用结果不为空时,根据所述模块文件加载函数的地址调用所述模块文件加载函数,加载所述模块文件。
其中,若钩子函数的调用结果为空,则表示待加载的模块文件为恶意程序的驱动模块文件,需要阻止驱动模块文件的加载;若钩子函数的调用结果不为空,则表示待加载的模块文件为非恶意程序的驱动模块文件或者其他模块文件,可以进行加载。
具体的,若所述钩子函数的调用结果不为空,驱动加载阻止装置恶意根据所述模块文件加载函数的地址获取所述模块文件加载函数,然后调用模块文件加载函数,接着调用终端设备系统内核层的NtMapViewOfSection函数,完成模块文件的加载过程。若所述钩子函数的调用结果为空,驱动加载阻止装置可以执行预设的回调函数退出驱动加载函数,而不执行NtCreateSection函数,实现驱动模块文件打开的失败,相应地应用程序调用驱动加载函数就会失败,这样就阻止了恶意程序的驱动模块的加载。
本申请实施例的驱动加载阻止装置,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
图5是本申请另一个实施例的驱动加载阻止装置的结构示意图,如图5所示,在图3所示实施例的基础上,所述调用模块35包括:
获取单元351,用于根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;
确定单元352,用于根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果。
进一步的,图6是本申请另一个实施例的驱动加载阻止装置的结构示意图,如图6所示,在图5所示实施例的基础上,所述确定单元352包括:
判断子单元3521,用于判断所述当前加载的模块文件的执行状态是否为可执行,以及判断所述文件类型是否为驱动模块文件;
查询子单元3522,用于在所述当前加载的模块文件的执行状态为可执行,且所述文件类型为驱动模块文件时,根据所述当前加载的模块文件的文件名称查询预设的黑模块列表,获取所述当前加载的模块文件的状态;
第一确定子单元3523,用于在所述当前加载的模块文件的状态为有毒状态时,确定所述钩子函数的调用结果为空。
其中,在钩子函数NewNtCreateSection中,首先可以调用PsGetCurrentProcessId函数获取当前操作的进程标识,根据当前操作的进程标识判断是由谁在加载模块文件,由于钩子函数NewNtCreateSection的调用是由终端设备系统内核层完成的,而系统进程标识为4或者8;因此,若当前操作的进程标识为4或者8,则符合要求;然后,获取SectionPageProtection参数包含的PAGE_EXECUTE值,PAGE_EXECUTE值表示当前加载的模块文件的执行状态;获取AllocationAttributes参数包含的SEC_IMAGE值,SEC_IMAGE值表示当前加载的模块文件的文件类型;然后由文件句柄FileHandle参数为参数,调用ObReferenceObjectByHandle函数获取文件对象指针,这个指针保存的一个包括文件路径的结构,根据该文件路径可以获取当前加载的模块文件的文件名称。
具体的,若SectionPageProtection参数包含的PAGE_EXECUTE值表示当前加载的模块文件的执行状态为可执行,且AllocationAttributes参数包含的SEC_IMAGE值表示当前加载的模块文件的文件类型为驱动模块文件,则根据当前加载的模块文件的文件名称查询黑模块列表,判断所述黑模块列表中是否包括有所述当前加载的模块文件的文件名称,若所述黑模块列表中包括有所述当前加载的模块文件的文件名称,则确定当前加载的模块文件的状态为有毒状态,确定所述钩子函数的调用结果为空;若所述黑模块列表中不包括有所述当前加载的模块文件的文件名称,则确定当前加载的模块文件的状态为无毒状态,确定所述钩子函数的调用结果不为空。
另外,驱动加载阻止装置也可以将当前加载的模块文件的文件名称发送给上层文件查询系统,由上层文件查询系统根据当前加载的模块文件的文件名称确定当前加载的模块文件的状态为有毒状态或者无毒状态,然后确定钩子函数的调用结果。
进一步的,在上述实施例的基础上,所述确定单元352还包括:
第二确定子单元,用于在所述当前加载的模块文件的执行状态为不可执行,或者所述文件类型为非驱动模块文件,或者所述当前加载的模块文件的状态为无毒状态时,确定所述钩子函数的调用结果不为空。
需要说明的是,前述对驱动加载阻止方法实施例的解释说明也适用于该实施例的驱动加载阻止装置,此处不再赘述。
本申请实施例的驱动加载阻止装置,通过将系统服务描述符表中模块文件加载函数的地址替换为钩子函数的地址,使得在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果;根据钩子函数的调用结果判断待加载的模块文件是否为恶意程序的驱动模块文件,从而确定是否阻止驱动加载,实现对恶意程序的驱动模块的加载的阻止,避免恶意程序的驱动模块对终端设备上的杀毒软件进行卸载或删除,提高用户终端设备的安全。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个第一处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

Claims (10)

1.一种驱动加载阻止方法,其特征在于,包括以下步骤:
创建钩子函数,获取所述钩子函数的地址;
从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址;
将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址;
在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;
根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;
若所述钩子函数的调用结果为空,则执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
2.根据权利要求1所述的驱动加载阻止方法,其特征在于,所述根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果,包括:
根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;
根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果。
3.根据权利要求2所述的驱动加载阻止方法,其特征在于,所述根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果,包括:
判断所述当前加载的模块文件的执行状态是否为可执行,以及判断所述文件类型是否为驱动模块文件;
若所述当前加载的模块文件的执行状态为可执行,且所述文件类型为驱动模块文件,则根据所述当前加载的模块文件的文件名称查询预设的黑模块列表,获取所述当前加载的模块文件的状态;
若所述当前加载的模块文件的状态为有毒状态,则确定所述钩子函数的调用结果为空。
4.根据权利要求3所述的驱动加载阻止方法,其特征在于,所述根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果,还包括:
若所述当前加载的模块文件的执行状态为不可执行,或者所述文件类型为非驱动模块文件,或者所述当前加载的模块文件的状态为无毒状态,则确定所述钩子函数的调用结果不为空。
5.根据权利要求1所述的驱动加载阻止方法,其特征在于,还包括:
若所述钩子函数的调用结果不为空,则根据所述模块文件加载函数的地址调用所述模块文件加载函数,加载所述模块文件。
6.一种驱动加载阻止装置,其特征在于,包括:
创建模块,用于创建钩子函数,获取所述钩子函数的地址;
存储模块,用于从系统服务描述符表中预设位置获取模块文件加载函数的地址,存储所述模块文件加载函数的地址;
替换模块,用于将系统服务描述符表中所述模块文件加载函数的地址替换为所述钩子函数的地址;
获取模块,用于在接收到终端设备应用程序调用驱动加载函数过程中发送的模块文件加载函数调用指令时,从所述系统服务描述符表中所述预设位置获取所述钩子函数的地址;
调用模块,用于根据所述钩子函数的地址调用所述钩子函数,获取所述钩子函数的调用结果;
执行模块,用于在所述钩子函数的调用结果为空时,执行预设的回调函数退出所述驱动加载函数,阻止驱动加载。
7.根据权利要求6所述的驱动加载阻止装置,其特征在于,所述调用模块包括:
获取单元,用于根据所述钩子函数的地址调用所述钩子函数,获取当前加载的模块文件的执行状态、文件类型以及文件名称;
确定单元,用于根据所述当前加载的模块文件的执行状态、文件类型以及文件名称确定所述钩子函数的调用结果。
8.根据权利要求7所述的驱动加载阻止装置,其特征在于,所述确定单元包括:
判断子单元,用于判断所述当前加载的模块文件的执行状态是否为可执行,以及判断所述文件类型是否为驱动模块文件;
查询子单元,用于在所述当前加载的模块文件的执行状态为可执行,且所述文件类型为驱动模块文件时,根据所述当前加载的模块文件的文件名称查询预设的黑模块列表,获取所述当前加载的模块文件的状态;
第一确定子单元,用于在所述当前加载的模块文件的状态为有毒状态时,确定所述钩子函数的调用结果为空。
9.根据权利要求8所述的驱动加载阻止装置,其特征在于,所述确定单元还包括:
第二确定子单元,用于在所述当前加载的模块文件的执行状态为不可执行,或者所述文件类型为非驱动模块文件,或者所述当前加载的模块文件的状态为无毒状态时,确定所述钩子函数的调用结果不为空。
10.根据权利要求6所述的驱动加载阻止装置,其特征在于,还包括:
加载模块,用于在所述钩子函数的调用结果不为空时,根据所述模块文件加载函数的地址调用所述模块文件加载函数,加载所述模块文件。
CN201610500022.3A 2016-06-29 2016-06-29 驱动加载阻止方法及装置 Pending CN106203070A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610500022.3A CN106203070A (zh) 2016-06-29 2016-06-29 驱动加载阻止方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610500022.3A CN106203070A (zh) 2016-06-29 2016-06-29 驱动加载阻止方法及装置

Publications (1)

Publication Number Publication Date
CN106203070A true CN106203070A (zh) 2016-12-07

Family

ID=57462869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610500022.3A Pending CN106203070A (zh) 2016-06-29 2016-06-29 驱动加载阻止方法及装置

Country Status (1)

Country Link
CN (1) CN106203070A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699086A (zh) * 2020-12-30 2021-04-23 北京明朝万达科技股份有限公司 一种基于Windows系统的文件操作监控方法和装置
CN116506222A (zh) * 2023-06-26 2023-07-28 北京安天网络安全技术有限公司 一种安全防护系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414339A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 保护进程内存及确保驱动程序加载的安全性的方法
CN101559113A (zh) * 2009-05-19 2009-10-21 李桂华 一种治疗慢性肾功能不全的中药制剂及其制备方法
US20110209219A1 (en) * 2010-02-25 2011-08-25 Microsoft Corporation Protecting User Mode Processes From Improper Tampering or Termination
CN102467623A (zh) * 2010-11-08 2012-05-23 腾讯科技(深圳)有限公司 一种监控文件执行的方法及装置
CN102902921A (zh) * 2012-09-18 2013-01-30 北京奇虎科技有限公司 一种检测和清除计算机病毒的方法和装置
CN105678160A (zh) * 2014-12-05 2016-06-15 卡巴斯基实验室股份制公司 用于提供对引导驱动程序的原始例程的访问的系统和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414339A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 保护进程内存及确保驱动程序加载的安全性的方法
CN101559113A (zh) * 2009-05-19 2009-10-21 李桂华 一种治疗慢性肾功能不全的中药制剂及其制备方法
US20110209219A1 (en) * 2010-02-25 2011-08-25 Microsoft Corporation Protecting User Mode Processes From Improper Tampering or Termination
CN102467623A (zh) * 2010-11-08 2012-05-23 腾讯科技(深圳)有限公司 一种监控文件执行的方法及装置
CN102902921A (zh) * 2012-09-18 2013-01-30 北京奇虎科技有限公司 一种检测和清除计算机病毒的方法和装置
CN105678160A (zh) * 2014-12-05 2016-06-15 卡巴斯基实验室股份制公司 用于提供对引导驱动程序的原始例程的访问的系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699086A (zh) * 2020-12-30 2021-04-23 北京明朝万达科技股份有限公司 一种基于Windows系统的文件操作监控方法和装置
CN116506222A (zh) * 2023-06-26 2023-07-28 北京安天网络安全技术有限公司 一种安全防护系统
CN116506222B (zh) * 2023-06-26 2023-09-08 北京安天网络安全技术有限公司 一种安全防护系统

Similar Documents

Publication Publication Date Title
KR101619557B1 (ko) 커스터마이즈된 컴퓨터 응용 프로그램 패키지
CN104054086B (zh) 针对一个或多个沙箱化应用程序的文件系统访问
KR101176752B1 (ko) 효과적 패칭
KR101183305B1 (ko) 효과적 패칭
CN103970563B (zh) 动态加载安卓类的方法
CN108108181A (zh) 应用程序的功能更新方法、装置及计算机可读存储介质
US20070240157A1 (en) Method, apparatus, mobile terminal and computer program product for safe application termination in a virtual machine
CN108229107B (zh) 一种Android平台应用程序的脱壳方法及容器
US11706220B2 (en) Securing application behavior in serverless computing
CN102236762A (zh) 用于处理对多租户应用的文件访问的方法和文件代理装置
CN104954353A (zh) Apk文件包的校验方法和装置
CN106550031A (zh) 数据备份的方法及装置
CN106156346A (zh) 图标的自动分类方法和装置
US10372472B2 (en) System, method, and computer program product for conditionally preventing use of hardware virtualization
CN106529229A (zh) 权限数据的处理方法和装置
CN106203070A (zh) 驱动加载阻止方法及装置
CN109240707A (zh) 防止恶意动态链接库dll文件注入的方法和装置
US8086778B2 (en) Filter driver to enumerate smartcard nodes for plug and play
CN105912349A (zh) 驱动加载方法及装置
CN106843917B (zh) 一种驱动程序的加载方法及装置
US20060195586A1 (en) Sessions and terminals configured for binding in an extensible manner
CN108628620B (zh) Pos应用开发的实现方法、装置、计算机设备和存储介质
CN105740697B (zh) 一种xp中地址空间布局随机化方法及装置
CN106022125A (zh) 一种客户端的修复方法及装置
CN111797016A (zh) 应用程序的测试方法、设备、存储介质及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20181211

Address after: 519030 Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province

Applicant after: Zhuhai Leopard Technology Co.,Ltd.

Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing

Applicant before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20161207

RJ01 Rejection of invention patent application after publication