一种程序检测方法及装置与流程

文档序号:12062342阅读:244来源:国知局
一种程序检测方法及装置与流程

本发明涉及电子技术领域,尤其涉及一种程序检测方法及装置。



背景技术:

程序检测是指对一个完成全部或部分功能模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。安全人员一般可以通过程序行为判定一个程序是否为恶意程序,比如网络操作、文件操作,判定的方法包括静态反汇编技术和动态调试(控制程序执行、记录中间过程)等等。随着可执行程序(由操作系统进行加载执行的文件)的保护技术的发展,这种文件保护技术被恶意程序使用,导致安全人员很难通过静态反汇编的方法判定程序是否是恶意程序,只能通过动态调试的手段来对程序进行检测,在动态调试过程中,还原被保护的核心代码,获取程序的行为,进而判定该程序是否为恶意程序。但是,动态调试需要连接手机,部署调试环境,导致调试效率低,分析成本高。



技术实现要素:

本发明实施例提供一种程序检测方法及装置。可以通过不同的CPU平台执行ARM程序,实现程序自动检测,提高程序检测的效率,减少程序检测的成本。

本发明第一方面提供了一种程序检测方法,所述方法应用于ARM虚拟机,包括:

加载可执行程序,并获取所述可执行程序中的ARM指令;

根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数;

根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

相应地,本发明第二方面提供了一种程序检测装置,包括:

信息加载模块,用于加载可执行程序,并获取所述可执行程序中的ARM指 令;

信息记录模块,用于根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数;

信息确定模块,用于根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

相应地,本发明第三方面提供了一种程序检测装置,包括接口电路、存储器以及处理器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:

加载可执行程序,并获取所述可执行程序中的ARM指令;

根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数;

根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

实施本发明实施例,首先通过不同的CPU平台运行ARM虚拟机,然后通过虚拟机加载可执行程序,并根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,记录访问所述虚拟数据系统的行为参数;最后根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序,在程序检测过程中,不需要搭建硬件调试环境,通过ARM虚拟机自动执行ARM指令并获取检测结果,从而提高程序检测的效率,减少程序检测的成本。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提出的一种程序检测方法的第一实施例流程图;

图2是本发明实施例提供的一种执行ARM指令的流程示意图;

图3是本发明提出的一种程序检测方法的第二实施例流程图;

图4是本发明实施例提出的一种程序检测装置的结构示意图;

图5是本发明实施例提出的装置中信息确定模块的结构示意图;

图6是本发明实施例提出的另一种程序检测装置的结构示意图。

具体实施方式

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

请参考图1,图1是本发明提出的一种程序检测方法的第一实施例流程图。如图所示,本发明实施例中的方法包括:

S101,加载可执行程序,并获取所述可执行程序中的ARM指令。

具体实现中,安全人员可以首先在不同类型的CPU(X86、Mips、PowerPC等等)平台上安装ARM虚拟机,在安装成功后启动该ARM虚拟机,并对ARM虚拟机进行初始化,在ARM虚拟机初始化成功之后,安全人员可以将需要检测的可执行程序导入到该ARM虚拟机中,在安全人员点击开始检测之后,ARM虚拟机开始加载该可执行程序,其中,可执行程序为16进制的字符数据,ARM虚拟机包括指令翻译器,在加载可执行程序成功后,ARM虚拟机可以首先读取所述可执行程序中的字符数据,然后通过指令翻译器将16进制的字符数据翻译成ARM指令。

S102,根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数。

具体实现中,所述虚拟数据系统包括虚拟进程、虚拟文件系统以及虚拟设备,ARM虚拟机还包括指令执行模块以及行为分析记录器。例如,如图2所示,当ARM指令为进程访问时,指令执行模块从虚拟进程中获取所需数据,同时将指令执行模块收到的进程访问动作和参数存入行为记录分析器,当ARM指令为文件访问时,指令执行模块从虚拟文件系统中获取所需数据,同时将指令执行模块接收到的文件访问动作和参数存入行为记录分析器,当ARM指令为设备访问时,指令执行模块从虚拟设备中获取所需数据,同时将指令执行模块接收到的虚拟设备访问动作和参数存入行为分析记录器。

可选的,在根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中 的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数之前,可以根据所述可执行程序中的ARM指令,获取执行所述虚拟数据系统所需的访问内存和/或寄存器数据。例如,如图2所示,当指令执行模块执行的ARM指令(如:访问虚拟文件系统)需要访问内存时,指令执行模块可以从内存管理器中获取访问虚拟数据系统所需的内存,当指令执行模块执行的ARM指令(如:访问虚拟设备)需要访问寄存器时,指令执行模块可以从虚拟ARM-CPU中获取寄存器数据。

