一种识别恶意特征的方法和设备与流程

文档序号:11677940阅读:158来源:国知局
一种识别恶意特征的方法和设备与流程

本发明涉及数据处理领域,特别涉及一种识别恶意特征的方法和设备。



背景技术:

移动互联网的迅速普及和智能手机的广泛应用,催生了一大批基于苹果ios和安卓的应用发展。其中安卓(android)应用(app,application,应用程序)数量早已突破300万数量,仅谷歌官方应用商店app数量就已突破200万。app的广泛使用也导致了移动端恶意代码的迅速传播。恶意代码本身并没有直接的使用价值,为了广泛、快速的传播,他们往往通过嵌入官方知名的app的软件包(apk,androidpackage)中,通过各种应用分发渠道(如googleplay、豌豆荚、应用宝等)进行传播。安卓由于其开源的特征,其应用分发渠道多种多样,除了官方的googleplay之外,全球各地还存在上百个各种各样的非官方应用商店。

但是大量的安卓系统app存在重打包(repackage)现象。早在2014年trendmicro就报道了仅在googleplay中,排名前50位的免费应用中超过80%都存在重打包版本。这一方面是因为安卓的市场渠道比较多元化,app的生产者如果想要快速推广自己的app的话一般都需要同时在多个渠道提供下载。另一方面,安卓应用市场之间的竞争压力也迫使其尽量丰富自己的应用,所以存在有动机将原本没有在其渠道中发布的应用放上去。

这也是平时在使用安卓应用商店时能直观感受到的情况:同一个app,尤其是较为流行的app,或者免费的app,用户在多种渠道都可以直接接触到它。但是尽管这些app都是官方版本的非恶意应用,但是其哈希值并不相同。其原因有多种,或者是应用采用了不同的签名方法,或者是app的作者在不同时间编译相同的代码时,使用了不同的编译环境;又或者是开发者只对app源码做了极其细微的改动;而除此以外,另一种情况就更为普遍和随意了,那就是黑客为了传播自己的恶意代码,故意将这些知名app或者免费app进行重打包,通过大量不受严格监管的渠道分发。

但是目前的杀毒引擎等在进行识别是,是基于hash值比对的方法判定app包是否为恶意,面对这种情况,则明显无法进行有效识别。

基于此,目前拯待一种更加有效的方式来对应用程序进行识别。



技术实现要素:

有鉴于此,本发明提出了一种识别恶意特征的方法和设备,用以克服现有技术中的缺陷,提高识别的准确性。

本发明提出了以下具体的实施例:

本发明实施例提出了一种识别恶意特征的方法,包括:

获取一定数量应用程序的原始代码;

基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;

若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;

若分析结果为存在异常,将存在异常的部分标注为恶意特征并存储在数据库中;

基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。

在一个具体的实施例中,所述“获取一定数量应用程序的原始代码”包括:

获取一定数量的应用程序;

针对各应用程序,通过反编译或通过模拟器运行的方式获取到对应各应用程序的原始代码。

在一个具体的实施例中,所述软件流程特征包括:控制流图与代码流图;

所述“基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征”包括:

对所述原始代码的结构进行解析,获取activity以及函数库;

提取所述activity中的用户视图,以获取到视图特征;其中,所述视图特征为在代码框架基础上调用原始代码中的资源文件;

基于所述函数库生成控制流图与代码流图。

在一个具体的实施例中,所述“提取所述软件流程特征和/或视图特征进行分析”包括:

基于所述软件流程特征判断函数调用是否异常;

若判断结果为是,则确定分析结果为异常;和/或

基于所述视图特征与标准视图特征进行比对;

若比对结果为不一致,则确定分析结果为异常。

在一个具体的实施例中,所述“基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别”包括:

提取待识别应用程序中的软件流程特征与视图特征;

判断所提取的软件流程特征与视图特征是否存在于所述数据库中;

若判断结果为是,则确定待识别应用程序中存在恶意特征;

若判断结果为否,则确定待识别应用程序中不存在恶意特征。

本发明实施例还提出了一种识别恶意特征的设备,包括:

获取模块,用于获取一定数量应用程序的原始代码;

确定模块,用于基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;

提取模块,用于若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;

存储模块,用于当分析结果为存在异常时,将存在异常的部分标注为恶意特征并存储在数据库中;

识别模块,用于基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。

在一个具体的实施例中,所述获取模块用于:

获取一定数量的应用程序;

针对各应用程序,通过反编译或通过模拟器运行的方式获取到对应各应用程序的原始代码。

在一个具体的实施例中,所述软件流程特征包括:控制流图与代码流图;

所述确定模块用于:

对所述原始代码的结构进行解析,获取activity以及函数库;

