CN111428240B - 一种用于检测软件的内存违规访问的方法及装置 - Google Patents

一种用于检测软件的内存违规访问的方法及装置 Download PDF

Info

Publication number
CN111428240B
CN111428240B CN202010199304.0A CN202010199304A CN111428240B CN 111428240 B CN111428240 B CN 111428240B CN 202010199304 A CN202010199304 A CN 202010199304A CN 111428240 B CN111428240 B CN 111428240B
Authority
CN
China
Prior art keywords
memory
software
detected
access
detection rule
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.)
Active
Application number
CN202010199304.0A
Other languages
English (en)
Other versions
CN111428240A (zh
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.)
Anxin Wangdun Beijing Technology Co ltd
Original Assignee
Anxin Wangdun Beijing Technology 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 Anxin Wangdun Beijing Technology Co ltd filed Critical Anxin Wangdun Beijing Technology Co ltd
Priority to CN202010199304.0A priority Critical patent/CN111428240B/zh
Publication of CN111428240A publication Critical patent/CN111428240A/zh
Application granted granted Critical
Publication of CN111428240B publication Critical patent/CN111428240B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种用于检测软件的内存违规访问的方法和装置,所述方法包括:步骤S1:设置在Host模式执行的监听函数;步骤S2:CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;步骤S3:在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;步骤S4:CPU在Guest模式运行时根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。根据本发明的方案,在早期就能有效地检测内存违规访问攻击。

Description

