识别恶意软件的方法和装置与流程

文档序号:12064184阅读:237来源:国知局
识别恶意软件的方法和装置与流程
本发明涉及计算机
技术领域
,特别涉及一种识别恶意软件的方法和装置。
背景技术
:随着安卓终端的普及以及发展,各种各样的恶意软件应运而生,并且据统计,在2015年的第一季度发现了40多万种新的恶意软件,也就是说,全球范围内每18秒就有一个新的恶意软件被发现,这些恶意软件在用户不知晓的情况下潜入到用户的终端中,对用户的信息和财产带来了安全隐患。为了提高用户的信息和财产的安全性,目前服务器可以通过以下方法识别终端正在安装、已经安装或者尚未安装的软件是否为恶意软件,具体为:计算待待检测软件的哈希值,确定哈希值集合中是否包含该哈希值,哈希值集合中包括恶意软件的哈希值;如果哈希值集合中包含该哈希值,则确定该软件是恶意软件,否则,则确定该软件不是恶意软件。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:基于软件的哈希值识别该软件是否为恶意软件,很容易被病毒制造者绕开,导致识别准确率低;例如,在恶意软件中添加新的资源或者修改原有代码,使得该恶意软件的哈希值发生改变,从而检测出该恶意软件不是恶意软件,也即出现了误判的情况,导致识别准确率低。技术实现要素:为了解决现有技术的问题,本发明提供了一种识别恶意软件的方法和装置。技术方案如下:一种识别恶意软件的方法,所述方法包括:根据待检测的软件的源代码,获取所述软件的函数调用图;根据所述函数调用图,生成所述软件的特征序列,所述特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,所述特征的特征值为所述函数被所述软件调用的次数;根据所述特征序列和随机森林,识别所述软件是否为恶意软件,所述随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。一种识别恶意软件的装置,所述装置包括:获取模块,用于根据待检测的软件的源代码,获取所述软件的函数调用图;生成模块,用于根据所述函数调用图,生成所述软件的特征序列,所述特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,所述特征的特征值为所述函数被所述软件调用的次数;识别模块,用于根据所述特征序列和随机森林,识别所述软件是否为恶意软件,所述随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。在本发明实施例中,根据待检测的软件的源代码,获取该软件的函数调用图;根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被该软件调用的次数;根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。本发明通过特征序列和随机森林识别该软件是否为恶意软件,从而不受病毒制造者的影响,可以提高识别准确率。附图说明图1是本发明实施例1提供的一种识别恶意软件的方法流程图;图2-1是本发明实施例2提供的一种识别恶意软件的方法流程图;图2-2是本发明实施例2提供的一种该软件的函数调用图的示意图;图2-3是本发明实施例2提供的一种决策树的示意图;图3-1是本发明实施例3提供的一种识别恶意软件的装置结构示意图;图3-2是本发明实施例3提供的一种获取模块的装置结构示意图;图3-3是本发明实施例3提供的一种生成模块的装置结构示意图;图3-4是本发明实施例3提供的另一种生成模块的装置结构示意图;图3-5是本发明实施例3提供的一种识别模块的装置结构示意图;图3-6是本发明实施例3提供的一种识别单元的装置结构示意图;图3-7是本发明实施例3提供的另一种识别恶意软件的装置结构示意图;图4是本发明实施例4提供的一种服务器的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例1本发明实施例提供了一种识别恶意软件的方法,该方法的执行主体可以为服务器,参见图1,其中,该方法包括:步骤101:根据待检测的软件的源代码,获取该软件的函数调用图。步骤102:根据函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被软件调用的次数。步骤103:根据特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。在本发明实施例中,根据待检测的软件的源代码,获取该软件的函数调用图;根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被该软件调用的次数;根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。本发明通过特征序列和随机森林识别该软件是否为恶意软件,从而不受病毒制造者的影响,可以提高识别准确率。实施例2本发明实施例提供了一种识别恶意软件的方法,该方法的执行主体可以为服务器,参见图2-1,其中,该方法包括:步骤201:根据待检测的软件的源代码,获取该软件的函数调用图。待检测的软件可以为终端正在安装的软件、已经安装的软件或者尚未安装的软件。函数调用图是一种将源代码中的函数调用关系用有向图表示出来的静态表达方式;该软件的函数调用图包括该软件调用的函数以及各函数之间的关系。并且,函数调用图中包括节点和有向线段,节点表示函数,有向线段表示函数之间的调用关系,并且有向线段的方向是由调用函数指向被调用函数。本步骤可以通过如下步骤(1)和(2)实现,包括:(1):对待检测的软件的源代码进行反编译,得到该软件的反编译代码。开发人员在开发该软件时可以生成一个APK(AndroidPackage,安卓应用程序)文件,该APK文件是一个压缩文件,服务器解压该APK文件会得到一个classes.dex文件,该classes.dex文件中包括该软件的源代码。或者,开发人员在开发该软件时可以一个生成一个classes.elf文件,该classes.elf文件中包括该软件的源代码。在本步骤中,服务器对classes.dex文件中包括的源代码进行反编译,得到该软件的反编译代码;或者,服务器对该classes.elf文件中包括的源代码进行反编译,得到该软件的反编译代码。(2):解析该反编译代码,得到该软件的函数调用图。服务器解析该反编译代码,获取该软件调用的函数以及各函数之间的关系,将该软件调用的函数以及各函数之间的关系用函数调用图的方式展现出来,得到该软件的函数调用图。例如,该软件调用的函数包括函数A、B、C、D、E和F,且函数A调用函数B,函数B调用函数C和函数D;函数C和函数D分别调用函数E和函数F,服务器得到该软件的函数调用图如图2-2所示。步骤202:根据该函数调用图,获取预设函数库中的每个函数被该软件调用的调用次数。预设函数库用于存储软件所可能需要的所有函数。则本步骤可以为:对于预设函数库中的每个函数,服务器根据该函数调用图,获取该函数在该函数调用图中出现的次数,将该次数确定为该函数被该软件调用的调用次数。例如,预设函数库中包括函数A、B、C、D、E、F、G和H共8个函数,且函数A、B、C、D分别在该函数调用图中出现了1次,则函数A、B、C、D的调用次数都是1;而函数E和F分别在该函数调用图中出现了2次,则函数E和F的调用次数都是2;而函数G和H并没有在该函数调用图中出现,则函数G和H的调用次数都是0。需要说明的是,为了增加识别准确率,可以结合步骤203中的该软件请求访问的权限生成该软件的特征序列。步骤203:根据该软件请求访问的权限,获取预设权限库中被该软件请求访问的访问权限和未被该软件请求访问的未访问权限。预设权限库中用于存储软件所可能访问的所有权限,可以包括获取设备信息、发送短信、自启动、访问地理位置和获取通讯录等。从该软件的安装包中获取该软件请求访问的权限,该软件请求访问的权限即为访问权限;预设权限库中除访问权限之外的权限即为未访问权限。其中,该软件的安装包中包括AndroidManifest.xml文件,该AndroidManifest.xml文件中包括该软件的权限请求消息,该权限请求消息中携带该软件请求访问的权限。因此,从该软件的安装包中获取该软件请求访问的权限的步骤可以为:从该软件的安装包中获取该软件的AndroidManifest.xml文件,从该AndroidManifest.xml文件中获取该软件的权限请求消息,从该软件的权限请求消息中获取该软件请求访问的权限。例如,该软件请求访问的权限为发送短信和访问地理位置,预设权限库中包括的权限为取设备信息、发送短信、自启动、访问地理位置和获取通讯录。则预设权限库中被该软件请求访问的访问权限为发送短信和访问地理位置;未被该软件请求访问的未访问权限为:获取设备信息、自启动和获取通讯录。步骤204:将该访问权限的特征值设置为第一数值,将该未访问权限的特征值设置为第二数值。第一数值和第二数值不相等;且第一数值和第二数值都可以根据需要进行设置并更改,在本发明实施例中,对第一数值和第二数值都不做具体限定;例如,第一数值为1,第二数值为0。则本步骤可以为:将该访问权限的特征值设置为1,将该未访问权限的特征值设置为0。例如,将访问权限:发送短信和访问地理位置的特征值分别设置为1,将未访问权限:获取设备信息、自启动和获取通讯录的特征值分别设置为0。需要说明的是,步骤203和步骤204是可选步骤,是为了提高识别准确率增加的步骤,也可以执行完步骤202之后,直接执行步骤205。步骤205:将每个函数的调用次数、预设权限库中的每个权限的特征值组成该软件的特征序列。其中,特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,或者特征为预设函数库中的函数和预设权限库中的权限的组合。当特征为预设函数库中的函数时,该特征的特征值为该函数被该软件调用的次数;当特征为预设权限库中的权限时,该特征的特征值用于表示该权限是否被该软件访问的特征值。例如,预设函数库中包括函数A、B、C、D、E、F、G和H,且函数A、B、C、D、E、F、G和H的调用次数分别为1、1、1、1、2、2、0和0;预设权限库中包括权限为取设备信息、发送短信、自启动、访问地理位置和获取通讯录,取设备信息、发送短信、自启动、访问地理位置和获取通讯录对应的特征值分别为0、1、0、1、0。则该软件的特征序列为[1、1、1、1、2、2、0、0、0、1、0、1、0]。需要说明的是,如果执行完步骤202之后,不执行步骤203和204,直接执行步骤205,则步骤205可以为:将每个函数的调用次数组成该软件的特征序列。例如,预设函数库中包括函数A、B、C、D、E、F、G和H,且函数A、B、C、D、E、F、G和H的调用次数分别为1、1、1、1、2、2、0和0;则该软件的特征序列为[1、1、1、1、2、2、0、0]。步骤206:根据随机森林包括的每个决策树和该特征序列,识别该软件是否为恶意软件,得到每个决策树对应的识别结果。随机森林中包括至少一个决策树,至少一个决策树中的每个决策树包括多个特征路径,多个特征路径中的每个特征路径包括多个基准特征值,每个特征路径对应一个识别结果。识别结果包括该软件为恶意软件和该软件为非恶意软件。在本步骤之前,服务器需要先生成至少一个决策树,至少一个决策树组成随机森林,其中,对于至少一个决策树中的每个决策树,服务器可以通过以下步骤(1)和(2)生成该决策树,包括:(1):根据样本特征序列集合,确定样本特征序列集合中的部分特征中的每个特征在决策树中的位置以及每个特征的基准特征值。样本特征序列集合包括至少一个恶意软件的样本特征序列和至少一个非恶意软件的样本特征序列。本步骤具体可以通过以下步骤(1-1)至(1-4)实现,包括:(1-1):从样本特征序列集合中选择第一位置对应的预设特征集合。在本发明实施例中,该决策树为二叉树,也即每个节点只包括两个子节点。服务器在生成决策树时,先确定决策树的根节点对应的特征和基准特征值;然后再分别确定根节点包括的两个一级内部节点对应的特征和基准特征值,然后再分别确定两个一级内部节点包括的两个二级内部节点对应的特征和基准特征值,直到确定决策树的叶子节点对应的特征和基准特征值。第一位置为该决策树中离根节点最近的且待确定特征和基准特征值的位置;例如,服务器还没有确定决策树的根节点的特征和基准特征值时,第一位置为根节点;当服务器已经确定根节点的特征和基准特征值时,但未确定根节点包括的一级内部节点的特征和基准特征值,则第一位置为根节点包括的一级内部节点等。在本步骤中,以第一位置为根节点为例进行说明,本步骤可以为:对样本特征序列集合中的特征序列进行采样,得到根节点对应的预设特征集合。如果样本特征序列为恶意软件的样本特征序列,识别结果用1表示;如果样本特征序列为非恶意软件的样本特征序列,识别结果用0表示。则样本特征序列集合可以表示为:需要说明的是,特征序列集合中的特征的排序分别为函数A、B、C、D、E、F、G、H、取设备信息、发送短信、自启动、访问地理位置和获取通讯录。为了简化操作,我们可以假设样本特征序列集合为:将样本特征序列集合表示为如下表1所示:表1ID特征1特征2特征3特征4识别结果1100302100203110214111315100306200307200208211219201111020110服务器对该样本特征序列集合进行行列采样,得到的根节点对应的预设特征集合如下表2所示:表2ID特征1特征2特征3特征4识别结果5101308212211101309202114111312101203111211020210210120311121(2):计算预设特征集合包括的每个特征值的基尼系数。计算特征值的基尼系数的过程为现有技术,在此不再详细说明。例如,服务器计算表2中包括的每个特征值的基尼系数。首先,特征1的特征值为1的ID为5,1,4,2,3,2,3的样本,共7个,在这7个样本中,识别结果为0的ID为5,1,2,2,共4个;则特征1的特征值为1且识别结果为0的概率为4/7,特征1的特征值为1且识别结果为1的概率为3/7,特征1的特征值为2的ID为8,9,10,共3个,则特征1的特征值为2且识别结果为0的概率为2/3,特征1的特征值为2且识别结果为1的概率为1/3。则对表2中的每个特征的每个特征值计算基尼系数,例如,每个特征的每个特征值的基尼系数如下所示:Gini(D,特征1=1)=0.5;Gini(D,特征1=2)=0.5;Gini(D,特征2=0)=0.4;Gini(D,特征2=1)=0.4;Gini(D,特征3=1)=0.5;Gini(D,特征3=2)=0.5;Gini(D,特征4=1)=0.2;Gini(D,特征4=2)=0.3;Gini(D,特征4=3)=0.4。(3):确定最小基尼系数对应的特征值,以及最小基尼系数对应的特征。服务器从预设特征集合包括的每个特征值的基尼系数中选择最小基尼系数;从预设特征集合中选择最小基尼系数对应的特征。例如,最小基尼系数为0.2,最小基尼系数对应的特征值为1,最小基尼系数对应的特征为特征4。(4):将第一位置作为该确定出的特征的位置,将该确定出的特征值作为该确定出的特征的基准特征值。通过以上步骤(1)至(4)确定预设特征集合中的每个特征在决策树中的位置以及每个特征的基准特征值。例如,将第一位置作为特征4的位置,将特征值为1作为特征4的基准特征值。则进一步地,根据特征4=1,将预设特征集合划分为两部分,分别为特征4的特征值小于或等于1的一部分,如下表3所示,以及特征4的特征值大于1的一部分,如下表4所示。表3ID特征1特征2特征3特征4识别结果9202111020210表4ID特征1特征2特征3特征4识别结果510130821221110130411131210120311121210120311121进一步地,选择第一位置为根节点包括的两个一级内部节点,分别称为第一一级内部节点和第二一级内部节点,则第一一级内部节点对应的预设特征集合为表3所示;第二一级内部节点对应的预设特征集合为表4所示,按照以上方法确定第一一级内部节点的特征以及基准特征值,第二一级内部节点的特征以及基准特征值,直到确定决策树的叶子节点的特征和基准特征值,此时生成了一个决策树,参见图2-3所示。(2):根据每个特征在决策树中的位置,将每个特征的基准特征值组成决策树。根据每个特征在决策树中的位置和每个特征对应的基准特征值,生成多条特征路径,将多条特征路径组成决策树。对于随机森林中的任一决策树,为了便于描述,将该任一决策树称为第一决策树,则服务器可以通过以下步骤(A)和(B)获取第一决策树识别该软件是否为恶意软件的识别结果,包括:(A):根据该特征序列,从第一决策树包括的多个特征路径中获取与该特征序列匹配的特征路径。第一决策树包括的多个特征路径中的每个特征路径包括特征和基准特征值,根据该特征和该基准特征值,以及该特征序列,多个特征路径中获取与该特征序列匹配的特征路径。例如,该特征序列包括特征1=1,特征2=2,特征3=0,特征4=2,则从图2-3中的第一决策树中选择与该特征序列相匹配的特征路径为(B):将选择的特征路径对应的识别结果作为第一决策树的识别结果。每个特征路径对应一个识别结果,选择的特征路径对应的识别结果即是第一决策树的识别结果。例如,选择的特征路径为该选择的特征路径对应的识别结果为该软件为非恶意软件,则第一决策树的识别结果为该软件为非恶意软件。通过以上步骤(A)和(B)得到每个决策树的识别结果,然后执行步骤207。步骤207:根据每个决策树的识别结果,统计识别结果为该软件为恶意软件的第一结果数目和该软件为非恶意软件的第二结果数目。步骤208:根据第一结果数目和第二结果数目,确定该软件是否为恶意软件。如果第一结果数目大于第二结果数目,确定该软件为恶意软件。如果第一结果数目不大于第二结果数目,确定该软件为非恶意软件。进一步地,服务器得到该软件的识别结果之后,可以将该识别结果存储到该软件的安装包中,从而终端在安装该软件时,可以从该软件的安装包中获取该软件的识别结果,如果该软件的识别结果为该软件为恶意软件时,终端可以拒绝安装该软件。进一步地,服务器还可以建立该软件的版本号和该软件的识别结果的对应关系,以供终端或者服务器根据该软件的版本号查询该软件的识别结果。并且,服务器建立该软件的版本号和该软件的识别结果的对应关系之后,当服务器接收端待检测的软件时,根据待检测的软件的版本号,确定是否已识别该软件,如果已识别,直接根据待检测的软件的版本号,获取该软件的识别结果,不用重复识别。在本发明实施例中,根据待检测的软件的源代码,获取该软件的函数调用图;根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被该软件调用的次数;根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。本发明通过特征序列和随机森林识别该软件是否为恶意软件,从而不受病毒制造者的影响,可以提高识别准确率。实施例3本发明实施例提供了一种识别恶意软件的装置,该装置可以用于执行实施例1和2中的识别恶意软件的方法,参见图3-1,其中,该装置包括:获取模块301,用于根据待检测的软件的源代码,获取该软件的函数调用图;生成模块302,用于根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被软件调用的次数;识别模块303,用于根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。可选的,参见图3-2,获取模块301,包括:反编译单元3011,用于对待检测的软件的源代码进行反编译,得到该软件的反编译代码;解析单元3012,用于解析反编译代码,得到该软件的函数调用图。可选的,参见图3-3,生成模块302,包括:第一获取单元3021,用于根据该函数调用图,获取预设函数库中的每个函数被软件调用的调用次数;组成单元3022,用于将每个函数的调用次数组成该软件的特征序列。可选的,特征还包括预设权限库中的权限,特征的特征值用于表示权限是否被软件访问的特征值;参见图3-4,生成模块302还包括:第二获取单元3023,用于根据该软件请求访问的权限,获取预设权限库中被该软件请求访问的访问权限和未被该软件请求访问的未访问权限;设置单元3024,用于将访问权限的特征值设置为第一数值,将未访问权限的特征值设置为第二数值;组成单元3022,用于将每个函数的调用次数、预设权限库中的每个权限的特征值组成软件的特征序列。可选的,参见图3-5,识别模块303,包括:识别单元3031,用于根据随机森林包括的每个决策树和特征序列,识别该软件是否为恶意软件,得到每个决策树对应的识别结果;统计单元3032,用于根据每个决策树的识别结果,统计识别结果为该软件为恶意软件的第一结果数目和该软件为非恶意软件的第二结果数目;第一确定单元3033,用于如果第一结果数目大于第二结果数目,确定该软件为恶意软件;第二确定单元3034,用于如果第一结果数目不大于第二结果数目,确定该软件为非恶意软件。可选的,随机森林中的决策树包括多个特征路径,多个特征路径中的每个特征路径包括多个基准特征值,每个特征路径对应一个识别结果;参见图3-6,识别单元3031,包括:获取子单元30311,用于根据该特征序列,从第一决策树包括的多个特征路径中获取与特征序列匹配的特征路径,第一决策树为随机森林中的任一决策树;作为子单元30312,用于将选择的特征路径对应的识别结果作为第一决策树的识别结果。可选的,参见图3-7,该装置还包括:确定模块304,用于根据样本特征序列集合,确定样本特征序列集合中的部分特征中的每个特征在决策树中的位置以及每个特征的基准特征值,样本特征序列集合包括至少一个恶意软件的样本特征序列和至少一个非恶意软件的样本特征序列;组成模块305,用于根据每个特征在决策树中的位置,将每个特征的基准特征值组成决策树。在本发明实施例中,根据待检测的软件的源代码,获取该软件的函数调用图;根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被该软件调用的次数;根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。本发明通过特征序列和随机森林识别该软件是否为恶意软件,从而不受病毒制造者的影响,可以提高识别准确率。实施例4图4是本发明实施例提供的服务器的结构示意图,该服务器为上述信息平台提供硬件运行环境。服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,FreeBSDTM等等。服务器1900可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:根据待检测的软件的源代码,获取所述软件的函数调用图;根据所述函数调用图,生成所述软件的特征序列,所述特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,所述特征的特征值为所述函数被所述软件调用的次数;根据所述特征序列和随机森林,识别所述软件是否为恶意软件,所述随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。可选的,所述根据待检测的软件的源代码,获取所述软件的函数调用图,包括:对待检测的软件的源代码进行反编译,得到所述软件的反编译代码;解析所述反编译代码,得到所述软件的函数调用图。可选的,所述根据所述函数调用图,生成所述软件的特征序列,包括:根据所述函数调用图,获取预设函数库中的每个函数被所述软件调用的调用次数;将所述每个函数的调用次数组成所述软件的特征序列。可选的,所述特征还包括预设权限库中的权限,所述特征的特征值用于表示所述权限是否被所述软件访问的特征值;所述将所述每个函数的调用次数组成所述软件的特征序列之前,还包括:根据所述软件请求访问的权限,获取预设权限库中被所述软件请求访问的访问权限和未被所述软件请求访问的未访问权限;将所述访问权限的特征值设置为第一数值,将所述未访问权限的特征值设置为第二数值;所述将所述每个函数的调用次数组成所述软件的特征序列,包括:将所述每个函数的调用次数、所述预设权限库中的每个权限的特征值组成所述软件的特征序列。可选的,所述根据所述特征序列和随机森林,识别所述软件是否为恶意软件,包括:根据随机森林包括的每个决策树和所述特征序列,识别所述软件是否为恶意软件,得到所述每个决策树对应的识别结果;根据所述每个决策树的识别结果,统计识别结果为所述软件为恶意软件的第一结果数目和所述软件为非恶意软件的第二结果数目;如果所述第一结果数目大于所述第二结果数目,确定所述软件为恶意软件;如果所述第一结果数目不大于所述第二结果数目,确定所述软件为非恶意软件。可选的,所述随机森林中的决策树包括多个特征路径,所述多个特征路径中的每个特征路径包括多个基准特征值,所述每个特征路径对应一个识别结果;所述根据随机森林包括的每个决策树和所述特征序列,识别所述软件是否为恶意软件,得到所述每个决策树的识别结果,包括:根据所述特征序列,从第一决策树包括的多个特征路径中获取与所述特征序列匹配的特征路径,所述第一决策树为所述随机森林中的任一决策树;将所述选择的特征路径对应的识别结果作为所述第一决策树的识别结果。可选的,所述方法还包括:根据样本特征序列集合,确定所述样本特征序列集合中的部分特征中的每个特征在决策树中的位置以及所述每个特征的基准特征值,所述样本特征序列集合包括至少一个恶意软件的样本特征序列和至少一个非恶意软件的样本特征序列;根据所述每个特征在决策树中的位置,将所述每个特征的基准特征值组成决策树。在本发明实施例中,根据待检测的软件的源代码,获取该软件的函数调用图;根据该函数调用图,生成该软件的特征序列,该特征序列包括至少一个特征的特征值,特征为预设函数库中的函数,特征的特征值为函数被该软件调用的次数;根据该特征序列和随机森林,识别该软件是否为恶意软件,随机森林包括至少一个决策树,决策树包括多个特征的基准特征值。本发明通过特征序列和随机森林识别该软件是否为恶意软件,从而不受病毒制造者的影响,可以提高识别准确率。需要说明的是:上述实施例提供的识别恶意软件的装置在识别恶意软件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的识别恶意软件的装置与识别恶意软件的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1