提取所述activity中的用户视图,以获取到视图特征;其中,所述视图特征为在代码框架基础上调用原始代码中的资源文件;

基于所述函数库生成控制流图与代码流图。

在一个具体的实施例中,所述提取模块“提取所述软件流程特征和/或视图特征进行分析”包括:

基于所述软件流程特征判断函数调用是否异常;

若判断结果为是,则确定分析结果为异常;和/或

基于所述视图特征与标准视图特征进行比对;

若比对结果为不一致,则确定分析结果为异常。

在一个具体的实施例中,所述识别模块用于:

提取待识别应用程序中的软件流程特征与视图特征;

判断所提取的软件流程特征与视图特征是否存在于所述数据库中;

若判断结果为是,则确定待识别应用程序中存在恶意特征;

若判断结果为否,则确定待识别应用程序中不存在恶意特征。

以此,本发明公开了一种识别恶意特征的方法和设备,其中该方法包括:获取一定数量应用程序的原始代码;基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;若分析结果为存在异常,将存在异常的部分标注为恶意特征并存储在数据库中;基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。以此通过各应用程序所唯一对应的软件流程特征与视图特征来对应用程序进行识别,提高了识别的准确性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提出的一种识别恶意特征的方法的流程示意图;

图2为本发明实施例提出的一种识别恶意特征的方法的流程示意图;

图3为本发明实施例提出的一种识别恶意特征的方法的流程示意图;

图4为本发明实施例提出的一种识别恶意特征的方法的流程示意图;

图5为本发明实施例提出的一种识别恶意特征的方法的流程示意图;

图6为本发明实施例提出的一种识别恶意特征的设备的结构示意图。

具体实施方式

在下文中,将更全面地描述本公开的各种实施例。本公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本公开的各种实施例限于在此公开的特定实施例的意图,而是应将本公开理解为涵盖落入本公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。

在下文中,可在本公开的各种实施例中使用的术语“包括”或“可包括”指示所公开的功能、操作或元件的存在,并且不限制一个或更多个功能、操作或元件的增加。此外,如在本公开的各种实施例中所使用,术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

在本公开的各种实施例中,表述“或”或“a或/和b中的至少一个”包括同时列出的文字的任何组合或所有组合。例如,表述“a或b”或“a或/和b中的至少一个”可包括a、可包括b或可包括a和b二者。

在本公开的各种实施例中使用的表述(诸如“第一”、“第二”等)可修饰在各种实施例中的各种组成元件,不过可不限制相应组成元件。例如,以上表述并不限制所述元件的顺序和/或重要性。以上表述仅用于将一个元件与其它元件区别开的目的。例如,第一用户装置和第二用户装置指示不同用户装置,尽管二者都是用户装置。例如,在不脱离本公开的各种实施例的范围的情况下,第一元件可被称为第二元件,同样地,第二元件也可被称为第一元件。

应注意到:如果描述将一个组成元件“连接”到另一组成元件,则可将第一组成元件直接连接到第二组成元件,并且可在第一组成元件和第二组成元件之间“连接”第三组成元件。相反地,当将一个组成元件“直接连接”到另一组成元件时,可理解为在第一组成元件和第二组成元件之间不存在第三组成元件。

在本公开的各种实施例中使用的术语“用户”可指示使用电子装置的人或使用电子装置的装置(例如,人工智能电子装置)。

在本公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本公开的各种实施例中被清楚地限定。

实施例1

本发明实施例1提出了一种识别恶意特征的方法,如图1所示,包括:

步骤101、获取一定数量应用程序的原始代码;

在一个具体的实施例中,步骤101中的所述“获取一定数量应用程序的原始代码”如图2所示,包括:

步骤1011、获取一定数量的应用程序;

步骤1012、针对各应用程序,通过反编译或通过模拟器运行的方式获取到对应各应用程序的原始代码。

具体的,数量越多越好(例如达到百万量级),数量越多,也就意味着后续数据库中作为参考的数量越多,数据越全,也即识别的准确率也越高。

具体的,以app为例,提取其中的软件包,也即apk文件,然后对所提取的apk文件进行反编译或通过模拟器运行以得到原始代码,而除了这几种方式以外,其他的方式也是可以的,具体的只要能获取到原始代码即可,并不限于这几种具体的方式。

步骤102、基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;

具体的,所述软件流程特征包括:控制流图与代码流图;具体的步骤102中所述“基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征”如图3所示,包括:

步骤1021、对所述原始代码的结构进行解析,获取activity以及函数库;

步骤1022、提取所述activity中的用户视图,以获取到视图特征;其中,所述视图特征为在代码框架基础上调用原始代码中的资源文件;