可选的,在根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统之后,可以判定ARM指令是否执行成功,并确定该ARM指令为系统调用指令,如果ARM指令执行失败,则终止与本步骤,不再执行下述操作步骤,如果ARM指令不是系统调用指令,则执行上述可执行程序中的下一条ARM指令,如果ARM指令执行成功且ARM指令为系统调用指令,则继续执行下述操作步骤。进一步的,可以获取访问所述ARM虚拟机中的虚拟数据系统的时长;判断访问所述ARM虚拟机中的虚拟数据系统的时长是否小于预设阈值;若访问所述ARM虚拟机中的虚拟数据系统的时长小于预设阈值,则确定所述ARM指令执行成功;若访问所述ARM虚拟机中的虚拟数据系统的时长不小于预设阈值,则确定所述ARM指令执行失败。

S103,根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

具体实现中,可以判断所述访问所述虚拟数据系统的行为参数是否存在于预置的恶意行为序列,所述预置的恶意行为序列包括多种恶意行为和参数;若所述访问所述虚拟数据系统的行为参数存在于所述预置的恶意行为序列中,则确定所述可执行程序为恶意程序,若所述访问所述虚拟数据系统的行为参数不存在于所述预置的恶意行为序列,则确定所述可执行程序不是恶意程序,继续执行上述可执行程序中的下一条ARM指令。

例如,可以预先在恶意行为序列中进行如下定义:目标文件中写入数据,摄像头被打开并使用该摄像头进行录像且将该录像发送到其他网络设备。如果根据ARM指令将数据写入了目标文件中,则该可执行程序的为恶意程序;如果某个网络设备打开摄像头,使用该摄像头进行录像,并且将该录像发送到其他网络设备,则该可执行程序的为恶意程序。

在本发明实施例中,首先通过不同的CPU平台运行ARM虚拟机,然后通过ARM虚拟机加载可执行程序,并根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,记录访问所述虚拟数据系统的行为参数;根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序,在程序检测过程中,不需要搭建硬件调试环境,通过ARM虚拟机自动执行ARM指令并获取检测结果,从而提高程序检测的效率,减少程序检测的成本。

请参考图3,图3是本发明提出的一种程序检测方法的第二实施例流程图。如图所示,本发明实施例中的方法包括:

S301,加载可执行程序,并读取所述可执行程序中的字符数据。

具体实现中,安全人员可以首先在不同类型的CPU(X86、Mips、PowerPC等等)平台上安装ARM虚拟机,在安装成功后启动该ARM虚拟机,并对ARM虚拟机进行初始化,在ARM虚拟机初始化成功之后,安全人员可以将需要检测的可执行程序导入到该ARM虚拟机中,在安全人员点击开始检测之后,ARM虚拟机开始加载可执行程序,其中,可执行程序为16进制的字符数据。

S302,通过指令翻译器将所述字符数据翻译成ARM指令。

具体实现中,ARM虚拟机可以包括指令翻译器,可以通过指令翻译器将16进制的字符数据翻译成ARM指令。

S303,获取执行所述虚拟数据系统所需的访问内存和/或寄存器数据。

例如,如图2所示,当指令执行模块执行的ARM指令(如:访问虚拟文件系统)需要访问内存时,指令执行模块可以从内存管理器中获取访问虚拟数据系统所需的内存,当指令执行模块执行的ARM指令(如:访问虚拟设备)需要访问寄存器时,指令执行模块可以从虚拟ARM-CPU中获取寄存器数据。

S304,根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数。

具体实现中,所述虚拟数据系统包括虚拟进程、虚拟文件系统以及虚拟设备,ARM虚拟机还包括指令执行模块以及行为分析记录器。例如,如图2所示,当ARM指令为进程访问时,指令执行模块从虚拟进程中获取所需数据,同时将指令执行模块收到的进程访问动作和参数存入行为记录分析器,当ARM指令为 文件访问时,指令执行模块从虚拟文件系统中获取所需数据,同时将指令执行模块接收到的文件访问动作和参数存入行为记录分析器,当ARM指令为设备访问时,指令执行模块从虚拟设备中获取所需数据,同时将指令执行模块接收到的虚拟设备访问动作和参数存入行为分析记录器。

