一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、数据显示方法、服务器、终端及存储介质与流程

2022-05-17 22:23:35 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种数据处理方法、数据显示方法服务器、终端及存储介质。


背景技术:

2.随着科技的发展,在某个客户端中运行子程序(或者称为小程序)已成为广受用户欢迎的应用程序运行方式,比如在微信中运行点餐小程序、在qq中运行游戏小程序等等。这样的小程序无需下载或者安装即可应用,节省终端的下载应用程序的内存占用,也提高了用户体验。
3.但是,随着小程序的数量越来越多,小程序之间抄袭现象也随着出现。目前判断某个小程序是否存在抄袭现象的方式是人工审核。但是人工审核的方法存在耗费人力、审核效率低、误判率高等问题。随着时间的推移,运行的小程序数据甚至可达到数万款,采用人工审核的方式是几乎不可能完成的任务。因此,如何高效地判断某个小程序或者应用程序与其他应用小程序或者应用程序之间的相似度成为当今研究的热点问题。


技术实现要素:

4.本发明实施例提供了一种数据处理方法、数据显示方法、服务器、终端及存储介质,可准确地判断两个应用程序之间的相似度。
5.一方面,本发明实施例提供了一种数据处理方法,包括:
6.获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;
7.对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;
8.基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
9.一方面,本发明实施例提供了一种数据显示方法,包括:
10.获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;
11.显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
12.其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
13.一方面,本发明实施例提供了一种数据处理装置,包括:
14.获取单元,用于获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的;所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;
15.处理单元,用于对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;
16.输出单元,用于基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
17.一方面,本发明实施例提供了一种数据显示装置,包括:
18.获取单元,用于获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;
19.显示单元,用于显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
20.其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
21.一方面,本发明实施例提供了一种服务器,包括:
22.处理器,适于实现一条或多条指令,以及
23.计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述第一条或多条指令适于由所述处理器加载并执行:
24.获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
25.一方面,本发明实施例提供了一种终端,包括:
26.处理器,适于实现一条或多条指令;以及,
27.计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行以下步骤:
28.获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
29.其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征
矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
30.一方面,本发明实施例提供了一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序指令,所述计算机程序指令被处理器执行时,用于执行:
31.获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
32.或者,所述计算机程序指令被处理器执行时,还用于执行:
33.获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
34.其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
35.一方面,本发明实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品或所述计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;服务器的处理器从所述计算机存储介质中读取所述计算机指令,所述处理器执行:
36.获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
37.终端的处理器从所述计算机存储介质中读取所述计算机指令,所述处理器执行所述计算机指令执行:
38.获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
39.其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
40.本发明实施例中,服务器根据第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度。其
中,第一特征矩阵是基于第一应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息。也就是说,比较第一特征矩阵和第二特征矩阵之间的相似度,相当于比较第一应用程序的代码数据中关键结构信息,与第二应用程序的代码数据中关键结构信息,如果两者的关键结构信息相似度较高,则表明两者的代码数据相似度较高,也就表明两个应用程序之间的相似度较高,反之亦然。
41.在上述确定第一应用程序和第二应用程序之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例提取代码数据中的关键结构信息,并没有一一对比所有代码数据,节省了运算时间,可提高相似度检测的效率。
附图说明
42.为了更清楚地说明本发明实施例技术方案,下面将实施描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1是本发明实施例提供的一种相似度检测视频管理系统的结构示意图;
44.图2是本发明实施例提供的一种互动数据处理方法的流程示意图;
45.图3是本发明实施例提供的一种抽象语法树的示意图;
46.图4a是本发明实施例提供的一种初始特征矩阵的示意图;
47.图4b是本发明实施例提供的一种相似度检测的流程图;
48.图5是本发明实施例提供的一种数据显示方法的流程示意图;
49.图6a是本发明实施例提供的一种显示相似度检测结果界面的示意图;
50.图6b是本发明实施例提供的一种相似度检测结果界面显示相似度的示意图;
51.图6c是本发明实施例提供的一种相似度检测结果界面显示相似度的示意图;
52.图6d是本发明实施例提供的一种显示第二应用程序的程序启动码的示意图;
53.图6e是本发明实施例提供的一种显示第二应用程序的运行界面的示意图;
54.图6f是本发明实施例提供的一种添加其他相似的应用程序的示意图;
55.图7是本发明实施例提供的一种数据处理装置的结构示意图;
56.图8是本发明实施例提供的一种数据显示装置的结构示意图;
57.图9是本发明实施例提供的一种服务器的结构示意图;
58.图10是本发明实施例提供的一种终端的结构示意图。
具体实施方式
59.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
60.本发明实施例提供了一种数据处理方案以及一种数据显示方案,具体实现中,服务器获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,第一特征矩阵是基于第一应用程序对应的代码数据得到的,用于反映第一应用程序对应的代
码数据中关键结构信息;同理的,第二特征矩阵是基于第二应用程序对应的代码数据得到的,用于反映第二应用程序对应的代码数据中关键结构信息。进一步的,计算第一特征矩阵和第二特征矩阵之间的相似度,然后根据第一特征矩阵和第二特征矩阵之间的相似度确定第一应用程序和第二应用程序的相似度。由于第一矩阵和第二特征矩阵分别反映了第一应用程序的代码数据中关键结构信息和第二应用程序的代码数据中结构信息,又因为一个应用程序的关键结构信息是实现相应应用程序的功能的主要结构,通过比较两个应用程序中主要结构的相似度来确定两个应用程序的相似度,可提高相似度检测的准确性和检测效率。服务器得到第一应用程序和第二应用程序之间的相似度后,可以发送给终端,由终端在界面中显示第一应用程序和第二应用程序之间的相似度。
61.基于上述的数据处理方案以及数据显示方案,本发明实施例提供了一种相似度检测系统,请参考图1,为本发明实施例提供的一种相似度检测系统的结构示意图。图1所示的相似度检测系统可以准确地高效地检测第一应用程序和第二应用程序之间的相似度。
62.在一个实施例中,图1所示的相似度检测系统可包括终端101以及服务器102。其中,终端101可以包括智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能车载以及智能电视等设备;所述服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器。
63.在一个实施例中,用户可通过终端101输入对第一应用程序和第二应用程序进行相似度检测的相似度检测操作;终端101接收到用户输入的相似度检测操作后,可以向服务器发送相似度检测请求,并在相似度检测请求中携带第一应用程序的标识信息和第二应用程序的标识信息,所述标识信息可以表示为appid;服务器102根据终端101发送的相似度检测请求,获取第一应用程序对应的第一特征矩阵,以及获取第二应用程序对应的第二特征矩阵;进一步地,对第一特征矩阵和第二特征矩阵进行相似度运算,得到第一特征矩阵与第二特征矩阵之间的相似度,从而可以基于第一特征矩阵和第二特征矩阵之间的相似度确定第一应用程序与第二应用程序之间的相似度。
64.在一个实施例中,服务器102确定出第一应用程序与第二应用程序之间的相似度后通知终端101在相似度检测结果界面中显示第一应用程序与第二应用程序之间的相似度,用户可通过终端101的相似度检测结果界面了解第一应用程序与第二应用程序之间的相似度。
65.在一个实施例中,第一特征矩阵是根据第一应用程序对应的代码数据得到的,第一特征矩阵用于反映第一应用程序的代码数据中关键结构信息,第二特征矩阵是根据第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序的代码数据中关键结构信息。关键结构信息是指实现对应应用程序功能的主要代码结构。图1所示的相似度检测系统中,服务器102在确定第一特征矩阵与第二特征矩阵之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例在进行相似度比较时,从代码数据中提取了关键结构信息,并没有一一对比所有代码结构,节省了运算时间,可提高相似度检测的效率。
66.基于上述的相似度检测系统,本发明实施例提供了一种数据处理方法。参见图2,为本发明实施例提供的一种数据处理方法的流程示意图。图2所示的数据处理方法可由服务器执行,具体可由服务器的处理器执行,图2所述的数据处理方法可包括如下步骤:
67.步骤s201、获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵。
68.在一个实施例中,第一特征矩阵用于反映第一应用程序对应的代码数据中关键结构信息,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息,由此可知,第一特征矩阵是基于第一应用程序对应的代码数据得到的,第二特征矩阵是基于第二应用程序对应的代码数据得到的。
69.可选的,基于第一应用程序对应的代码数据得到第一特征矩阵,和基于第二应用程序对应的代码数据得到第二特征矩阵的方法是相同的,下面以第一特征矩阵为例,介绍如何基于第一应用程序对应的代码数据得到第一特征矩阵,具体实现中:
70.获取所述第一应用程序对应的代码数据;将所述第一应用程序对应的代码数据编译为抽象语法树,所述抽象语法树以树状形式表示所述代码数据的语法结构,所述抽象语法树包括多个层级,每个层级包括多个节点;遍历所述抽象语法树确定所述多个层级中每个层级的多个节点中每个节点所属的节点类型;根据所述每个层级的多个节点中每个节点所属的节点类型,生成所述相应层级对应的特征向量;将所述每个层级对应的特征向量按照预设顺序进行组合,得到所述第一应用程序对应的第一特征矩阵。
71.其中,抽象语法树,又叫ast(abstract syntax tree),是源代码的语法结构的一种抽象表示。换句话说,抽象语法树是以树状的形式表示编程语言的语法结构,树上的每个节点都表示源代码的一种结构。
72.可选的,上述将所述第一应用程序对应的代码数据编译为抽象语法树的实施方式可以是:将第一应用程序对应的代码数据通过编译器进行编码,得到第一应用程序的代码数据对应的抽象语法树。其中,编译器是一种计算机程序,它会将某种编程语言写成的源代码转换成另一种编程语言,所述编译器可以包括@babel/parser,acorn等任意一种或多种。在本发明实施例中源代码是指第一应用程序对应的代码数据,其可以是javascript代码,另一种编程语言可以指抽象语法树。
73.例如,第一应用程序对应的代码数据为:
[0074][0075]
将第一应用程序对应的代码数据通过编码器进行转换,得到抽象语法树如图3所示,图3所示的抽象语法树为树状结构,可包括层级a和层级b,层级a和层级b中均包括多个节点,比如301和302为层级a中包括的两个节点,303和304为层级b中包括的两个节点。
[0076]
由前述可知,得到第一应用程序对应的抽象语法树后,遍历抽象语法树确定所述多个层级中每个层级的多个节点中每个节点所属的节点类型,所述节点类型可以包括字符、函数定义、函数调用、变量定义以及变量调用等等。
[0077]
具体实现中,通过广度优先遍历的形式来遍历抽象语法树,根据javascript标准中的estree规范,统计抽象语法树中每个层级的每个节点所属的类型。其中,estree是javascript社区中一种非官方的语法表达标准。estree是一种json风格的ast,现在流行的bable以及eslint的实现也是基于estree的。estree是一个相对简单的静态语法描述,除了在源代码分析、转换方面有很大作用外,也可以用于语言的学习。把estree作为一个规范的快速索引,如果遇到有疑惑的地方,通过这个索引快速定位到规范的官方说明,规范里面包含语法的静态和动态描述。
[0078]
可选的,服务器确定出抽象语法树中各个层级中每个节点所属的节点类型后,根据每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量。
[0079]
具体实现中,所述根据所述每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量,包括:获取多个预设节点类型;根据所述多个预设节点类型生成初始特征向量,所述初始特征向量的维度等于所述多个预设节点类型的数量,所述初始特征向量的每个元素位置与一个预设节点类型对应;根据每个层级中每个节点所属的节点类型,确定相应层级的多个节点中属于各个预设节点类型的节点数量;将属于任一预设节点类型的节点数量作为一个元素值写入所述初始特征向量中所述任一预设节点类型对应的元素位置处,得到所述任一层级对应的特征向量。
[0080]
上述多个预设节点类型可以是从estree提供的节点类型中选择并整理出来的,例如,从estree提供的节点类型中选择并整理出来的9个节点类型作为多个预设节点类型。这多个预设节点类型可以是在一段代码中出现频率较高的、使用较为频繁节点类型。可选的,多个预设节点类型可以包括字符literal、变量定义variabledefinition、变量调用variablecalled、函数定义functiondefinition、赋值表达式assignmentexpression、函数调用functioncalled、下标subscripting、循环forloops、条件conditions中任意一种或多种。
[0081]
获取到多个预设节点类型之后,进一步的服务器根据所述多个预设节点类型生成初始特征向量,该初始特征向量可以是维度等于多个预设节点类型的数量的行向量,初始特征向量中每个元素位置与一个预设节点类型对应的,初始特征向量中每个元素位置处的元素值可以为空,或者可以为其他初始值,比如为0。
[0082]
举例来说,假设获取到的多个预设节点类型的数量为9,分别为字符、变量定义、变量调用、函数定义、赋值表达式、函数调用、下标、循环、条件,根据多个预设节点类型生成的初始特征向量可以如图4a所示,假设初始特征向量中每个元素位置处的元素值为空的,特征向量中每个元素位置由左向后的顺序与上述多个预设类型一一对应,比如第一个元素位置处与预设节点类型字符对应、第二个元素位置处与预设节点类型变量定义对应,以此类推得到如图4a所示的初始特征向量。应当理解的,上述举例只是列举了一种元素位置与预设类型的对应关系,在实际应用中,第一个元素位置可以与除字符外的其他预设类型中任意一个对应,同理的,其他元素位置也可以与多个预设类型中未被对应过的预设类型进行对应,本发明实施例中不限定具体的元素位置与预设类型的对应关系。
[0083]
进一步的,服务器根据每个层级中每个节点所属的节点类型,确定相应层级的多个节点中属于各个预设节点类型的节点数量,比如服务器确定出图3的层级a中,3a部分中存在节点类型为下标subscripting的一个节点,301部分中存在节点类型为函数定义
functiondefinition的一个节点,3b部分中存在节点类型为变量调用variablecalled的三个节点,302部分中存在节点类型为函数调用functioncalled的一个节点。对于多个预设节点类型中除上述几个节点类型的其他节点类型,层级a中不包括属于其他节点类型的节点。
[0084]
因此,层级a包括的多个节点中属于各个预设节点类型的节点数量分别为:字符literal—0、变量定义variabledefinition—0、变量调用variablecalled—3、函数定义functiondefinition—1、赋值表达式assignmentexpression—0、函数调用functioncalled—0、下标subscripting—1、循环forloops—0、条件conditions—0。
[0085]
再如,服务器确定出图3包括的层级b中,3c部分存在节点类型为变量调用variablecalled的一个节点,304部分存在节点类型为函数调用functioncalled的一个节点,303部分存在节点类型为字符literal的一个节点。因此,层级b包括的多个节点中属于各个预设节点类型的节点数量分别为:字符literal—1、变量定义variabledefinition—0、变量调用variablecalled—1、函数定义functiondefinition—0、赋值表达式assignmentexpression—0、函数调用functioncalled—1、下标subscripting—0、循环forloops—0、条件conditions—0。
[0086]
将层级a中属于各个预设节点类型的节点数量填入到图4a所示的初始特征向量的对应位置处,得到层级a对应的特征向量,表示为[0 0 3 1 0 1 1 0 0];以及,将层级b中属于各个预设节点类型的节点数量填入到图4a所示的初始特征向量的对应位置处,得到层级b对应的特征向量,表示为[1 0 1 0 0 1 0 0 0]。
[0087]
由前述可知,将层级a对应的特征向量和层级b对应的特征向量按照预设顺序进行组合,便可得到第一应用程序对应的第一特征矩阵。其中,预设顺序可以是层级由大到小的顺序,也可以是层级由小到大的顺序。将层级a对应的特征向量和层级b对应的特征向量按照层级由小到大的顺序进行组合,得到第一特征矩阵,可以表示为:[1 0 1 0 0 1 0 0 0 0 0 3 1 0 1 1 0 0]。
[0088]
在一个实施例中,服务器可以基于上述确定第一特征矩阵的方法确定第二应用程序对应的第二特征矩阵,第二应用程序的数量可以为至少一个,为了提高相似度检测时的效率,服务器可以在获取到第一应用程序之前,就确定出各个第二应用程序对应的第二特征矩阵,并存储在数据库中;当需要对第一应用程序进行相似度检测时,直接从数据库中获取多个第二应用程序对应的第二特征矩阵。
[0089]
步骤s202、对第一特征矩阵与第二特征矩阵进行相似度运算,得到第一特征矩阵与第二特征矩阵之间的相似度。
[0090]
在一个实施例中,服务器可以基于第一特征矩阵与第二特征矩阵之间的余弦角度来确定第一特征矩阵与第二特征矩阵之间的相似度。具体实现中,将所述第一特征矩阵和所述第二特征矩阵输入至余弦相似度计算规则中进行运算,得到所述第一特征矩阵与所述第二特征矩阵之间的夹角;基于所述第一特征矩阵与所述第二特征矩阵之间的夹角确定所述第一特征矩阵和所述第二特征矩阵之间的相似度;其中,所述第一特征矩阵与所述第二特征矩阵之间的夹角越小,所述第一特征矩阵和所述第二特征矩阵之间的相似度越大;所述第一特征矩阵与所述第二特征矩阵之间的夹角越大,所述第一特征矩阵和所述第二特征矩阵之间的相似度越小。
[0091]
其中,将所述第一特征矩阵和所述第二特征矩阵输入至余弦相似度计算规则中进
行运算,得到所述第一特征矩阵与所述第二特征矩阵之间的夹角可以通过如下公式(1)表示:
[0092][0093]
其中,similarity表示相似度,cos表示余弦函数,a表示第一特征矩阵,b表示第二特征矩阵,i表示第i列,n表示第一特征矩阵的列数,也表示第二特征矩阵的列数。
[0094]
基于公式(1)得到的第一特征矩阵与第二特征矩阵之间的夹角确定第一特征矩阵和第二特征矩阵之间的相似度,若夹角越大,证明其方向差异越大,相似度越低;反之,若夹角越小,证明其方向差异越小,相似度越高。
[0095]
可选的,基于第一特征矩阵与第二特征矩阵之间的夹角确定第一特征矩阵和第二特征矩阵之间的相似度,可以包括:预先设置夹角与相似度之间的对应关系,比如角度a对应相似度a,角度每增加b,相似度降低b;或者,角度a对应相似度a,角度c对应相似度c;根据夹角和相似度之间的对应关系,以及第一特征矩阵与第二特征矩阵之间的夹角确定第一特征矩阵和第二特征矩阵之间的相似度。
[0096]
步骤s203、基于第一特征矩阵与第二特征矩阵之间的相似度,输出第一应用程序与第二应用程序之间的相似度。
[0097]
在一个实施例中,根据步骤s201和步骤s202得到第一特征矩阵和第二特征矩阵之间的相似度之后,进一步地根据第一特征矩阵和第二特征矩阵之间的相似度确定第一应用程序和第二应用程序之间的相似度。
[0098]
可选的,基于第一特征矩阵和第二特征矩阵之间的相似度,输出第一应用程序与第二应用程序之间的相似度,包括:根据第一特征矩阵和第二特征矩阵之间的相似度,确定第一应用程序与第二应用程序之间的相似度;将第一应用程序与第二应用程序之间的相似度发送给终端,以使终端展示第一应用程序与第二应用程序之间的相似度。
[0099]
作为一种可选的实施方式,所述根据第一特征矩阵和第二特征矩阵之间的相似度,确定第一应用程序与第二应用程序之间的相似度,可包括:将第一特征矩阵和第二特征矩阵之间的相似度,作为第一应用程序和第二应用程序之间的相似度。
[0100]
作为另一种可选的实施方式,所述根据第一特征矩阵和第二特征矩阵之间的相似度,确定第一应用程序与第二应用程序之间的相似度,还可以包括:确定第一特征矩阵所表示的关键结构信息在第一应用程序的代码数据中所占的权重,以及第二特征矩阵所表示的关键结构信息在第二应用程序的代码数据中所占的权重;基于第一特征矩阵、第二特征矩阵以及各自的权重进行运算,得到第一应用程序与第二应用程序之间的相似度。
[0101]
在一个实施例中,服务器确定出第一应用程序的第一特征矩阵后,可以存储在数据库中,以便于后续将第一应用程序与其他应用程序进行相似度对比。基于上述,图2实施例所示的数据处理方法的流程可如图4b所示,主要可包括代码数据转换成抽象语法树、遍历抽象语法树以生成第一特征矩阵、将第一特征矩阵存入到数据库中;然后从数据库中获取第二应用程序的第二特征矩阵;基于第一特征矩阵与第二特征矩阵进行相似度检测,最后输出检测结果。
[0102]
在一个实施例中,所述第一应用程序包括运行在第一客户端中的子程序,所述第
二应用程序包括运行在第二客户端中的子程序;所述第一客户端和所述第二客户端是相同的客户端;或者,所述第一客户端和所述第二客户端是不相同的客户端。
[0103]
在实践中,以第一应用程序和第二应用程序均为小程序为例进行测试,针对小程序这种代码量较大的程序,本发明具有较强的抗混淆能力,通过在小程序的代码中执行替换变量、更改运算符、修改代码语序等操作几乎不会对相似度检测结果造成太大干扰。
[0104]
通过部署在现网的数据统计,任何一次全量的代码相似度检测均能控制在35秒左右如下表1所示。
[0105]
表1
[0106][0107]
本发明实施例中,服务器根据第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度。其中,第一特征矩阵是基于第一应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息。也就是说,比较第一特征矩阵和第二特征矩阵之间的相似度,相当于比较第一应用程序的代码数据中关键结构信息,与第二应用程序的代码数据中关键结构信息,如果两者的关键结构信息相似度较高,则表明两者的代码数据相似度较高,也就表明两个应用程序之间的相似度较高,反之亦然。
[0108]
在上述确定第一应用程序和第二应用程序之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例提取代码数据中的关键结构信息,并没有一一对比所有代码数据,节省了运算时间,可提高相似度检测的效率。
[0109]
基于上述的数据处理方法,本发明实施例提供了一种数据显示方法。参见图5,为本发明实施例提供的一种数据显示方法的流程示意图。图5所示的数据显示方法可由终端执行,具体可由终端的处理器执行。图5所示的数据显示方法可包括如下步骤:
[0110]
步骤s501、接收服务器发送的第一应用程序和第二应用程序之间的相似度。
[0111]
在一个实施例中,第一应用程序可以指运行在第一客户端中的子程序比如运行在即时通讯应用、社交应用、购物应用或支付应用中的小程序,第二应用程序可以指运行在第二客户端中的子程序,第一客户端和第二客户端可以是相同的,也可以是不同的。
[0112]
在一个实施例中,所述第一应用程序和第二应用程序之间的相似度可以是服务器在接收到终端发送的相似度检测请求后,基于第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度确定的。
[0113]
可选的,相似度检测请求可以是终端检测到相似度检测操作后生成的,例如终端向审核用户展示一个相似度检测界面如图6a所示,相似度检测界面中可包括第一应用程序的标识601以及至少一个第二应用程序的标识602,以及相似度检测控件603,可以表现为“开始检测”,当审核用户触发了相似度检测控件603后,则终端检测到相似度检测操作,接着生成相似度检测请求并将相似度检测请求发送给服务器。
[0114]
服务器接收到终端发送的相似度检测请求之后,基于第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度确定第一应用程序和第二应用程序进行相似度检测。
[0115]
在一个实施例中,第一特征矩阵是根据第一应用程序对应的代码数据确定的,具体实现中,服务器可以将第一应用程序对应的代码数据通过编译器转换成抽象语法树;然后通过广度优先遍历的形式遍历这个抽象语法树,并根据javascript标准中的estree规范,确定抽象语法树中每个层级中每个节点所属的节点类型。进而,获取多个预设节点类型,通过统计每个层级中属于每个预设节点类型的节点数量,确定相应层级对应的特征向量;最后将各个层级对应的特征向量按照一定顺序进行组合,便可得到第一应用程序对应的第一特征矩阵。同理的,采用上述相同方法可以得到第二应用程序对应的第二特征矩阵。
[0116]
在一个实施例中,服务器获取到第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之后,可以通过第一特征矩阵与第二特征矩阵之间的夹角确定第一特征矩阵和第二特征矩阵之间的相似度;进而,根据第一特特征矩阵和第二特征矩阵之间的相似度确定第一应用程序和第二应用程序之间的相似度。
[0117]
现有技术中对两个应用程序之间进行相似度检测的方式可以包括基于代码指纹检测,代码指纹一般为关于代码数据的统计信息,如代码行数、条件个数、循环次数以及变量个数等等。如果两份代码数据的代码指纹相似度很高,那么就认为这两份代码数据的相似度很高,从而确定两份代码数据对应的应用程序的相似度很高。但是这种方法由于忽略了代码数据的结构信息且检测维度单一,如果对第一应用程序的代码数据进行了混淆操作,比如修改代码的顺序、删改操作符等等,对检测结果影响较大。或者,当两份不相似的代码数据所提取特征计数趋近的情况下,可能导致相似度检测的结果是两个不相似的代码数据对应的应用程序相似度较高的情况。
[0118]
另外,在基于抽象语法树进行相似度比较时,可以遍历整个抽象语法树以确定两份代码数据的相似度,但是这种操作导致时间复杂度较高,运行速度及哦啊满,消耗更多的服务器资源,无法适用于将一份代码数据和数万份代码数据逐一比对的场景。
[0119]
与上述两种相似度检测方法相比,本发明实施例中服务器基于两个应用程序对应的特征矩阵进行相似度检测,由于考虑了代码数据中关键结构信息,实现了在保证节省运行时间的情况下,提高相似度检测的准确性。
[0120]
得到第一应用程序和第二应用程序之间的相似度后,服务器可以将第一应用程序和第二应用程序之间的相似度返回给终端,以使得终端向审核用户展示第一应用程序和第二应用程序之间的相似度。
[0121]
步骤s502、显示相似度检测结果界面,并在相似度检测结果界面显示第一应用程序和所述第二应用程序之间的相似度。
[0122]
在一个实施例中,终端接收到服务器发送的第一应用程序和第二应用程序的相似度之后,可以在相似度检测结果界面中显示第一应用程序和第二应用程序之间的相似度。具体实现中,相似度检测结果界面可以包括应用程序标识列表项以及相似度列表项,所述在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度,包括:在所述应用标识列表项的第一位置处显示所述第二应用程序的应用程序标识;以及,在所述相似度列表项中所述第一位置对应的位置处显示所述第二应用程序与所述第一应用程序之间的相似度。
[0123]
也就是说,第一应用程序和第二应用程序之间的相似度在相似度检测结果界面中是以列表的形式显示的。例如,参见图6b,为本发明实施例提供的一种在相似度检测结果界面中显示相似度的示意图,600表示相似度检测结果界面,601表示应用程序标识列表项,表现为appid,602表示相似度列表项,表示为代码相似度,终端将第二应用程序的应用程序标识显示在601的第一位置601a处,在相似度列表项602中与第一位置601a对应的位置602a处,显示第一应用程序与第二应用程序之间的相似度。
[0124]
可选的,如果第二应用程序的数量为多个,则可以按照每个第二应用程序与第一应用程序之间的相似度由大到小,或者由小到大的顺序在相似度检测结果界面中显示第一应用程序与各个第二应用程序之间的相似度。例如,假设第二应用程序的数量为两个,参见图6c,为本发明实施例提供的另一种在相似度检测结果界面中显示相似度的示意图。可见,两个第二应用程序的应用程序标识分别显示在应用程序标识列表项的第一位置601a和第二位置603a处,两个第二应用程序每个第二应用程序与第一应用程序之间的相似度分别显示在相似度列表项中与第一位置对应的位置61a处,以及与第二位置对应的位置62a处。
[0125]
在一个实施例中,相似度检测结果界面中还可以包括程序启动列表项,第二应用程序对应的程序启动码显示在程序启动码列表项中与第一位置对应的位置处;当所述程序启动码被扫描时,在扫描所述程序启动码终端中运行所述第二应用程序,以供使用所述终端的用户通过所述第二应用程序的运行界面和所述第一应用程序的运行界面审核所述第一应用程序和所述第二应用程序之间的相似度。其中,程序启动码可以是二维码、条形码或者其他唯一标识第二应用程序的标识码。
[0126]
作为一种可选的实施方式,所述程序启动码是当程序启动码列表中与第一位置对应的位置处显示的触发控件被触发时显示在程序启动码列表项中与第一位置对应的位置处的。例如,假设在图6b中6a表相似度检测结果界面中的程序启动码列表项,在6a中与第一位置对应的位置处显示有触发控件6b,可以表现为“预览”;当6b被触发时,显示第二应用程序对应的程序启动码,如图6d中661所示。
[0127]
可选的,当所述程序启动码被扫描时,在扫描所述程序启动码终端中运行第二应用程序之前,还可以输出是否运行以及授权的提示信息,接收到用户对所述提示信息的确认操作后,开始运行第二应用程序并显示第二应用程序的运行界面。例如,假设用户甲使用
终端扫描了图6d中661,则可在用户甲的终端中输出提示信息,比如“xx应用的运行需要授权登录,是否确定运行”;用户甲可以在终端中输入针对该提示信息的确认操作,比如该提示信息还包括确认按钮和取消按钮,当用户甲点击了确认按钮时,表示用户甲针对上述提示信息输入了确认操作。此时,用户甲的终端可显示第二应用程序的运行界面如图6e中663所示。
[0128]
在一个实施例中,用户甲基于第二应用程序的运行界面和第一应用程序的运行界面如图6e中660所示,比较两个应用程序之间的相似度。可选的,相似度检测结果界面中还可以包括相似度确定是否准确的审核列表项如图6b中6c所示和评价列表项如图6b中6d所示。审核列表项中与第一位置对应的位置处可显示有准确度设置控件,准确度设置控件处于开启状态时,表示服务器确定的第二应用程序与第一应用程序之间的相似度准确;准确度设置控件处于关闭状态时,表示服务器确定的第二应用程序与第一应用程序之间的相似度不准确。
[0129]
进一步的,如果用户甲根据两个应用程序运行界面的比较后,确定相似度检测结果界面中显示的第一应用程序与第二应用程序之间的相似度准确,则可以将审核列表项中准确度设置控件设置为开启状态。另外,用户甲还可以在评价列表项中输入对相似度检测结果的评价内容,比如检测相当准确、以及检测很有帮助等内容。
[0130]
在一个实施例中,所述相似度检测结构界面中还包括补充与第一应用程序相似的应用程序的操作控件;当所述操作控件被触发时,显示添加窗口,所述添加窗口包括应用程序标识输入区域和确定控件;当所述应用程序标识输入区域存在目标应用程序标识且所述确定控件被触发时,在所述相似度检测结果界面显示所述目标应用程序标识所指示的应用程序与所述第一应用程序之间的相似度。
[0131]
例如,假设在图6b所示的相似度检测结果界面601中11表示补充与所述第一应用程序相似的应用程序的操作控件,表现为“添加遗漏的相似小程序”,当用户甲点击了操作控件11后,显示添加窗口,如图6f中12所示;添加窗口12中包括应用程序标识输入区域22,以及确认控件33;当22中输入了目标应用程序标识,且确认控件33被点击后,目标应用程序标识所指示的应用程序,假设为目标应用程序,与第一应用程序之间的相似度显示在相似度检测结果界面中。具体如何在相似度检测结果界面显示第一应用程序与目标应用程序之间的相似度可参见上述描述的在相似度检测结果界面中显示第一应用程序与第二应用程序之间的相似度的实施方式,在此不再赘述。
[0132]
本发明实施例中,服务器可以根据第一应用程序的第一特征矩阵和第二应用程序的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度,第一特征矩阵是基于第一应用程序对应的代码数据得到的,可以用于反映第一应用程序的代码数据中关键的结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,可以用于反映第二应用程序的的代码数据中关键的结构信息。如果两个应用程序的代码数据中关键结构信息比较相似,则连个应用程序之间的相似度较大。因此,基于关键结构信息确定两个应用程序之间的相似度,可以保证较高的相似度检测的准确性,对代码数据的混淆操作不会对检测结果产生影响;另外,与现有技术中将任意一份代码数据与其他多份代码数据逐一比对相比,其检测效率可以控制在一个极高的水平。
[0133]
另外,终端可以以列表的形式在相似度检测结果界面中显示第一应用程序和第二
应用程序之间的相似度,便于直观地了解两个应用程序之间的相似度。
[0134]
基于上述的数据处理方法实施例,本发明实施例提供了一种数据处理装置。参见图7,为本发明实施例提供的一种数据处理装置的结构示意图。图7所述的数据处理装置可运行如下单元:
[0135]
获取单元701,用于获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;
[0136]
处理单元702,用于对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;
[0137]
输出单元703,用于基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
[0138]
在一个实施例中,所述获取单元701在获取第一应用程序对应的第一特征矩阵时,执行如下步骤:
[0139]
获取所述第一应用程序对应的代码数据;将所述第一应用程序对应的代码数据编译为抽象语法树,所述抽象语法树以树状形式表示所述代码数据的语法结构,所述抽象语法树包括多个层级,每个层级包括多个节点;遍历所述抽象语法树确定所述多个层级中每个层级的多个节点中每个节点所属的节点类型;根据所述每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量;将所述每个层级对应的特征向量按照预设顺序进行组合,得到所述第一应用程序对应的第一特征矩阵。
[0140]
在一个实施例中,所述获取单元701在根据所述每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量时,执行如下步骤:
[0141]
获取多个预设节点类型;根据所述多个预设节点类型生成初始特征向量,所述初始特征向量的维度等于所述多个预设节点类型的数量,所述初始特征向量的每个元素位置与一个预设节点类型对应;根据每个层级中每个节点所属的节点类型,确定相应层级的多个节点中属于各个预设节点类型的节点数量;将属于任一预设节点类型的节点数量作为一个元素值写入所述初始特征向量中与所述任一预设节点类型对应的元素位置处,得到每个层级对应的特征向量。
[0142]
在一个实施例中,所述处理单元702在对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵和所述第二特征矩阵之间的相似度时,执行如下步骤:
[0143]
将所述第一特征矩阵和所述第二特征矩阵输入至余弦相似度计算规则中进行运算,得到所述第一特征矩阵与所述第二特征矩阵之间的夹角;基于所述第一特征矩阵与所述第二特征矩阵之间的夹角确定所述第一特征矩阵和所述第二特征矩阵之间的相似度;其中,所述第一特征矩阵与所述第二特征矩阵之间的夹角越小,所述第一特征矩阵和所述第二特征矩阵之间的相似度越大;所述第一特征矩阵与所述第二特征矩阵之间的夹角越大,所述第一特征矩阵和所述第二特征矩阵之间的相似度越小。
[0144]
在一个实施例中,所述第一应用程序包括运行在第一客户端中的子程序,所述第二应用程序包括运行在第二客户端中的子程序;所述第一客户端和所述第二客户端是相同的客户端;或者,所述第一客户端和所述第二客户端是不相同的客户端。
[0145]
根据本发明的一个实施例,图2所示的数据处理方法所涉及各个步骤可以是由图7所示的数据处理装置中的各个单元来执行的。例如,图2所述的步骤s201可由图7所示的数据处理装置中的获取单元701来执行,步骤s202可由图7所示的数据处理装置中的处理单元902来执行,步骤s203可由图7所示的数据处理装置中的输出单元903来执行。
[0146]
根据本发明的另一个实施例,图7所示的数据处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0147]
根据本发明的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的数据处理装置,以及来实现本发明实施例数据处理方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
[0148]
本发明实施例中本发明实施例中,服务器根据第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度。其中,第一特征矩阵是基于第一应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息。也就是说,比较第一特征矩阵和第二特征矩阵之间的相似度,相当于比较第一应用程序的代码数据中关键结构信息,与第二应用程序的代码数据中关键结构信息,如果两者的关键结构信息相似度较高,则表明两者的代码数据相似度较高,也就表明两个应用程序之间的相似度较高,反之亦然。
[0149]
在上述确定第一应用程序和第二应用程序之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例提取代码数据中的关键结构信息,并没有一一对比所有代码数据,节省了运算时间,可提高相似度检测的效率。
[0150]
基于上述的数据显示方法的实施例,本发明实施例提供了一种数据显示装置。参见图8,为本发明实施例提供的一种数据显示装置的结构示意图。图8所示的数据显示装置可运行如下单元:
[0151]
获取单元801,用于获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;
[0152]
显示单元802,用于显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
[0153]
其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述
第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
[0154]
在一个实施例中,所述相似度检测结果界面包括应用程序标识列表项以及相似度列表项,所述显示单元802在在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度时,执行如下步骤:
[0155]
在所述应用标识列表项的第一位置处显示所述第二应用程序的应用程序标识;以及,在所述相似度列表项中与所述第一位置对应的位置处显示所述第二应用程序与所述第一应用程序之间的相似度。
[0156]
在一个实施例中,所述相似度检测结果界面还包括程序启动码列表项,所述第二应用程序对应的程序启动码显示在所述程序启动码列表项中与所述第一位置对应的位置处;当所述程序启动码被扫描时,在扫描所述程序启动码的终端中运行所述第二应用程序,以供使用所述终端的用户通过所述第二应用程序的运行界面和所述第一应用程序的运行界面审核所述第一应用程序和所述第二应用程序之间的相似度。
[0157]
在一个实施例中,所述相似度检测结果界面包括补充与所述第一应用程序相似的应用程序的操作控件;所述显示单元802,还用于当所述操作控件被触发时,显示添加窗口,所述添加窗口包括应用程序标识输入区域和确定控件;当所述应用程序标识输入区域存在目标应用程序标识且所述确定控件被触发时,在所述相似度检测结果界面显示所述目标应用程序标识所指示的应用程序与所述第一应用程序之间的相似度。
[0158]
在一个实施例中,所述第一应用程序包括运行在第一客户端中的子程序,所述第二应用程序包括运行在第二客户端中的子程序;所述第一客户端和所述第二客户端是相同的客户端;或者,所述第一客户端和所述第二客户端是不相同的客户端。
[0159]
根据本发明的一个实施例,图5所示的数据显示方法所涉及各个步骤可以是由图8所示的数据显示装置中的各个单元来执行的。例如,图5所述的步骤s501可由图8所示的数据显示装置中的获取单元801来执行,步骤s502可由图8所示的数据显示装置中的显示单元802来执行。
[0160]
根据本发明的另一个实施例,图8所示的数据显示装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于数据显示装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0161]
根据本发明的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图5所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的数据显示装置,以及来实现本发明实施例数据显示方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
[0162]
本发明实施例中,服务器可以根据第一应用程序的第一特征矩阵和第二应用程序的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度,第一特征矩阵是基于第一应用程序对应的代码数据得到的,可以用于反映第一应用程序的代码数据中关键的结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,可以用于反映第二应用程序的的代码数据中关键的结构信息。如果两个应用程序的代码数据中关键结构信息比较相似,则连个应用程序之间的相似度较大。因此,基于关键结构信息确定两个应用程序之间的相似度,可以保证较高的相似度检测的准确性,对代码数据的混淆操作不会对检测结果产生影响;另外,与现有技术中将任意一份代码数据与其他多份代码数据逐一比对相比,其检测效率可以控制在一个极高的水平。
[0163]
另外,终端可以以列表的形式在相似度检测结果界面中显示第一应用程序和第二应用程序之间的相似度,便于直观地了解两个应用程序之间的相似度。
[0164]
基于上述数据处理方法以及数据处理装置的实施例,本发明实施例提供了一种服务器。参见图9,为本发明实施例提供的一种服务器的结构示意图。图9所述的服务器至少可包括处理器901、输入接口902、输出接口903以及计算机存储介质904。其中,处理器901、输入接口902、输出接口903以及计算机存储介质904可通过总线或其他方式连接。
[0165]
计算机存储介质904可以存储在服务器的存储器中,所述计算机存储介质601用于存储计算机程序,所述计算机程序包括程序指令,所述处理器901用于执行所述计算机存储介质904存储的程序指令。处理器901(或称cpu(central processing unit,中央处理器))是服务器的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行:
[0166]
获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
[0167]
本发明实施例中,服务器根据第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度。其中,第一特征矩阵是基于第一应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息。也就是说,比较第一特征矩阵和第二特征矩阵之间的相似度,相当于比较第一应用程序的代码数据中关键结构信息,与第二应用程序的代码数据中关键结构信息,如果两者的关键结构信息相似度较高,则表明两者的代码数据相似度较高,也就表明两个应用程序之间的相似度较高,反之亦然。
[0168]
在上述确定第一应用程序和第二应用程序之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例提取代码数据中的关键结构信息,并没有一一对比所有代码数据,节省了运算时间,可提高相似度检测的效率。
[0169]
基于上述的数据显示方法以及数据显示装置的实施例,本发明实施例提供了一种
终端。参见图10,为本发明实施例提供的一种终端的结构示意图。图10所示的终端至少可包括处理器1001、输入接口1002、输出接口1003以及计算机存储介质1004。其中,处理器1001、输入接口1002、输出接口1003以及计算机存储介质1004可通过总线或其他方式连接。
[0170]
计算机存储介质1004可以存储在终端的存储器中,所述计算机存储介质601用于存储计算机程序,所述计算机程序包括程序指令,所述处理器1001用于执行所述计算机存储介质1004存储的程序指令。处理器1001(或称cpu(central processing unit,中央处理器))是终端的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行:
[0171]
获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;
[0172]
其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
[0173]
本发明实施例中,服务器可以根据第一应用程序的第一特征矩阵和第二应用程序的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度,第一特征矩阵是基于第一应用程序对应的代码数据得到的,可以用于反映第一应用程序的代码数据中关键的结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,可以用于反映第二应用程序的的代码数据中关键的结构信息。如果两个应用程序的代码数据中关键结构信息比较相似,则连个应用程序之间的相似度较大。因此,基于关键结构信息确定两个应用程序之间的相似度,可以保证较高的相似度检测的准确性,对代码数据的混淆操作不会对检测结果产生影响;另外,与现有技术中将任意一份代码数据与其他多份代码数据逐一比对相比,其检测效率可以控制在一个极高的水平。
[0174]
另外,终端可以以列表的形式在相似度检测结果界面中显示第一应用程序和第二应用程序之间的相似度,便于直观地了解两个应用程序之间的相似度。
[0175]
本发明实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是终端或者服务器中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端或者服务器中的内置存储介质,当然也可以包括终端或者服务器支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端或者服务器的操作系统。并且,在该存储空间中还存放了适于被处理器901或者1001加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
[0176]
在一个实施例中,所述计算机存储介质可由处理器901加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2所示的数据处理方法的相应步骤。具体实现中,计算机存储介质中的一条或多条指令由处理器901加载并执行如下步骤:
[0177]
获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩
阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
[0178]
在一个实施例中,所述处理器901在获取第一应用程序对应的第一特征矩阵时,执行如下步骤:获取所述第一应用程序对应的代码数据;将所述第一应用程序对应的代码数据编译为抽象语法树,所述抽象语法树以树状形式表示所述代码数据的语法结构,所述抽象语法树包括多个层级,每个层级包括多个节点;遍历所述抽象语法树确定所述多个层级中每个层级的多个节点中每个节点所属的节点类型;根据所述每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量;将所述每个层级对应的特征向量按照预设顺序进行组合,得到所述第一应用程序对应的第一特征矩阵。
[0179]
在一个实施例中,所述处理器901在根据所述每个层级的多个节点中每个节点所属的节点类型,生成相应层级对应的特征向量时,执行如下步骤:获取多个预设节点类型;根据所述多个预设节点类型生成初始特征向量,所述初始特征向量的维度等于所述多个预设节点类型的数量,所述初始特征向量的每个元素位置与一个预设节点类型对应;根据每个层级中每个节点所属的节点类型,确定相应层级的多个节点中属于各个预设节点类型的节点数量;将属于任一预设节点类型的节点数量作为一个元素值写入所述初始特征向量中与所述任一预设节点类型对应的元素位置处,得到每个层级对应的特征向量。
[0180]
在一个实施例中,所述处理器901在对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵和所述第二特征矩阵之间的相似度时,执行如下步骤:
[0181]
将所述第一特征矩阵和所述第二特征矩阵输入至余弦相似度计算规则中进行运算,得到所述第一特征矩阵与所述第二特征矩阵之间的夹角;基于所述第一特征矩阵与所述第二特征矩阵之间的夹角确定所述第一特征矩阵和所述第二特征矩阵之间的相似度;其中,所述第一特征矩阵与所述第二特征矩阵之间的夹角越小,所述第一特征矩阵和所述第二特征矩阵之间的相似度越大;所述第一特征矩阵与所述第二特征矩阵之间的夹角越大,所述第一特征矩阵和所述第二特征矩阵之间的相似度越小。
[0182]
在一个实施例中,所述第一应用程序包括运行在第一客户端中的子程序,所述第二应用程序包括运行在第二客户端中的子程序;所述第一客户端和所述第二客户端是相同的客户端;或者,所述第一客户端和所述第二客户端是不相同的客户端。
[0183]
本发明实施例中,服务器根据第一应用程序对应的第一特征矩阵和第二应用程序对应的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度。其中,第一特征矩阵是基于第一应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,第二特征矩阵用于反映第二应用程序对应的代码数据中关键结构信息。也就是说,比较第一特征矩阵和第二特征矩阵之间的相似度,相当于比较第一应用程序的代码数据中关键结构信息,与第二应用程序的代码数据中关键结构信息,如果两者的关键结构信息相似度较高,则表明两者的代码数据相似度较高,也就表明两个应用程序之
间的相似度较高,反之亦然。
[0184]
在上述确定第一应用程序和第二应用程序之间的相似度时,考虑了两者之间的代码数据中的结构信息,可以克服由于代码混淆而导致相似度检测误判的情况,从而可提高相似度检测的准确性;另外,本发明实施例提取代码数据中的关键结构信息,并没有一一对比所有代码数据,节省了运算时间,可提高相似度检测的效率。
[0185]
在其他实施例中,所述计算机存储介质可由处理器1001加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图5所示的数据处理方法的相应步骤。具体实现中,计算机存储介质中的一条或多条指令由处理器1001加载并执行如下步骤:
[0186]
获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
[0187]
在一个实施例中,所述相似度检测结果界面包括应用程序标识列表项以及相似度列表项,所述处理器1001在相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度时,执行如下步骤:在所述应用标识列表项的第一位置处显示所述第二应用程序的应用程序标识;以及,在所述相似度列表项中与所述第一位置对应的位置处显示所述第二应用程序与所述第一应用程序之间的相似度。
[0188]
在一个实施例中,所述相似度检测结果界面还包括程序启动码列表项,所述第二应用程序对应的程序启动码显示在所述程序启动码列表项中与所述第一位置对应的位置处;当所述程序启动码被扫描时,在扫描所述程序启动码的终端中运行所述第二应用程序,以供使用所述终端的用户通过所述第二应用程序的运行界面和所述第一应用程序的运行界面审核所述第一应用程序和所述第二应用程序之间的相似度。
[0189]
在一个实施例中,所述相似度检测结果界面包括补充与所述第一应用程序相似的应用程序的操作控件;所述处理器1001还用于:当所述操作控件被触发时,显示添加窗口,所述添加窗口包括应用程序标识输入区域和确定控件;当所述应用程序标识输入区域存在目标应用程序标识且所述确定控件被触发时,在所述相似度检测结果界面显示所述目标应用程序标识所指示的应用程序与所述第一应用程序之间的相似度。
[0190]
在一个实施例中,所述第一应用程序包括运行在第一客户端中的子程序,所述第二应用程序包括运行在第二客户端中的子程序;所述第一客户端和所述第二客户端是相同的客户端;或者,所述第一客户端和所述第二客户端是不相同的客户端。
[0191]
本发明实施例中,服务器可以根据第一应用程序的第一特征矩阵和第二应用程序的第二特征矩阵之间的相似度,确定第一应用程序和第二应用程序之间的相似度,第一特征矩阵是基于第一应用程序对应的代码数据得到的,可以用于反映第一应用程序的代码数据中关键的结构信息,第二特征矩阵是基于第二应用程序对应的代码数据得到的,可以用于反映第二应用程序的的代码数据中关键的结构信息。如果两个应用程序的代码数据中关
键结构信息比较相似,则连个应用程序之间的相似度较大。因此,基于关键结构信息确定两个应用程序之间的相似度,可以保证较高的相似度检测的准确性,对代码数据的混淆操作不会对检测结果产生影响;另外,与现有技术中将任意一份代码数据与其他多份代码数据逐一比对相比,其检测效率可以控制在一个极高的水平。
[0192]
另外,终端可以以列表的形式在相似度检测结果界面中显示第一应用程序和第二应用程序之间的相似度,便于直观地了解两个应用程序之间的相似度。
[0193]
根据本技术的一个方面,本发明实施例还提供了一种计算机产品或计算机程序,该计算机产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。可选的,处理器901从计算机可读存储介质中读取该计算机指令,处理器901执行该计算机指令,使得服务器执行图2所示的数据处理方法,具体地:
[0194]
获取第一应用程序对应的第一特征矩阵,以及第二应用程序对应的第二特征矩阵,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的;对所述第一特征矩阵与所述第二特征矩阵进行相似度运算,得到所述第一特征矩阵与所述第二特征矩阵之间的相似度;基于所述第一特征矩阵与所述第二特征矩阵之间的相似度,输出所述第一应用程序与所述第二应用程序之间的相似度。
[0195]
可选的,处理器1001从计算机可读存储介质中读取该计算机指令,处理器1001执行该计算机指令,使得服务器执行图5所示的数据显示方法,具体地:
[0196]
获取第一应用程序和第二应用程序之间的相似度,所述第一应用程序和所述第二应用程序之间的相似度是服务器基于所述第一应用程序对应的第一特征矩阵和所述第二应用程序对应的第二特征矩阵进行相似度运算确定的;显示相似度检测结果界面,并在所述相似度检测结果界面显示所述第一应用程序和所述第二应用程序之间的相似度;其中,所述第一特征矩阵是基于所述第一应用程序对应的代码数据得到的,所述第二应用程序对应的第二特征矩阵是基于所述第二应用程序对应的代码数据得到的,所述第一特征矩阵用于反映所述第一应用程序对应的代码数据中关键结构信息,所述第二特征矩阵用于反映所述第二应用程序对应的代码数据中关键结构信息。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献