一种用于检测软件的内存违规访问的方法及装置
技术领域
本发明涉及计算机信息安全领域,尤其涉及一种用于检测软件的内存违规访问的方法及装置。
背景技术
当前计算机安全软件对恶意代码的检测和防御一般局限于文件静态检测、启发式检测、动态行为分析、主动防御等技术,而这些技术对0day和无文件等内存违规访问攻击的防御效果很差。因为0day和无文件等内存违规访问攻击很多时候不会在磁盘上存放文件,因此基于文件的检测防御方法无法检测出这类内存违规访问。但是这类内存违规访问攻击在后期可能会有一些危险行为,这可能会被主动防御发现,但这也是在整个攻击周期的后期才发现的,此时恶意代码的一些危险行为已经触发,对系统可能已经造成了一定的危害。此外,基于动态行为分析的检测防御技术往往通过注入、Hook等技术手段来检测内存违规访问,这种方法不但检出率低,还需侵入待检测软件,可能造成待检测软件不稳定。
发明内容
为解决上述技术问题,本发明提出了一种用于检测软件的内存违规访问的方法及装置,用以解决现有技术中不能在早期发现和有效检测内存违规访问的技术问题。
根据本发明的第一方面,提供一种用于检测软件的内存违规访问的方法,所述方法包括以下步骤:
步骤S1:设置在Host模式执行的监听函数;
步骤S2:CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
步骤S3:在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;
步骤S4:CPU在Guest模式运行时根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述步骤S3中,所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;其中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
进一步地,在一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:提取所述待检测软件进程的特定内存空间,所述特定内存空间包括所述待检测软件的所有栈内存地址范围、进程模块内部空隙内存块和数据内存块、进程的全局配置内存以及堆内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,在另一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述预设的待检测软件的检测规则为动态生成的检测规则时,所述内存违规访问包括执行代码;所述预设的待检测软件的检测规则为手工添加的检测规则时,所述内存违规访问包括读操作、写操作或执行代码。
根据本发明第二方面,提供一种用于检测软件的内存违规访问的装置,所述装置包括:
配置模块,用于设置在Host模式执行的监听函数;
开启模块,用于CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
生成模块,用于在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;
记录模块,CPU在Guest模式运行时根据生成模块所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;其中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
进一步地,在一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:提取所述待检测软件进程的特定内存空间,所述特定内存空间包括所述待检测软件的所有栈内存地址范围、进程模块内部空隙内存块和数据内存块、进程的全局配置内存以及堆内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,在另一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述预设的待检测软件的检测规则为动态生成的检测规则时,所述内存违规访问包括执行代码;所述预设的待检测软件的检测规则为手工添加的检测规则时,所述内存违规访问包括读操作、写操作或执行代码。
根据本发明第三方面,提供一种电子装置,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如前所述的用于检测软件的内存违规访问的方法。
根据本发明第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如前所述的用于检测软件的内存违规访问的方法。
根据本发明的上述方案,能够获得以下技术效果:1、在早期就能有效地检测0day和无文件等内存违规访问攻击;2、检测步骤简单,只需在内存上做检测就可以检测出上述内存违规访问攻击,无需侵入待检测软件;3、检测规则根据待检测软件的内存使用情况动态生成,便于根据待检测软件的运行变化情况及时增加或删除检测规则,针对待检测软件的一些缺陷,还可以手工添加检测规则,检出率高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:
图1为本发明一个实施方式的用于检测软件的内存违规访问的方法流程图;
图2为本发明一个实施方式的用于检测软件的内存违规访问的装置结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先结合图1说明本发明一个实施方式的用于检测软件的内存违规访问的方法流程图。如图1所示,所述方法包括以下步骤:
步骤S1:设置在Host模式执行的监听函数;
步骤S2:CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
上述两个步骤中,首先检测BIOS/UEFI和CPU是否支持硬件虚拟化和内存虚拟化功能,如果支持硬件虚拟化和内存虚拟化功能则对系统中每个CPU核进行初始化,对启用硬件虚拟化和内存虚拟化功能后的Guest模式和Host模式进行配置。这些配置信息应该确保CPU开启虚拟化功能后,当前操作系统平滑运行于Guest模式,并设置VMExit和VMEntry的配置信息。按CPU的扩展页表构建规范,构建一个从GPA到HPA的内存映射表,这就是实际使用的扩展页表。GPA是客户机物理地址,HPA是宿主机物理地址,在本方案中客户机和宿主机是同一台机器,它们共用同一操作系统,所以GPA和HPA表示的是同一物理内存。配置Host模式的监听函数用于监控内存异常事件。这些准备工作完成后,执行CPU的开启硬件虚拟化功能的指令让CPU启用硬件虚拟化功能。
步骤S3:在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;
CPU启用硬件虚拟化和内存虚拟化功能后,对待检测软件所使用的虚拟内存对应的物理内存在CPU的扩展页表上按预设的待检测软件的检测规则设置对应的内存访问权限。CPU的扩展页表是指为了支持硬件级的内存虚拟化,CPU新引入的页表。例如,要检测内存违规执行代码的行为,则在扩展页表上把对应内存的执行权限去掉;要检测内存违规写行为,则在扩展页表上把对应内存的写权限去掉;要检测内存违规读行为,则在扩展页表上把对应内存的读权限去掉。
待检测软件的检测规则有两类,一类是动态生成的检测规则,一类是手工添加的检测规则。其中,动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
在本实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,具体生成步骤包括:提取待检测软件进程的所有栈内存地址范围、进程程序模块内部空隙内存块和数据内存块、进程的全局配置内存如环境变量内存块、进程环境块、线程环境块等、堆内存空间等,这些内存即为特定内存。只要在这些内存上执行代码,就判定此待检测软件发生内存违规执行行为。
所述的动态生成的检测规则需根据待检测软件进程的内存占用情况动态调整,比如新建了一个线程,则需要把此线程的栈内存和线程环境块内存及时加入预设的检测规则中,当这个线程结束时,需要把栈内存和线程环境块内存从预设的检测规则中删除;待检测软件进程内存的申请、释放也需引起预设检测规则的动态增删;待检测软件与系统中其它进程共享内存而引起的待检测软件内存的增减也需引起预设检测规则的动态增删;待检测软件通过内存映射方式把其它内存引入本进程而引起的待检测软件内存的增减也需引起预设检测规则的动态增删;待检测软件内存被交换出去或交换进来也需检测此内存是否跟检测规则表示内存重叠,如重叠需重置扩展页表中对应项的内存权限。这类动态生成的检测规则可用于监控读、写和执行操作,但是一般用于检测内存违规执行。
此外,还可以添加静态规则,即手工添加检测规则。由于待检测软件可能存在某些缺陷,待检测软件在运行时不会因为所述缺陷引起进程的内存占用情况的动态变化,因此通过动态生成检测规则的方式可能无法检测到待检测软件由该缺陷导致的内存访问违规操作。此时,通过手工分析可以得到避免该缺陷的内存检测规则。例如,待检测软件对某内存块不允许写操作,那么就手工添加一条该待检测软件的禁止写该内存块的检测规则,一旦待检测软件写该内存块就能被监控到。这类手工添加规则可用于监控读、写和执行操作,但是一般用于检测内存违规读、写操作。
设置待检测软件的检测规则,既可以单独使用动态生成的检测规则,也可以单独使用静态规则,还可以将动态生成的检测规则与静态规则结合在一起使用。
步骤S4:CPU在Guest模式运行时根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
本方案中,内存违规访问攻击包括内存违规读操作、写操作、以及违规执行代码。例如,由于软件可能存在漏洞,这些漏洞可能会被攻击者恶意利用,导致程序运行过程中内存溢出而被植入代码,然后攻击者控制程序执行这些被植入的代码,在上述过程中,植入代码的过程会发生内存违规写操作;执行被植入代码的过程是内存违规执行代码;此外,部分软件由于设计上的缺陷可能导致内存中的数据被越界多读取,这种越界多读取行为则是一种内存违规读操作。
传统的监控方法难以监控特定内存上发生的读、写以及执行行为,要实现对特定内存的读、写以及执行行为的监控需使用CPU提供的内存虚拟化技术,本方案通过使用内存虚拟化技术,当CPU以读、写、执行权限访问如前所述的特定内存,CPU会根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果是,CPU会中断执行,去执行本方案设置的监听函数,然后在监听函数里判断是不是在本方案监控的内存上发生了内存违规访问,记录并报告所述待检测软件的内存违规访问。
举例来说,例如待检测软件正在Guest模式运行,它有一个线程A,那么操作系统必定会为线程A分配一个用户态的栈内存,线程A运行的时候需要使用此栈来存储数据,在这个栈上只能进行数据读写操作,不能执行任何代码,因此把这个栈内存地址空间作为进程的特定内存,它是不允许执行代码的,在本方案中,会把这个栈内存在CPU的扩展页表的对应项中的权限设置为可读可写,但不能执行。这样一旦待检测软件在这个栈上执行代码,由于扩展页表中设置了此内存不可执行,CPU就会因为发生了内存异常事件暂停Guest模式的运行,而去执行Host模式设置的监听函数,然后在监听函数里判断是不是在本方案监控的内存上发生了内存违规执行操作,从而记录并报告待检测软件的内存违规访问。
通过本发明的方案,可以在早期就有效地检测0day和无文件等内存违规访问攻击;而且检测步骤简单,只需在内存上做检测就可以检测出内存违规访问攻击;此外,检测规则既可以动态生成,也可以静态配置,根据待检测软件的情况灵活选用其中一种生成检测规则的方法,或者将动态生成检测规则和静态配置检测规则结合在一起使用,这样能灵活应对更多应用场景,检测效果会更好。
本发明的内存违规访问检测方法可以应用于多个领域,比如在恶意代码检测领域,传统的安全软件往往通过注入、Hook等技术手段来检测内存违规访问,这种方法不但检出率低,还需侵入待检测软件,可能造成待检测软件不稳定,而本方案提供的检测方法不但检出率高,对被检测软件无侵入性,而且检测技术更底层,能更早地发现内存违规操作。还可以用于软件测试领域,可以通过检测内存违规访问发现软件的一些Bug。
本发明进一步给出另一个实施方式的用于检测软件对内存违规访问的方法,所述方法包括:
步骤S1:设置在Host模式执行的监听函数;
步骤S2:CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
步骤S3:在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;
步骤S4:CPU在Guest模式运行时根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述步骤S3中,所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;其中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
本实施例与前一个实施例的不同之处在于步骤3中根据所述待检测软件的内存使用情况动态生成的检测规则不同。
本实施例中,所述预设的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件对所述特定内存空间的访问行为,则所述监听函数记录并报告所述待检测软件的内存违规访问。
对于特定的待检测软件进程,例如用户的Office进程,先使用学习模式观察待检测软件的内存使用情况。在学习模式下先不对待检测软件作检测,而是先观察待检测软件的内存使用情况,看待检测软件加载哪些模块,在哪些模块里执行代码,经过一段时间的观察,就能很清楚的知晓待检测软件的可执行代码都在哪些内存里,其它地方的内存是不可能有可执行代码的,然后收集这些信息生成此进程的检测规则,这个过程称之为学习模式。
学习模式主要用于获取待检测软件当前所有的可执行代码的内存块集合,在进程空间中把这个内存块集合所示的内存空间排除后,剩余的内存空间块即为特定内存,只要在特定内存上执行代码就判定发生了内存违规执行行为。
需要注意的是,对同一个待检测软件既可以单独使用前一个实施例中动态生成检测规则的方法,也可以单独使用本实施例中动态生成检测规则的方法。此外,在不造成冲突的情况下,还可以对同一个待检测软件同时使用前一个实施例中动态生成检测规则的方法和本实施例中动态生成检测规则的方法。
本发明实施例进一步给出一种用于检测软件对内存违规访问的装置,如图2所示,所述装置包括:
配置模块,用于设置在Host模式执行的监听函数;
开启模块,用于CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
生成模块,用于在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;
记录模块,CPU在Guest模式运行时根据生成模块所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;其中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
进一步地,在一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:提取所述待检测软件进程的特定内存空间,所述特定内存空间包括所述待检测软件的所有栈内存地址范围、进程模块内部空隙内存块和数据内存块、进程的全局配置内存以及堆内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,在另一个实施例中,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
进一步地,所述预设的待检测软件的检测规则为动态生成的检测规则时,所述内存违规访问包括执行代码;所述预设的待检测软件的检测规则为手工添加的检测规则时,所述内存违规访问包括读操作、写操作或执行代码。
本实施例中的用于检测软件的内存违规访问的装置各功能模块所执行的功能与前述用于检测软件的内存违规访问方法的步骤相对应,在此不再赘述。
本发明实施例进一步给出一种电子装置,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如前所述的用于检测软件的内存违规访问的方法。
本发明实施例进一步给出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如前所述的用于检测软件的内存违规访问的方法。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装Linux、Windows或者Windows Server操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (12)