可选的,在根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统之后,可以判定ARM指令是否执行成功,并确定该ARM指令为系统调用指令,如果ARM指令执行失败,则终止与本步骤,不再执行下述操作步骤,如果ARM指令不是系统调用指令,则执行上述可执行程序中的下一条ARM指令,如果ARM指令执行成功且ARM指令为系统调用指令,则继续执行下述操作步骤。进一步的,可以获取访问所述ARM虚拟机中的虚拟数据系统的时长;判断访问所述ARM虚拟机中的虚拟数据系统的时长是否小于预设阈值;若访问所述ARM虚拟机中的虚拟数据系统的时长小于预设阈值,则确定所述ARM指令执行成功;若访问所述ARM虚拟机中的虚拟数据系统的时长不小于预设阈值,则确定所述ARM指令执行失败。

S305,判断所述访问所述虚拟数据系统的行为参数是否存在于预置的恶意行为序列中,所述预置的恶意行为序列包括多种恶意行为和参数。

S306,若所述访问所述虚拟数据系统的行为参数存在于所述预置的恶意行为序列中,则确定所述可执行程序为恶意程序。其中,所述预置的恶意行为序列包括多种恶意行为和参数。

例如,可以预先在恶意行为序列中进行如下定义:目标文件中写入数据,摄像头被打开并使用该摄像头进行录像且将该录像发送到其他网络设备。如果根据ARM指令将数据写入了目标文件中,则该可执行程序的为恶意程序;如果某个网络设备打开摄像头,使用该摄像头进行录像,并且将该录像发送到其他网络设备,则该可执行程序的为恶意程序。

S307,若所述访问所述虚拟数据系统的行为参数不存在于所述预置的恶意行为序列中,则确定所述可执行程序不是恶意程序,继续执行上述可执行程序中的下一条ARM指令。

在本发明实施例中,首先通过不同的CPU平台运行ARM虚拟机,然后通过ARM虚拟机加载可执行程序,并根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,记录访问所述虚拟数据系统的行为参数; 根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序,在程序检测过程中,不需要搭建硬件调试环境,通过ARM虚拟机自动执行ARM指令并获取检测结果,从而提高程序检测的效率,减少程序检测的成本。

请参考图4,图4是本发明实施例提出的一种程序检测装置的结构示意图。如图所示,本发明实施例中的装置包括:

信息加载模块401,用于加载可执行程序,并获取所述可执行程序中的ARM指令。

具体实现中,安全人员可以首先在不同类型的CPU(X86、Mips、PowerPC等等)平台上安装ARM虚拟机,在安装成功后启动该ARM虚拟机,并对ARM虚拟机进行初始化,在ARM虚拟机初始化成功之后,安全人员可以将需要检测的可执行程序导入到该ARM虚拟机中,在安全人员点击开始检测之后,ARM虚拟机开始加载可执行程序,其中,可执行程序为16进制的字符数据,ARM虚拟机包括指令翻译器,ARM虚拟机可以首先读取所述可执行程序中的字符数据,然后通过指令翻译器将16进制的字符数据翻译成ARM指令。

信息记录模块402,用于根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数。

具体实现中,所述虚拟数据系统包括虚拟进程、虚拟文件系统以及虚拟设备,ARM虚拟机还包括指令执行模块以及行为分析记录器,例如,如图2所示,当ARM指令为进程访问时,指令执行模块从虚拟进程中获取所需数据,同时将指令执行模块收到的进程访问动作和参数存入行为记录分析器,当ARM指令为文件访问时,指令执行模块从虚拟文件系统中获取所需数据,同时将指令执行模块接收到的文件访问动作和参数存入行为记录分析器,当ARM指令为设备访问时,指令执行模块从虚拟设备中获取所需数据,同时将指令执行模块接收到的虚拟设备访问动作和参数存入行为分析记录器。

可选的,信息记录模块402,还可以用于判定ARM指令是否执行成功,并确定该ARM指令为系统调用指令,如果ARM指令执行失败,则终止与本步骤,不再执行下述操作步骤,如果ARM指令不是系统调用指令,则执行上述可执行程序中的下一条ARM指令,如果ARM指令执行成功且ARM指令为系统调用 指令,则继续执行下述操作步骤。进一步的,可以获取访问所述ARM虚拟机中的虚拟数据系统的时长;判断访问所述ARM虚拟机中的虚拟数据系统的时长是否小于预设阈值;若访问所述ARM虚拟机中的虚拟数据系统的时长小于预设阈值,则确定所述ARM指令执行成功;若访问所述ARM虚拟机中的虚拟数据系统的时长不小于预设阈值,则确定所述ARM指令执行失败。