步骤1023、基于所述函数库生成控制流图与代码流图。

具体的,通过解析apk得到的原始代码结构,提取其中的activity与函数库(例如包括java类的函数库);并基于函数库生成控制流图(即controlmap,具体的一个控制流图的示意图如图4所示)、代码流图,以获得软件流程特征。所述视图特征为在代码框架基础上调用原始代码中的资源文件,例如app的ui、以及由事件等特征生成的视图。

步骤103、若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;

具体的,步骤103中所述“提取所述软件流程特征和/或视图特征进行分析”包括:

基于所述软件流程特征判断函数调用是否异常;

若判断结果为是,则确定分析结果为异常;和/或

基于所述视图特征与标准视图特征进行比对;

若比对结果为不一致,则确定分析结果为异常。

具体的,是通过所述软件流程特征与所述视图特征来共同进行判断是否异常,具体的,当函数调用异常时,即可确定异常;而当视图特征与标准视图特征(例如可以从正轨的应用市场获取的对应app中进行提取)不正常时,也可以确定异常;只有基于软件流程特征与视图特征的判断结果都不异常时,才确定分析结果不异常。

此外,还可以从用户的评价(例如是否有恶意扣分,恶意广告等内容的评价)中获取到是否存在有恶意的特征,特别是恶意代码的内容,进而判断该app中是否存在有恶意特征。

而通过比较差异(对应有差异值)是否大于预设的安全阈值,可以对海量的应用程序进行初步筛选,以便减少工作量,提高处理效率。具体的安全阈值可以根据实际app的情况进行设置,并可以进行随时调整,当差异的差异值小于预设的安全阈值,则可以认为是处于合理的正常范围。

步骤104、若分析结果为存在异常,将存在异常的部分标注为恶意特征并存储在数据库中;

步骤105、基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。

在一个具体的实施例中,步骤105中所述“基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别”如图5所示,包括:

步骤1051、提取待识别应用程序中的软件流程特征与视图特征;

步骤1052、判断所提取的软件流程特征与视图特征是否存在于所述数据库中;

步骤1053、若判断结果为是,则确定待识别应用程序中存在恶意特征;

步骤1054、若判断结果为否,则确定待识别应用程序中不存在恶意特征。

具体的,将比对之后得到的apk拥有的同类特征建立数据库。新的apk生成相应的特征后将与数据库进行比较,从而判定该apk是否是含有恶意代码的apk。

实施例2

本发明实施例还提出了一种识别恶意特征的设备,如图6所示,包括:

获取模块201,用于获取一定数量应用程序的原始代码;

确定模块202,用于基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;

提取模块203,用于若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;

存储模块204,用于当分析结果为存在异常时,将存在异常的部分标注为恶意特征并存储在数据库中;

识别模块205,用于基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。

在一个具体的实施例中,所述获取模块201用于:

获取一定数量的应用程序;

针对各应用程序,通过反编译或通过模拟器运行的方式获取到对应各应用程序的原始代码。

在一个具体的实施例中,所述软件流程特征包括:控制流图与代码流图;

所述确定模块202用于:

对所述原始代码的结构进行解析,获取activity以及函数库;

提取所述activity中的用户视图,以获取到视图特征;其中,所述视图特征为在代码框架基础上调用原始代码中的资源文件;

基于所述函数库生成控制流图与代码流图。

在一个具体的实施例中,所述提取模块203“提取所述软件流程特征和/或视图特征进行分析”包括:

基于所述软件流程特征判断函数调用是否异常;

若判断结果为是,则确定分析结果为异常;和/或

基于所述视图特征与标准视图特征进行比对;

若比对结果为不一致,则确定分析结果为异常。

在一个具体的实施例中,所述识别模块205用于:

提取待识别应用程序中的软件流程特征与视图特征;

判断所提取的软件流程特征与视图特征是否存在于所述数据库中;

若判断结果为是,则确定待识别应用程序中存在恶意特征;

若判断结果为否,则确定待识别应用程序中不存在恶意特征。

以此,本发明公开了一种识别恶意特征的方法和设备,其中该方法包括:获取一定数量应用程序的原始代码;基于所述原始代码确定对应所述应用程序的软件流程特征与视图特征;若相似程度大于预设的相似阈值的应用程序的软件流程特征和/或视图特征的差异大于预设的安全阈值;提取所述软件流程特征和/或视图特征进行分析;若分析结果为存在异常,将存在异常的部分标注为恶意特征并存储在数据库中;基于所述数据库对待识别应用程序中是否存在有恶意特征进行识别。以此通过各应用程序所唯一对应的软件流程特征与视图特征来对应用程序进行识别,提高了识别的准确性。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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