1.一种用于检测软件的内存违规访问的方法,其特征在于,所述方法包括以下步骤:
步骤S1:设置在Host模式执行的监听函数;
步骤S2:CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
步骤S3:在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;
步骤S4:CPU在Guest模式运行时根据步骤S3所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
2.如权利要求1所述的用于检测软件的内存违规访问的方法,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
3.如权利要求2所述的用于检测软件的内存违规访问的方法,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:提取所述待检测软件进程的特定内存空间,所述特定内存空间包括所述待检测软件的所有栈内存地址范围、进程模块内部空隙内存块和数据内存块、进程的全局配置内存以及堆内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
4.如权利要求2所述的用于检测软件的内存违规访问的方法,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
5.如权利要求2-4任一项所述的用于检测软件的内存违规访问的方法,其特征在于,所述预设的待检测软件的检测规则为动态生成的检测规则时,所述内存违规访问包括执行代码;所述预设的待检测软件的检测规则为手工添加的检测规则时,所述内存违规访问包括读操作、写操作或执行代码。
6.一种用于检测软件的内存违规访问的装置,其特征在于,所述装置包括:
配置模块,用于设置在Host模式执行的监听函数;
开启模块,用于CPU开启硬件虚拟化和内存虚拟化功能,把当前的操作系统置于Guest模式运行;所述监听函数用于监听并处理所述Guest模式的内存异常事件;
生成模块,用于在CPU的扩展页表上按照预设的待检测软件的检测规则设置对应的内存访问权限;所述预设的待检测软件的检测规则包括动态生成的检测规则;和/或手工添加的检测规则;
记录模块,CPU在Guest模式运行时根据生成模块所设置的内存访问权限判断所述待检测软件的内存访问行为是否为越权访问,如果判断结果为是,CPU从所述Guest模式切换到所述Host模式执行所述监听函数,所述监听函数记录并报告所述待检测软件的内存违规访问。
7.如权利要求6所述的用于检测软件的内存违规访问的装置,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成。
8.如权利要求7所述的用于检测软件的内存违规访问的装置,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:提取所述待检测软件进程的特定内存空间,所述特定内存空间包括所述待检测软件的所有栈内存地址范围、进程模块内部空隙内存块和数据内存块、进程的全局配置内存以及堆内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
9.如权利要求7所述的用于检测软件的内存违规访问的装置,其特征在于,所述动态生成的检测规则根据所述待检测软件的内存使用情况动态生成,包括:获取所述待检测软件当前所有的可执行代码的内存块集合,在所述待检测软件的进程空间中把获取的所述内存块集合对应的内存空间排除,将剩余的内存空间作为特定内存空间;检测到所述待检测软件在所述特定内存空间执行代码,则所述监听函数记录并报告所述待检测软件的内存违规访问。
10.如权利要求7-9任一项所述的用于检测软件的内存违规访问的装置,其特征在于,所述预设的待检测软件的检测规则为动态生成的检测规则时,所述内存违规访问包括执行代码;所述预设的待检测软件的检测规则为手工添加的检测规则时,所述内存违规访问包括读操作、写操作或执行代码。
11.一种电子装置,包括处理器和存储器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1-5任一项所述的用于检测软件的内存违规访问的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序用于由处理器加载并执行如权利要求1-5任一项所述的用于检测软件的内存违规访问的方法。
CN202010199304.0A 2020-03-20 2020-03-20 一种用于检测软件的内存违规访问的方法及装置 Active CN111428240B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010199304.0A CN111428240B (zh) 2020-03-20 2020-03-20 一种用于检测软件的内存违规访问的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010199304.0A CN111428240B (zh) 2020-03-20 2020-03-20 一种用于检测软件的内存违规访问的方法及装置