信息确定模块403,用于根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

具体实现中,如图5所示,信息确定模块403还可以进一步包括:

信息判断单元501,用于判断所述访问所述虚拟数据系统的行为参数是否存在于预置的恶意行为序列中,所述预置的恶意行为序列包括多种恶意行为和参数。

信息确定单元502,用于若所述访问所述虚拟数据系统的行为参数存在于所述预置的恶意行为序列中,则确定所述可执行程序为恶意程序;若所述访问所述虚拟数据系统的行为参数不存在于所述预置的恶意行为序列,则确定所述可执行程序不是恶意程序,继续执行上述可执行程序中的下一条ARM指令。

例如,可以预先在恶意行为序列中进行如下定义:目标文件中写入数据,摄像头被打开并使用该摄像头进行录像且将该录像发送到其他网络设备。如果根据ARM指令将数据写入了目标文件中,则该可执行程序的为恶意程序;如果某个网络设备打开摄像头,使用该摄像头进行录像,并且将该录像发送到其他网络设备,则该可执行程序的为恶意程序。

可选的,如图4所示,本发明实施例中的装置还可以进一步包括:

数据获取模块404,用于根据所述可执行程序中的ARM指令,获取执行所述虚拟数据系统所需的访问内存和/或寄存器数据。例如,如图2所示,当指令执行模块执行的ARM指令(如:访问虚拟文件系统)需要访问内存时,指令执行模块可以从内存管理器中获取访问虚拟数据系统所需的内存,当指令执行模块执行的ARM指令(如:访问虚拟设备)需要访问寄存器时,指令执行模块可以从虚拟ARM-CPU中获取寄存器数据。

在本发明实施例中,首先通过不同的CPU平台运行ARM虚拟机,然后通过ARM虚拟机加载可执行程序,并根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,记录访问所述虚拟数据系统的行为参数; 最后根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序,在程序检测过程中,不需要搭建硬件调试环境,通过ARM虚拟机自动执行ARM指令并获取检测结果,从而提高程序检测的效率,减少程序检测的成本。

请继续参考图6,图6是本发明实施例提出的另一种程序检测装置的结构示意图的结构示意图。如图6所示,该装置包括处理器601和接口电路602,图中还给出了存储器603和总线604,该处理器601、接口电路602和存储器603通过总线604连接并完成相互间的通信。

其中,处理器601用于执行如下操作步骤:

加载可执行程序,并获取所述可执行程序中的ARM指令;

根据所述可执行程序中的ARM指令,访问所述ARM虚拟机中的虚拟数据系统,并记录访问所述虚拟数据系统的行为参数;

根据所述访问所述虚拟数据系统的行为参数,确定所述可执行程序的是否为恶意程序。

其中,处理器601用于执行如下操作步骤:

根据所述可执行程序中的ARM指令,获取执行所述虚拟数据系统所需的访问内存和/或寄存器数据。

其中,处理器601用于执行如下操作步骤:

判断所述访问所述虚拟数据系统的行为参数是否存在于预置的恶意行为序列中;

若所述访问所述虚拟数据系统的行为参数存在于所述预置的恶意行为序列中,则确定所述可执行程序为恶意程序。

其中,处理器601用于执行如下操作步骤:

获取访问所述ARM虚拟机中的虚拟数据系统的时长;

判断访问所述ARM虚拟机中的虚拟数据系统的时长是否小于预设阈值;

若访问所述ARM虚拟机中的虚拟数据系统的时长小于预设阈值,则确定所述ARM指令执行成功。

其中,处理器601用于执行如下操作步骤:

读取所述可执行程序中的字符数据,通过所述指令翻译器将所述字符数据 翻译成ARM指令。

需要说明的是,这里的处理器601可以是一个处理元件,也可以是多个处理元件的统称。例如,该处理元件可以是中央处理器(Central Processing Unit,CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),

该装置还可以包括输入输出装置,连接于总线604,以通过总线与处理器601等其它部分连接。该输入输出装置可以为操作人员提供一输入界面,以便操作人员通过该输入界面选择布控项,还可以是其它接口,可通过该接口外接其它设备。

或者是被配置成实施本发明实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)。

存储器603可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码或应用程序运行装置运行所需要参数、数据等。且存储器603可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volatile memory),例如磁盘存储器,闪存(Flash)等。

总线604可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线604可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

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

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(英文:Read-Only Memory, 简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。

以上对本发明实施例所提供的内容下载方法及相关设备、系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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