CN104572085B - 应用程序的分析方法及装置 - Google Patents
应用程序的分析方法及装置 Download PDFInfo
- Publication number
- CN104572085B CN104572085B CN201410812366.9A CN201410812366A CN104572085B CN 104572085 B CN104572085 B CN 104572085B CN 201410812366 A CN201410812366 A CN 201410812366A CN 104572085 B CN104572085 B CN 104572085B
- Authority
- CN
- China
- Prior art keywords
- installation package
- code
- application
- similarity
- data
- 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.)
- Expired - Fee Related
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 206
- 238000009434 installation Methods 0.000 claims abstract description 344
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000008569 process Effects 0.000 claims abstract description 40
- 239000000284 extract Substances 0.000 claims abstract description 16
- 239000013598 vector Substances 0.000 claims description 77
- 239000011159 matrix material Substances 0.000 claims description 36
- 238000000605 extraction Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 description 116
- 238000010586 diagram Methods 0.000 description 11
- 238000007405 data analysis Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序的分析方法及装置,属于计算机技术领域。方法包括:获取待发布的应用程序安装包;解析应用程序安装包;根据解析得到的应用程序代码,提取应用程序安装包的特征数据;根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析;根据相似度分析结果,对应用程序进行分析。本发明提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,确定应用程序是否为正版应用程序。由于可自动对应用进行分析,从而降低了分析成本。另外,由于分析过程中采集的样本数量较多,因此,分析结果较为准确。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种应用程序的分析方法及装置。
背景技术
随着计算机技术的快速发展,使用应用程序的越来越多。开发者在开发一个应用程序后,通常需要将应用程序上传至应用运营平台,供用户下载使用。为了保护应用程序的版权,开发者将应用程序上传至应用运营平台时,需要先分析该应用程序与应用运营平台中已有的应用程序是否存在创意及使用过程等方面上的相似性。若该应用程序与应用运营平台上已有的应用程序较为相似,则可确定该应用程序不是正版应用程序,并禁止该应用程序上传至应用运营平台。该判断过程可以是由相关工作人员通过人工分析,判断应用程序与应用运营平台上已有的应用程序是否相似,根据判断结果确定是否允许应用程序上传至应用运营平台。
在实现本发明的过程中,发明人发现上述方法至少存在以下问题:
由于在对应用程序进行分析时,需要进行人工分析,而人工分析需要大量人员持续投入,从而使得分析成本较高。另外,由于人工分析很难覆盖到应用运营平台中所有的应用程序,因此,分析时采集的样本有限,导致分析结果较为不准确。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种应用程序的分析方法及装置。所述技术方案如下:
第一方面,提供了一种应用程序的分析方法,所述方法包括:
获取待发布的应用程序安装包;
解析所述应用程序安装包;
根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,所述特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,所述样本安装包为已发布的应用程序安装包;
根据相似度分析结果,对应用程序进行分析。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的代码结构特征数据与所述应用程序安装包的代码结构特征数据之间代码结构的相似度。
结合第一方面,在第一方面的第二种可能的实现方式中,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据所述树型文件相似度矩阵,计算资源分布的相似度。
结合第一方面,在第一方面的第三种可能的实现方式中,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,所述代码执行指令包括指令代码及操作数据对象;
根据所述代码执行指令及对应的权重,确定代码向量;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
确定每个样本安装包的代码向量与所述应用程序安装包的代码向量之间的交集及并集,将所述交集中数据的数量与所述并集中数据的数量之间的比值,作为代码向量的相似度。
结合第一方面,在第一方面的第四种可能的实现方式中,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据所述函数调用的相似度矩阵,计算函数调用的相似度。
结合第一方面至第一方面的第四种可能的实现方式中任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据相似度分析结果,对应用程序进行分析,包括:
根据样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度;
若存在大于正版阈值的综合相似度,则确定所述应用程序不为正版应用程序。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度,包括:
将样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度数据。
第二方面,提供了一种应用程序的分析装置,所述装置包括:
获取模块,用于获取待发布的应用程序安装包;
解析模块,用于解析所述获取模块获取到的应用程序安装包;
提取模块,用于根据解析模块解析得到的应用程序代码,提取所述应用程序安装包的特征数据,所述特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
第一分析模块,用于根据样本数据库中样本安装包的特征数据与提取模块提取到的所述应用程序安装包的特征数据,进行相似度分析,所述样本安装包为已发布的应用程序安装包;
第二分析模块,用于根据第一分析模块分析到的相似度分析结果,对应用程序进行分析。
结合第二方面,在第二方面的第一种可能的实现方式中,所述提取模块,用于根据解析模块解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
所述第一分析模块,用于计算每个样本安装包的代码结构特征数据与所述应用程序安装包的代码结构特征数据之间代码结构的相似度。
结合第二方面,在第二方面的第二种可能的实现方式中,所述提取模块,用于根据解析模块解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
所述第一分析模块,用于计算每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据所述树型文件相似度矩阵,计算资源分布的相似度。
结合第二方面,在第二方面的第三种可能的实现方式中,所述提取模块,用于根据解析模块解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,所述代码执行指令包括指令代码及操作数据对象;
根据所述代码执行指令及对应的权重,确定代码向量;
所述第一分析模块,用于确定每个样本安装包的代码向量与所述应用程序安装包的代码向量之间的交集及并集,将所述交集中数据的数量与所述并集中数据的数量之间的比值,作为代码向量的相似度。
结合第二方面,在第二方面的第四种可能的实现方式中,所述提取模块,用于根据解析模块解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
所述第一分析模块,用于计算每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据所述函数调用的相似度矩阵,计算函数调用的相似度。
结合第二方面至第二方面的第四种可能的实现方式中任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述第二分析模块,包括:
第一确定单元,用于根据样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度;
第二确定单元,用于当存在大于正版阈值的综合相似度时,则确定所述应用程序不为正版应用程序。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述第一确定单元,用于将样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度数据。
第三方面,提供了一种服务器,所述服务器装置包括:接收器、发射器、存储器和处理器,所述接收器、所述发射器和所述存储器分别与所述处理器连接,所述存储器存储有程序代码,所述处理器用于调用所述程序代码,执行以下操作:
获取待发布的应用程序安装包;
解析所述应用程序安装包;
根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,所述特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,所述样本安装包为已发布的应用程序安装包;
根据相似度分析结果,对应用程序进行分析。
本发明实施例提供的技术方案带来的有益效果是:
通过获取待发布的应用程序安装包,解析应用程序安装包,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,对应用程序进行分析。由于可依据已发布的正版应用程序自动对应用程序进行分析,避免了人工分析过程,从而降低了分析成本。另外,由于分析过程中能覆盖到样本数据库中所有样本,采集的样本数量较多,因此,分析结果较为准确。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种网络架构的示意图。
图2是根据一示例性实施例示出的一种相似性分析系统的结构示意图。
图3是根据一示例性实施例示出的一种服务器的结构示意图。
图4是根据一示例性实施例示出的一种应用程序的分析装置的结构示意图。
图5是根据一示例性实施例示出的一种确定模块的结构示意图。
图6是根据一示例性实施例示出的一种应用程序的分析方法流程图。
图7是根据一示例性实施例示出的一种应用程序的分析方法流程图。
图8是根据一示例性实施例示出的一种样本入库的流程示意图。
图9是根据一示例性实施例示出的一种样本分析的流程示意图。
图10是根据一示例性实施例示出的一种样本管理的场景示意图。
图11是根据一示例性实施例示出的一种样本管理的场景示意图。
图12是根据一示例性实施例示出的一种应用程序的分析方法流程图。
图13是根据一示例性实施例示出的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明实施例提供的方法所涉及的网络架构示意图。如图1所示,该网络架构包括应用运营平台101及相似性分析系统102。其中,应用运营平台101为开发者或运营人员与用户之间的交互平台,开发者或运营人员可将应用程序安装包上传至应用运营平台101,从而用户可从应用运营平台101上下载应用。应用运营平台101及相似性分析系统102分别由至少一台服务器构成。
为了提升相似性分析系统102在大样本的应用场景下的分析效率,拓展相似性分析系统102的使用范围,相似性分析系统102可采用分布式结构,本实施例对此不作具体限定。参考图2,相似性分析系统102可将执行模块与分布式计算架构进行集成,该集成结构包括web(网络)服务模块1021、任务调度模块1022、数据分析模块1023及样本元数据库模块1024。
其中,web服务模块1021用于为应用运营平台提供服务接口、触发分析任务创建、提交分析报告等,本实施例对此不作具体限定。当然,上述功能也可集成到应用运营平台中,本实施例对此不作具体限定。
任务调度模块1022可基于分布式计算的nameNode节点来执行,本实施例对此不作具体限定。任务调度模块1022用于创建任务分配到数据分析模块1023,采集数据分析模块1023的分析结果生成分析报告。
数据分析模块1023可基于分布式计算的DataNode节点来执行,本实施例对此不作具体限定。数据分析模块1023可以分布式的方式保持应用中提取出来的样本特征信息,还可以分布式的方式将待分析应用与样本库中的样本逐个进行详细性分析比较,并将分析结果输出到NameNode中,本实施例对此也不作具体限定。
样本元数据库模块1024可用于存储样本元数据库的样本元数据,本实施例对此不作具体限定。其中,样本元数据可用于描述系统中包含的具体样本及用于识别样本的关键字段,样本元数据可供web服务模块1021进行使用,本实施例对此不作具体限定。例如,样本元数据可以为样本应用名称、样本应用存储节点及样本的通用标识等字段。
web服务模块1021与任务调度模块1022之间可进行数据传输,任务调度模块1022与数据分析模块1023可进行数据传输,样本元数据库模块1024与web服务模块1021之间可进行数据传输。
由于应用运营平台101及相似性分析系统102可分别由至少一台服务器构成,本实施例提供了一种服务器的结构,如图3所示。图3是根据一示例性实施例示出的一种服务器300的框图。例如,服务器300可以被提供为一服务器。参照图3,服务器300包括处理组件322,其进一步包括一个或多个处理器,以及由存储器332所代表的存储器资源,用于存储可由处理组件322的执行的指令,例如应用程序。存储器332中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件322被配置为执行指令,以执行下面图6或图7所对应的实施例所提供的推荐信息获取方法服务器所执行的功能。
服务器300还可以包括一个电源组件326被配置为执行服务器300的电源管理,一个有线或无线网络接口350被配置为将服务器300连接到网络,和一个输入输出(I/O)接口358。服务器300可以操作基于存储在存储器332的操作系统,例如Windows,Mac OS,Unix,Linux,FreeBSD或类似。
本发明实施例提供了一种应用程序的分析装置,该装置用于执行下面图6或图7对应的实施例中提供的应用程序的分析方法。参见图4,该装置包括:
获取模块401,用于获取待发布的应用程序安装包;
解析模块402,用于解析获取模块401获取到的应用程序安装包;
提取模块403,用于根据解析模块402解析得到的应用程序代码,提取应用程序安装包的特征数据,特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
第一分析模块404,用于根据样本数据库中样本安装包的特征数据与提取模块403提取到的应用程序安装包的特征数据,进行相似度分析,样本安装包为已发布的应用程序安装包;
第二分析模块405,用于根据第一分析模块404分析到的相似度分析结果,确定应用程序是否为正版应用程序。
作为一种可选实施例,提取模块403,用于根据解析模块402解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
第一分析模块404,用于计算每个样本安装包的代码结构特征数据与应用程序安装包的代码结构特征数据之间代码结构的相似度。
作为一种可选实施例,提取模块403,用于根据解析模块402解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
第一分析模块404,用于计算每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据树型文件相似度矩阵,计算资源分布的相似度。
作为一种可选实施例,提取模块403,用于根据解析模块402解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,代码执行指令包括指令代码及操作数据对象;根据代码执行指令及对应的权重,确定代码向量;
第一分析模块404,用于确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的交集及并集,将交集中数据的数量与并集中数据的数量之间的比值,作为代码向量的相似度。
作为一种可选实施例,提取模块403,用于根据解析模块402解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
第一分析模块404,用于计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据函数调用的相似度矩阵,计算函数调用的相似度。
作为一种可选实施例,参见图5,第二分析模块405,包括:
第一确定单元4051,用于根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度;
第二确定单元4052,用于当存在大于正版阈值的综合相似度时,则确定应用程序不为正版应用程序。
作为一种可选实施例,第一确定单元4051,用于将样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与应用程序安装包之间的综合相似度数据。
本发明实施例提供的装置,通过获取待发布的应用程序安装包,解析应用程序安装包,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,对应用程序进行分析。由于可依据已发布的正版应用程序自动对应用程序进行分析,避免了人工分析过程,从而降低了分析成本。另外,由于分析过程中能覆盖到样本数据库中所有样本,采集的样本数量较多,因此,分析结果较为准确。
本发明实施例提供了一种应用程序的分析方法,结合上述实施例中的内容,对本实施例提供的方法进行举例说明。参见图6,本实施例提供的方法流程包括:
601、获取待发布的应用程序安装包。
602、解析应用程序安装包。
603、根据解析得到的应用程序代码,提取应用程序安装包的特征数据,特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项。
604、根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,样本安装包为已发布的应用程序安装包。
605、根据相似度分析结果,对应用程序进行分析。
本发明实施例提供的方法,通过获取待发布的应用程序安装包,解析应用程序安装包,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,对应用程序进行分析。由于可依据已发布的正版应用程序自动对应用程序进行分析,避免了人工分析过程,从而降低了分析成本。另外,由于分析过程中能覆盖到样本数据库中所有样本,采集的样本数量较多,因此,分析结果较为准确。
作为一种可选实施例,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的代码结构特征数据与应用程序安装包的代码结构特征数据之间代码结构的相似度。
作为一种可选实施例,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据树型文件相似度矩阵,计算资源分布的相似度。
作为一种可选实施例,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,代码执行指令包括指令代码及操作数据对象;
根据代码执行指令及对应的权重,确定代码向量;
根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,包括:
确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的交集及并集,将交集中数据的数量与并集中数据的数量之间的比值,作为代码向量的相似度。
作为一种可选实施例,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据函数调用的相似度矩阵,计算函数调用的相似度。
作为一种可选实施例,根据相似度分析结果,对应用程序进行分析,包括:
根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度;
若存在大于正版阈值的综合相似度,则确定应用程序不为正版应用程序。
作为一种可选实施例,根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度,包括:
将样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与应用程序安装包之间的综合相似度数据。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
本发明实施例提供了一种应用程序的分析方法,该方法用于服务器,结合上述实施例中的内容,对本实施例提供的方法进行举例说明。参见图7,本实施例提供的方法流程包括:
701、获取待发布的应用程序安装包。
本实施例不对获取待发布的应用程序安装包的方式作具体限定,包括但不限于:接收开发者或运营人员在应用运营平台上提交的应用程序发布请求,该应用程序发布请求包含应用程序安装包;获取应用程序发布请求中待发布的应用程序安装包。
702、解析应用程序安装包。
在对应用程序安装包进行解析之前,解析应用程序安装包的工作可由应用运营平台自动触发或由运营人员在应用运营平台中人工触发,本实施例对此不作具体限定。由于获取到待发布的应用程序安装包的数量可能会有多个,当解析应用程序安装包的工作可由运营人员进行人工触发时,运营人员可指定哪些应用程序安装包需要被解析,本实施例对此也不作具体限定。
本实施例不对解析应用程序安装包的方式作具体限定,包括但不限于:获取应用程序安装包中包含代码的文件;对包含代码的文件进行反编译,从而得到对应的应用程序代码。
例如,以应用程序安装包为APK(Android Package,安卓安装包)为例。获取APK中的DEX文件,对DEX文件进行反编译,得到对应的应用程序代码。
703、根据解析得到的应用程序代码,提取应用程序安装包的特征数据,特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项。
由于应用程序安装包的特征数据可有多种类型,因此,在根据解析得到的应用程序代码,提取应用程序安装包的特征数据时,可根据特征数据的类型进行提取。相应地,有如下四种提取方式:
第一种提取方式:根据解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据。
解析得到的应用程序代码通常会有包含应用程序相关的目录。例如,应用程序代码中不同类下可能会包含有不同的头文件及代码文件,从而会形成应用程序代码相关的目录。根据应用程序相关的目录,可确定树型结构中的树节点及叶子节点,从而可生成相应的树型结构文件,即生成代码结构特征数据。树型结构文件可以为XML(Extensible MarkupLanguage,可拓展标记语言)类型的文件,本实施例对此不作具体限定。
第二种提取方式:根据解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据。
应用程序在运行过程中所加载的数据文件可以为图片或音乐等数据文件,本实施例不对数据文件的类型作具体限定。由于不同的数据文件在应用程序安装包中会有不同的存储路径,因此,可按照数据文件的存储路径,生成相应的树型结构文件,即生成资源分布特征数据。其中,存储路径中不同的路径项可分别为树型结构的树节点及叶子节点。树型结构文件可以为XML类型的文件,本实施例对此不作具体限定。
例如,以应用程序安装包为APK_P及APK_Q为例。根据APK_P解析得到的应用程序代码运行过程中所加载的数据文件的存储路径,得到的资源分布特征数据可以为p1、p2……pm。根据APK_Q解析得到的应用程序代码运行过程中所加载的数据文件的存储路径,得到的资源分布特征数据可以为q1、q2……qn。
第三种提取方式:根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,代码执行指令包括指令代码及操作数据对象;根据代码执行指令及对应的权重,确定代码向量。
代码执行指令可包括指令代码及操作数据对象,本实施例对此不作具体限定。由于在应用程序代码中,每个代码执行指令出现的场景及次数可能都不相同。其中,在一个场景中出现次数多的代码执行指令,相应的权重也会较大。反之,在一个场景中出现次数少的代码执行指令,相应的权重会较小,本实施例对此不作具体限定。因此,在根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重时,可根据每个代码执行指令在应用程序代码中出现次数占所有代码执行指令在应用程序代码中出现总次数的百分比,确定每个代码执行指令在应用程序代码中对应的权重。当然,还可以采用其它方式确定代码执行指令对应的权重,本实施例对此不作具体限定。将确定的权重赋予给对应的代码执行指令,即可得到代码向量。
第四种提取方式:根据解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据。
由于应用程序代码中通常可能会包含许多个用于实现不同逻辑功能的函数,而函数之间通常会互相进行调用。因此,根据每个函数之间的调用关系,可确定对应的有向图集,该有向图集即为代码函数调用关系特征数据。其中,有向图集可通过文本文件的形式进行存储,本实施例对此不作具体限定。文本文件在存储有向图集中的每个图节点时,存储图节点的数据结构可包括但不限于以下的数据成员中一项或多项:函数组成部分的长度,函数是否为应用程序安装包中的代码,函数代码字面表示,函数内调用的一个或多个函数。
704、根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,样本安装包为已发布的应用程序安装包。
由于安装包的特征数据可以包含多种类型,因此,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析的方式可以包括但不限于如下四种分析方式:
第一种分析方式:计算每个样本安装包的代码结构特征数据与应用程序安装包的代码结构特征数据之间代码结构的相似度;
可通过树编辑距离算法计算每个样本安装包的代码结构特征数据与应用程序安装包的代码结构特征数据之间代码结构的相似度,本实施例对此不作具体限定。通过树编辑算法,能够计算出应用程序安装包对应的树型结构转化为每个样本安装包对应的树型结构时,需要的转化操作数量。其中,计算出需要的转化操作数量即为应用程序安装包对应的树型结构与样本安装包对应的树型结构之间的树编辑距离,转化操作包括为树型结构增添节点的操作、删除节点的操作以及更改节点的操作,本实施例对此不作具体限定。确定应用程序安装包对应的树型结构的大小,并确定每个样本安装包对应的树型结构的大小,从而按照下列公式(1)计算出应用程序安装包的代码结构特征数据之间代码结构的相似度:
其中,len1为样本安装包对应的树型结构的大小,len2为应用程序安装包对应的树型结构的大小,TED为应用程序安装包对应的树型结构与样本安装包对应的树型结构之间的树编辑距离。树型结构的大小可以为树型结构的度,即树型结构中树枝的数量,本实施例对此不作具体限定。
第二种分析方式:计算每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据树型文件相似度矩阵,计算资源分布的相似度。
由于每个样本安装包中可包含多个存储目录,每个存储目录存储着应用程序在运行过程中所加载的数据文件,而资源分布特征数据可以为数据文件存储路径对应的树型结构文件。因此,每个样本安装包可对应多个树型结构文件。通过树编辑距离算法,可计算每个样本安装包对应的树型结构与应用程序安装包的树型结构之间代码结构的相似度。其中,可采用上述公式(1)计算每个样本安装包对应的树型结构与应用程序安装包的树型结构之间资源分布的相似度,本实施例对此不作具体限定。
需要说明的是,由于每个样本安装包可对应多个树型结构文件,因此,在计算每个样本安装包对应的树型结构与应用程序安装包的树型结构之间代码结构的相似度,可能会有多个相似的数据。
例如,以任意一个样本安装包P为例。P中的资源分布特征数据分别为p1、p2、......、pm,应用程序安装包Q中的资源分布特征数据分别为q1、q2、......、qm,通过分别计算P中每个资源分布特征数据与Q中每个资源分布特征数据之间代码结构的相似度,可得到树型文件相似度矩阵,如下表1所示:
表1
p1 | p2 | …… | pm | |
q1 | Ratio(p1,q1) | Ratio(p2,q1) | Ratio(pm,q1) | |
q2 | Ratio(p1,q2) | Ratio(p2,q2) | Ratio(pm,q2) | |
…… | …… | …… | ||
qm | Ratio(p1,qm) | Ratio(p2,qm) | Ratio(pm,qm) |
本实施例不对根据树型文件相似度矩阵,计算资源分布的相似度的方式作具体限定,包括但不限于:根据相似度矩阵中每一项的相似度,计算相似度的平均值,将相似度的平均值作为资源分布的相似度。
第三种分析方式:确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的交集及并集,将交集中数据的数量与并集中数据的数量之间的比值,作为代码向量的相似度。
代码向量由代码执行指令及对应的权重构成,而每个样本安装包及应用程序安装包中的代码向量可能为多个。因此,可确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的交集,即样本安装包的代码向量与应用程序安装包的代码向量中相同的代码向量。另外,还可确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的并集,即样本安装包的代码向量与应用程序安装包的代码向量中相同的代码向量。
在计算交集中数据的数量与并集中数据的数量之间的比值时,可采用如下公式计算:
其中,ratio为代码向量的相似度,|p∩q|为样本安装包的代码向量与应用程序安装包的代码向量之间交集中数据的数量,|p∪q|为样本安装包的代码向量与应用程序安装包的代码向量之间并集中数据的数量。
第四种方式:计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据函数调用的相似度矩阵,计算函数调用的相似度。
由于应用程序代码中可能会存在多个未被调用的函数,以每个未被调用的函数为起点,根据应用程序代码中函数的逻辑调用关系,可确定多个有向图集,即确定了多个函数调用树。因此,每个样本安装包可包含多个函数调用树,即多个代码函数调用关系特征数据。同理,应用程序安装包也可包含多个函数调用树,即多个代码函数调用关系特征数据。通过树编辑距离算法,可计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离。通过上述公式(1),可计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间函数调用的相似度,本实施例对此不作具体限定。
例如,以任意一个样本安装包M为例。M中的代码函数调用关系特征数据分别为M1、M2、......、Mm,应用程序安装包N中的代码函数调用关系特征数据分别为N1、N2、......、Nm,通过分别计算M中每个代码函数调用关系特征数据与N中每个代码函数调用关系特征数据之间函数调用的相似度,可得到函数调用的相似度矩阵,如下表2所示:
表2
M1 | M2 | …… | Mm | |
N1 | Ratio(M1,N1) | Ratio(M2,N1) | Ratio(Mm,N1) | |
N2 | Ratio(M1,N2) | Ratio(M2,N2) | Ratio(Mm,N2) | |
…… | …… | …… | ||
Nm | Ratio(M1,Nm) | Ratio(M2,Nm) | Ratio(Mm,Nm) |
本实施例不对根据函数调用的相似度矩阵,计算函数调用的相似度的方式作具体限定,包括但不限于:根据相似度矩阵中每一项的相似度,计算相似度的平均值,将相似度的平均值作为函数调用的相似度。
需要说明的是,可通过相应的样本数据库模块,负责对样本数据库中样本安装包的特征数据进行管理,本实施例对此不作具体限定。
705、根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度。
本实施例不对根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度的方式作具体限定,包括但不限于:将样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与应用程序安装包之间的综合相似度数据。
例如,以样本数据库中任意一个样本安装包为例。其中,样本安装包与应用程序安装包之间代码结构的相似度数据为0.8,资源分布的相似度数据为0.6、代码向量的相似度数据为0.8及函数调用的相似度数据为0.4。另外,代码结构的相似度数据相应的权重为0.2,资源分布的相似度数据相应的权重为0.3,代码向量的相似度数据相应的权重为0.1,函数调用的相似度数据相应的权重为0.4。根据上述数据,可计算得到综合相似度数据为(0.8×0.2+0.6×0.3+0.8×0.1+0.4×0.4)=0.58。
需要说明的是,代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据相应的权重可分别根据实际情况进行设置,本实施例对此不作具体限定。其中,四项相似度数据相应的权重之和需为数值1。
另外,由于应用程序安装包需要与样本数据库中每个样本安装包进行相似度分析,因此,可按照上述计算过程,计算得到样本数据库中每个样本安装包与应用程序安装包之间的综合相似度,本实施例对此不作具体限定。
706、若存在大于正版阈值的综合相似度,则确定应用程序不为正版应用程序。
其中,正版阈值可根据需求进行设置,本实施例对此不作具体限定。
例如,以正版阈值为0.5为例。若样本数据库中某个样本安装包与应用程序安装包之间的综合相似度为0.58,由于0.58大于正版阈值,则说明应用程序安装包与该样本安装包较为相似,从而可确定该应用程序不为正版应用程序。若样本数据库中每个样本安装包与应用程序安装包之间的综合相似度均小于正版阈值0.5,则可确定该应用程序为正版应用程序。
需要说明的是,在本步骤中,主要是根据样本数据库中每个样本安装包与应用程序安装包之间的综合相似度,自动判断应用程序是否为正版应用程序的过程。当然,除了自动判断过程之外,还可以有人工判断过程,具体方式可如下:根据样本数据库中每个样本安装包与应用程序安装包之间的综合相似度,生成分析报告;对分析报告进行显示,由相关工作人员根据分析报告,确定应用程序是否为正版应用程序。其中,分析报告中可以包括与应用程序安装包之间综合相似度最高的样本安装包对应的标识、最高的综合相似度,所有综合相似度的分布情况及与应用程序安装包之间综合相似度最高的样本安装包对应的特征数据等,本实施例不对分析报告中的内容作具体限定。
需要说明的是,由于在对应用程序安装包进行解析之前,应用程序安装包被保存至相似性分析系统对应的样本数据库中。当确定应用程序不是正版应用程序时,由于应用程序安装包与样本数据库中已有的样本安装包较为相似,从而可将应用程序安装包从相似性分析系统对应的样本数据库中删除。由于删除了样本数据库中相似的样本安装包,从而能够节省样本数据库的存储空间。
当确定应用程序是正版应用程序时,从而可将应用程序安装包继续保留在相似性分析系统对应的样本数据库中。由于将正版应用程序对应的安装包保留在了样本数据库中,从而能够拓展样本数据库的样本数量,使得后续判断过程更加准确。
另外,在生成分析报告时,需要用到应用程序安装包的相关信息。例如,应用程序安装包的标识等。因此,可将应用程序安装包对应的元数据存储至样本元数据库中,以方便后续获取应用程序安装包对应的元数据,本实施例对此不作具体限定。其中,应用程序安装包对应的元数据可包括应用程序安装包对应的标识,应用程序的名称及应用程序安装包对应的存储节点等,本实施例不对元数据中包含的内容作具体限定。
需要说明的是,上述步骤705至本步骤706为根据相似度分析结果,对应用程序进行分析的过程。其中,在对应用程序进行分析时,主要分析的是应用程序的质量。当然,在分析应用程序的质量时,除了上述分析应用程序是否为正版应用程序的过程之外,还可以有其它分析应用程序质量的方式,本实施例对此不作具体限定。
需要说明的是,结合图1及上面步骤中的过程,针对实际的应用场景,本实施例的样本入库流程涉及到开发者或运营人员、应用运营平台及相似性分析系统之间的交互,参见图8。在图8中,开发者或运营人员可以向应用运营平台提交应用发布请求,应用运营平台接收到应用发布请求后,启动管理流程,从而将应用发布请求中的应用提交到系统的样本库中,样本库可向应用运营平台返回入库结果。
结合图1及上面步骤中的过程,针对实际的应用场景,本实施例在样本入库后的分析流程涉及到运营人员、应用运营平台及相似性分析系统之间的交互,参见图9。在图9中,运营人员向应用运营平台提交相似性分析请求,应用运营平台根据相似性分析请求,向相似性分析系统提交分析任务。相似性分析系统创建相应的分析任务,并执行分析任务。根据分析结果,输出分析报告。相似性分析系统将分析报告提交至应用运营平台,由应用运营平台保存分析报告,向运营人员显示分析报告对应的分析结果。
结合图2及上面步骤中的过程,针对实际的应用场景,本实施例在样本管理时的流程可以参见图10。在图10中,应用运营平台向相似性分析系统提交样本入库消息,由相似性分析系统中的相似性分析服务子模块处理提交的消息。其中,样本入库消息中至少携带APK应用包本身、用于应用运营平台与相似性分析系统之间识别APK的唯一标识,样本入库信息可对应上述步骤中的应用程序发布请求。相似性分析服务子模块将样本对应的样本元数据存储至APK样本元数据数据库,将样本提交至特征码提取子模块,由特征码提取子模块按照相似性分析算法的数据提取要求和数据结果从APK中提取样本特征数据,并存储至APK样本库中。其中,APK特征数据可包括APK的代码包结构特征数据、APK资源分布特征数据、APK代码的函数调用关系特征数据和APK代码向量等特征数据中的一种或者多种,相似性分析服务子模块所执行的功能可对应上述图4中的分析模块404所执行的功能,特征码提取子模块所执行的功能可对应上述图4中的提取模块403所执行的功能。
结合图2及上面步骤中的过程,针对实际的应用场景,本实施例的相似性分析执行时的流程可以参见图11。在图11中,应用运营平台发起相似性分析请求,由相似性分析服务子模块处理提交消息。其中,提交的样本分析消息中,至少携带待分析APK应用包本身和用于应用运营平台与相似性分析系统之间识别APK的唯一标识。相似性分析服务子模块从APK样本数据库中获取样本的数据列表,创建分析任务,并将分析任务提交到相似性分析执行子模块。相似性分析执行子模块通过特征提取子模块对待分析的APK应用进行特征数据提取。在提取待分析APK应用的特征数据后,从样本库中提取APK样本的特征数据,之后与待分析APK应用的特征数据进行逐个分析。在完成所有样本分析有,相似性分析执行子模块输出分析报告,并将报告通过相似性分析服务子模块提交到应用运营平台。其中,分析报告至少包括:待分析APK应用的唯一标识,与待分析APK应用标识最相似的样本应用标识,与最相似的样本应用之间的相似度。另外,报告还可以包括样本库比较的相似度的分布情况,最高相似度的详细相似特征数据。
另外,针对实际的应用场景,上述步骤701至步骤706中的内容对于的主流程可如图12所示。在图12中,开发者向应用运营平台提交新的应用发布请求,应用运营平台将提交的应用纳入样本库管理。通过将该应用与样本库中的应用进行相似性分析,逐一输出相似性分析结果。根据相似性分析结果判断应用是否为正版应用,并输出相似度分析报告。在后续管理流程中,如果该应用未被评审通过,则将该应用从样本库中移除。若评审通过,则可让该应用在应用运营平台上面上线。
本发明实施例提供的方法,通过获取待发布的应用程序安装包,解析应用程序安装包,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,对应用程序进行分析。由于可依据已发布的正版应用程序自动对应用程序进行分析,避免了人工分析过程,从而降低了分析成本。另外,由于分析过程中能覆盖到样本数据库中所有样本,采集的样本数量较多,因此,分析结果较为准确。
图13是本发明实施例提供的一种服务器结构示意图,参见图13,包括:接收器1301、发射器1302、存储器1303和处理器1304,该接收器1301、该发射器1302和该存储器1303分别与该处理器1304连接,该存储器1303存储有程序代码,该处理器1304用于调用该程序代码,执行以下操作:
获取待发布的应用程序安装包;
解析应用程序安装包;
根据解析得到的应用程序代码,提取应用程序安装包的特征数据,特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,样本安装包为已发布的应用程序安装包;
根据相似度分析结果,对应用程序进行分析。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
根据解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
计算每个样本安装包的代码结构特征数据与应用程序安装包的代码结构特征数据之间代码结构的相似度。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
根据解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
计算每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据树型文件相似度矩阵,计算资源分布的相似度。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,代码执行指令包括指令代码及操作数据对象;
根据代码执行指令及对应的权重,确定代码向量;
确定每个样本安装包的代码向量与应用程序安装包的代码向量之间的交集及并集,将交集中数据的数量与并集中数据的数量之间的比值,作为代码向量的相似度。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
根据解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
计算每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据函数调用的相似度矩阵,计算函数调用的相似度。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
根据样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据,确定样本数据库中每个样本安装包与应用程序安装包之间的综合相似度;
若存在大于正版阈值的综合相似度,则确定应用程序不为正版应用程序。
作为一种可选实施例,处理器1304还用于调用该程序代码,执行以下操作:
将样本数据库中每个样本安装包与应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与应用程序安装包之间的综合相似度数据。
本发明实施例提供的服务器,通过获取待发布的应用程序安装包,解析应用程序安装包,根据解析得到的应用程序代码,提取应用程序安装包的特征数据,根据样本数据库中样本安装包的特征数据与应用程序安装包的特征数据,进行相似度分析,根据相似度分析结果,对应用程序进行分析。由于可依据已发布的正版应用程序自动对应用程序进行分析,避免了人工分析过程,从而降低了分析成本。另外,由于分析过程中能覆盖到样本数据库中所有样本,采集的样本数量较多,因此,分析结果较为准确。
需要说明的是:上述实施例提供的应用程序的分析装置在分析应用程序是否为正版时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序的分析装置与应用程序的分析方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种应用程序的分析方法,其特征在于,所述方法包括:
获取待发布的应用程序安装包;
解析所述应用程序安装包;
根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,所述特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,所述样本安装包为已发布的应用程序安装包;
将样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度数据;
若存在大于正版阈值的综合相似度,则确定所述应用程序不为正版应用程序。
2.根据权利要求1所述的方法,其特征在于,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的代码结构特征数据与所述应用程序安装包的代码结构特征数据之间代码结构的相似度。
3.根据权利要求1所述的方法,其特征在于,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据所述树型文件相似度矩阵,计算资源分布的相似度。
4.根据权利要求1所述的方法,其特征在于,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,所述代码执行指令包括指令代码及操作数据对象;
根据所述代码执行指令及对应的权重,确定代码向量;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
确定每个样本安装包的代码向量与所述应用程序安装包的代码向量之间的交集及并集,将所述交集中数据的数量与所述并集中数据的数量之间的比值,作为代码向量的相似度。
5.根据权利要求1所述的方法,其特征在于,所述根据解析得到的应用程序代码,提取所述应用程序安装包的特征数据,包括:
根据解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
所述根据样本数据库中样本安装包的特征数据与所述应用程序安装包的特征数据,进行相似度分析,包括:
计算每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据所述函数调用的相似度矩阵,计算函数调用的相似度。
6.一种应用程序的分析装置,其特征在于,所述装置包括:
获取模块,用于获取待发布的应用程序安装包;
解析模块,用于解析所述获取模块获取到的应用程序安装包;
提取模块,用于根据解析模块解析得到的应用程序代码,提取所述应用程序安装包的特征数据,所述特征数据包括代码结构特征数据、资源分布特征数据、代码向量和代码函数调用关系特征数据中至少一项;
第一分析模块,用于根据样本数据库中样本安装包的特征数据与提取模块提取到的所述应用程序安装包的特征数据,进行相似度分析,所述样本安装包为已发布的应用程序安装包;
第一确定模块,用于将样本数据库中每个样本安装包与所述应用程序安装包之间代码结构的相似度数据、资源分布的相似度数据、代码向量的相似度数据及函数调用的相似度数据分别乘以相应的权重后进行叠加,将叠加结果作为样本数据库中每个样本安装包与所述应用程序安装包之间的综合相似度数据;
第二确定模块,用于当存在大于正版阈值的综合相似度时,则确定所述应用程序不为正版应用程序。
7.根据权利要求6所述的装置,其特征在于,所述提取模块,用于根据解析模块解析得到的应用程序代码中的目录以及代码文件之间的节点关系,确定代码结构特征数据;
所述第一分析模块,用于计算每个样本安装包的代码结构特征数据与所述应用程序安装包的代码结构特征数据之间代码结构的相似度。
8.根据权利要求6所述的装置,其特征在于,所述提取模块,用于根据解析模块解析得到的应用程序代码在运行过程中所加载的数据文件的存储路径,得到资源分布特征数据;
所述第一分析模块,用于计算每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,根据每个样本安装包的每个资源分布特征数据与所述应用程序安装包的每个资源分布特征数据之间的树编辑距离,得到树型文件相似度矩阵,根据所述树型文件相似度矩阵,计算资源分布的相似度。
9.根据权利要求6所述的装置,其特征在于,所述提取模块,用于根据解析模块解析得到的应用程序代码中代码执行指令,确定代码执行指令对应的权重,所述代码执行指令包括指令代码及操作数据对象;
根据所述代码执行指令及对应的权重,确定代码向量;
所述第一分析模块,用于确定每个样本安装包的代码向量与所述应用程序安装包的代码向量之间的交集及并集,将所述交集中数据的数量与所述并集中数据的数量之间的比值,作为代码向量的相似度。
10.根据权利要求6所述的装置,其特征在于,所述提取模块,用于根据解析模块解析得到的应用程序代码的函数调用关系,确定代码函数调用关系特征数据;
所述第一分析模块,用于计算每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,根据每个样本安装包的每个代码函数调用关系特征数据与所述应用程序安装包的每个代码函数调用关系特征数据之间的树编辑距离,得到函数调用的相似度矩阵,根据所述函数调用的相似度矩阵,计算函数调用的相似度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812366.9A CN104572085B (zh) | 2014-12-23 | 2014-12-23 | 应用程序的分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812366.9A CN104572085B (zh) | 2014-12-23 | 2014-12-23 | 应用程序的分析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572085A CN104572085A (zh) | 2015-04-29 |
CN104572085B true CN104572085B (zh) | 2018-04-20 |
Family
ID=53088251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410812366.9A Expired - Fee Related CN104572085B (zh) | 2014-12-23 | 2014-12-23 | 应用程序的分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572085B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512516A (zh) * | 2015-12-04 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 表情上传方法和装置 |
CN106445513A (zh) * | 2016-09-12 | 2017-02-22 | 中山大学 | 一种基于移动应用界面元素的相似性计算方法 |
CN106599017B (zh) * | 2016-10-20 | 2019-09-17 | 广州优视网络科技有限公司 | 安装包的扫描解析方法、装置及移动终端 |
CN106502907B (zh) * | 2016-10-28 | 2018-11-30 | 中国科学院软件研究所 | 一种基于执行轨迹追踪的分布式软件异常诊断方法 |
CN108021391A (zh) * | 2017-12-04 | 2018-05-11 | 泰康保险集团股份有限公司 | 一种程序代码中调用关系的获取方法、装置及设备 |
CN109976999B (zh) * | 2017-12-28 | 2022-09-06 | 北京京东尚科信息技术有限公司 | 测试用例覆盖率的度量方法和度量装置 |
CN108399193B (zh) * | 2018-01-29 | 2022-03-04 | 华侨大学 | 一种基于序列结构的程序代码聚类方法 |
CN108521458B (zh) * | 2018-03-30 | 2021-01-01 | 新华三云计算技术有限公司 | 应用平台访问方法及装置 |
CN113254346B (zh) * | 2021-06-10 | 2021-10-22 | 平安普惠企业管理有限公司 | 代码质量评测方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593253A (zh) * | 2009-06-22 | 2009-12-02 | 成都市华为赛门铁克科技有限公司 | 一种恶意程序判断方法及装置 |
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
WO2013089340A1 (ko) * | 2011-12-16 | 2013-06-20 | 주식회사 안랩 | 어플리케이션의 유사성 검출 장치 및 방법 |
CN103210368A (zh) * | 2010-10-29 | 2013-07-17 | 惠普发展公司,有限责任合伙企业 | 软件应用程序识别 |
CN103984883A (zh) * | 2014-05-21 | 2014-08-13 | 湘潭大学 | 基于类依赖图的Android应用相似性检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183062B2 (en) * | 2013-02-25 | 2015-11-10 | International Business Machines Corporation | Automated application reconfiguration |
-
2014
- 2014-12-23 CN CN201410812366.9A patent/CN104572085B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593253A (zh) * | 2009-06-22 | 2009-12-02 | 成都市华为赛门铁克科技有限公司 | 一种恶意程序判断方法及装置 |
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
CN103210368A (zh) * | 2010-10-29 | 2013-07-17 | 惠普发展公司,有限责任合伙企业 | 软件应用程序识别 |
WO2013089340A1 (ko) * | 2011-12-16 | 2013-06-20 | 주식회사 안랩 | 어플리케이션의 유사성 검출 장치 및 방법 |
CN103984883A (zh) * | 2014-05-21 | 2014-08-13 | 湘潭大学 | 基于类依赖图的Android应用相似性检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104572085A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572085B (zh) | 应用程序的分析方法及装置 | |
US8392465B2 (en) | Dependency graphs for multiple domains | |
US9569288B2 (en) | Application pattern discovery | |
CN110968325B (zh) | 一种小程序转换方法及装置 | |
US9576037B2 (en) | Self-analyzing data processing job to determine data quality issues | |
WO2018036342A1 (zh) | 基于csar的模型文件的可视化设计方法及装置 | |
US10453165B1 (en) | Computer vision machine learning model execution service | |
US20180074852A1 (en) | Compact Task Deployment for Stream Processing Systems | |
CN114116065B (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
US8966442B2 (en) | Custom code innovation management | |
CN110543297B (zh) | 用于生成源码的方法和装置 | |
US20120046980A1 (en) | Consolidating processes for multiple variations | |
US20120143588A1 (en) | Concurrent workload simulation for application performance testing | |
JP6903755B2 (ja) | データ統合ジョブ変換 | |
CN105893509A (zh) | 一种大数据分析模型的标记与解释系统及方法 | |
US20180025162A1 (en) | Application program analysis apparatus and method | |
US9442718B1 (en) | System for assisting in locating changes in source code version control system | |
CN116523457B (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
KR20200046078A (ko) | 미디어 아이템들에 대해 커스텀 알고리즘들을 실행하기 위한 스케일러블 기술들 | |
CN117693734A (zh) | 前端项目处理方法、装置、设备、管理系统及存储介质 | |
CN115993966B (zh) | 应用开发系统及方法 | |
US9244706B2 (en) | Command line shell command generation based on schema | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN113297081B (zh) | 一种持续集成流水线的执行方法和装置 | |
CN113495723A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180420 |