Publications (2)

Publication Number Publication Date
CN111428240A CN111428240A (zh) 2020-07-17
CN111428240B true CN111428240B (zh) 2021-10-15

Family

ID=71548188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010199304.0A Active CN111428240B (zh) 2020-03-20 2020-03-20 一种用于检测软件的内存违规访问的方法及装置

Country Status (1)

Country Link
CN (1) CN111428240B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737690B (zh) * 2020-07-20 2020-12-01 北京升鑫网络科技有限公司 一种防御恶意软件对数据作敏感性操作的方法及装置
CN113867943B (zh) * 2021-09-15 2022-12-30 中国电子科技集团公司第十四研究所 一种基于嵌入式系统的雷达软件内存分配方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154180A (zh) * 2006-09-29 2008-04-02 大唐移动通信设备有限公司 一种任务栈溢出的监测方法
CN103294956A (zh) * 2013-06-25 2013-09-11 北京奇虎科技有限公司 在Windows平台上进行行为处理的方法及装置
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护系统及其保护方法
CN106934281A (zh) * 2017-03-30 2017-07-07 兴华永恒(北京)科技有限责任公司 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法
CN109784062A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 漏洞检测方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183015B2 (en) * 2011-12-19 2015-11-10 Vmware, Inc. Hibernate mechanism for virtualized java virtual machines
CN106970821B (zh) * 2016-01-12 2021-02-02 阿里巴巴集团控股有限公司 一种kvm虚拟化下处理i/o请求的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154180A (zh) * 2006-09-29 2008-04-02 大唐移动通信设备有限公司 一种任务栈溢出的监测方法
CN103294956A (zh) * 2013-06-25 2013-09-11 北京奇虎科技有限公司 在Windows平台上进行行为处理的方法及装置
CN103699498A (zh) * 2013-11-25 2014-04-02 南京大学 一种应用程序关键数据保护系统及其保护方法
CN106934281A (zh) * 2017-03-30 2017-07-07 兴华永恒(北京)科技有限责任公司 一种基于硬件虚拟化技术的虚拟机对抗技术的建立方法
CN109784062A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 漏洞检测方法及装置

Also Published As

Publication number Publication date
CN111428240A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
US11625485B2 (en) Method of malware detection and system thereof
US10977370B2 (en) Method of remediating operations performed by a program and system thereof
US11886591B2 (en) Method of remediating operations performed by a program and system thereof
RU2691187C1 (ru) Система и способы аудита виртуальной машины
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
US8990934B2 (en) Automated protection against computer exploits
CN109923546B (zh) 虚拟机安全性应用程序的事件过滤
CN109784062B (zh) 漏洞检测方法及装置
EP4095724B1 (en) Method of remediating operations performed by a program and system thereof
EP3063692B1 (en) Virtual machine introspection
CN108898012B (zh) 检测非法程序的方法和装置
CN111428240B (zh) 一种用于检测软件的内存违规访问的方法及装置
CN105678160A (zh) 用于提供对引导驱动程序的原始例程的访问的系统和方法
US9202053B1 (en) MBR infection detection using emulation
US20170053118A1 (en) Changed Block Tracking Driver for Agentless Security Scans of Virtual Disks
EP2720170B1 (en) Automated protection against computer exploits
Butler et al. New security architectures based on emerging disk functionality
CN115510435A (zh) 隐藏进程检测方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant