一种同质化应用的检测方法和装置的制造方法_2

文档序号:9787668阅读:来源:国知局
程序在体验上有一定差异。而滥造应用开发者由于掌握了源代码,因此可以通过替换资源文件包、全量查找和替换源代码中的函数和类名,甚至插入一些空函数的方式来修改应用。但是,出于成本考虑,盗版应用开发者和滥造应用开发者均不会对源应用进行框架性改写,因此源代码的基本特征不会被改变。
[0064]基于此,在本发明实施例中,分别对源应用和目标应用进行代码反编译处理,获得源应用信息和目标应用信息;对所述源应用信息和目标应用信息进行解析处理,得到组件相似度、类布局相似度、代码控制流相似度和文本相似度;根据所述组件相似度、类布局相似度、代码控制流相似度和文本相似度确定出所述源应用和目标应用的相似度。
[0065]这里,所述目标应用即为待检测的同质化应用。
[0066]下面结合附图及具体实施例对本发明再作进一步详细的说明。
[0067]图1为本发明实施例同质化应用的检测方法的实现流程示意图,如图1所示,本发明实施例同质化应用的检测方法包括:
[0068]步骤Sll:分别对源应用和目标应用进行代码反编译处理,获得源应用信息和目标应用信息;
[0069]具体地,通过反向工程工具如APKTools分别对源应用和目标应用进行代码反编译处理,获得源应用信息和目标应用信息。
[0070]这里,所述源应用信息包括源配置文件和源程序包;相应地,所述目标应用信息包括目标配置文件和目标程序包。
[0071]需要说明的是,通过步骤Sll对应用(包括源应用和目标应用)进行代码反编译处理后,所获得的应用信息不仅可以包括配置文件和程序包,还可以包括资源文件包和动态链接库文件包。然而,由于基于对同质化应用影响因素的考虑,可以忽略所述应用信息中的资源文件包和动态链接库文件包这两个文件包;或者,可以将这两个文件包加以保存,作为后续人工检查的辅助手段。
[0072]步骤S12:对所述源应用信息和目标应用信息进行解析处理,得到组件相似度、类布局相似度、代码控制流相似度和文本相似度;
[0073]具体地,如图2所示,对所述源应用信息和目标应用信息进行解析处理,得到组件相似度、类布局相似度、代码控制流相似度和文本相似度包括:
[0074]步骤S121:对所述源配置文件和目标配置文件进行解析,得到组件相似度;
[0075]步骤S122:对所述源程序包和目标程序包进行解析,得到类布局相似度、代码控制流相似度和文本相似度。
[0076]其中,如图3所示,步骤S121所述对所述源配置文件和目标配置文件进行解析,得到组件相似度,包括:
[0077]步骤S1211:分别将所述源配置文件和目标配置文件转化为对应的二维数组;
[0078]步骤S1212:计算转换后的两个二维数组的相似度,作为组件相似度。
[0079]这里,对所述转换后的两个二维数组的相似度的计算可以采用余弦向量相似度的算法,也可以通过数量统计方式进行计算。
[0080]其中,如图4所示,步骤S122中所述对所述源程序包和目标程序包进行解析,得到类布局相似度,包括:
[0081]步骤S1221?S1223:分别解析所述源程序包和目标程序包,获得源应用的Java类布局树序列和目标应用的Java类布局树序列;计算确定所述源应用的Java类布局树序列和目标应用的Java类布局树序列中所有节点的路径信息;根据所述路径信息确定类布局相似度。
[0082]这里,所述根据所述路径信息确定类布局相似度的方法可以采用树路径相似度矩阵算法,也可以通过其他通用树结构相似度算法,如编辑距离算法来遍历所有节点的路径信息,以确定类布局相似度。
[0083]步骤S122中所述对所述源程序包和目标程序包进行解析,得到代码控制流相似度,包括:
[0084]步骤S1224?S1225:分别解析所述源程序包和目标程序包,建立源应用的控制流有向图和目标应用的控制流有向图;根据所述源应用的控制流有向图和目标应用的控制流有向图,确定代码控制流相似度。
[0085]步骤S122中所述对所述源程序包和目标程序包进行解析,得到文本相似度,包括:
[0086]步骤S1226?S1227:分别解析所述源程序包和目标程序包,建立源应用的所有关键字向量集合和目标应用的所有关键字向量集合;对所述源应用的所有关键字向量集合和目标应用的所有关键字向量集合进行比较处理,获得文本相似度。
[0087]这里,需要说明的是,在步骤S122中,步骤S1221?S1223、S1224?S1225和步骤S1226?S1227三个步骤组合的执行先后顺序不限。
[0088]步骤S13:根据所述组件相似度、类布局相似度、代码控制流相似度和文本相似度确定出所述源应用和目标应用的相似度。
[0089]具体地,通过对所述组件相似度、类布局相似度、代码控制流相似度和文本相似度进行加权平均计算,从而确定出所述源应用和目标应用的相似度。
[0090]需要说明的是,在实际应用中,通常类布局相似度和代码控制流相似度的权重可以略高。
[0091]如此,通过本发明实施例所述的同质化应用的检测方法,能够准确确定出源应用和目标应用之间的相似度,从而对盗版应用和滥造应用做到有效地检测。
[0092]为了帮助对本发明实施例的理解,下面依次对组件相似度、类布局相似度、代码控制流相似度和文本相似度加以具体说明。
[0093]第一、组件相似度
[0094]在Android系统中,应用程序执行的单元是系统预定义的各种组件。组件相似度检测可通过解析安装包中的配置文件内容来得到程序的各个组件声明和相关联的参数及资源信息,最终进行组件相似度比较。准确地讲,Android系统提供给开发者预先封装好的类作为应用程序中的基本组件,具体地,Android应用包括四大基本组件:活动(Activity)、服务(Service)、内容提供者(Content Provider)和广播接收者(BroadcastReceiver)。而在组件之间,Android系统提供了意图(Intent)作为内部信息传送方式。任何Android应用,都需要通过继承、调用和扩展以上四大基本组件来构造。
[0095]同时,Android系统要求开发者在一个配置文件(AndroidManifest.xml)中将自身所定义的组件以及组件间用于通信的Intent全部声明出来,并在所述配置文件中定义整个应用所需要的系统权限。
[0096]因此,通过解析反编译后的AndroidManifest.xml便可以知道,一个应用中有多少个自定义Activity、Service、Content Provider 和 Broadcast Receiver,同时也能知道,这四个基本组件之间相互响应了哪些Intent,从而得到一个应用的组件架构。
[0097]第二、类布局相似度
[0098]Android系统的代码开发是基于嵌入式编程(包括Linux和Java)的,因此,可以将Android程序的类布局相似度抽象成两种树型关系来表示:一种代表类和包的关系,简称为路径树;另一种代表类和类之间的继承和接口的实现,简称为继承树。
[0099]在Java语法中,每定义一个类,都需要指定这个类所在的包(Package),以及该Package下的各层目录。路径树表示的是这种包、目录路径和类的关系。树的根节点代表程序的根目录(即最顶层的包),分支节点代表程序子目录,叶子节点是具体的类。
[0100]通过反编译后的Smali代码,可以推导出软件的整体类布局树,然后通过统计路径树和继承树中每颗树的层级、各中间节点和叶子节点的关系、数量等比较得出类布局相似度比较相似度。
[0101]第三、代码控制流相似度
[0102]在Android系统中,一个应用包含的自定义函数少则数十个,多则上万个,这些函数之间有着错综复杂的调用关系,把函数的调用关系抽象出来,可以得到一个有向图;所述有向图中每个节点代表一个函数,有向边代表与之相连的两个节点(函数)之间存在调用关系。为了后续描述方便,可以将这样的有向图定义为代码控制流相似度。
[0103]第四、文本相似度
[0104]在Andro i d系统中,反编译后的Smal i代码本质依然是文本文档,在代码层面上引入文本相似度比较手段,针对源代码开发者自定义的函数进行相关性统计,在协助判定源应用和目标应用的相似度上,是相当有效的手段。
[0105]下面结合一应用实例对本发明实施例同质化应用的检测方法的具体实现流程加以详细描述。在所述应用实例中,假设Android系统应用平台接收到一款申报应用A,即目标应用A,而系统应用平台中已经存在一款应用B,即源应用B。
[0106]图5为本发明一应用实例同质化应用的检测方法的实现流程示意图,如图5所示,本发明一应用实例中同质化应用的检测方法包括:
[0107]步骤S21:对目标应用A进行代码反编译处理,获得目标应用信息;
[0108]具体地,采用反向工程工具APKToolsAPKTools反编译应用A,得到资源文件包(Resource_A.zip)、配置文件(AndroidManifest_A.xml)、程序包 /Smali 代码包(Smali_A.zip)和动态链接库文件(3rdDll_A.zip)。
[0109]这里,需要说明的是,由于基于对同质化应用影响因素的考虑,忽略Resource_
A.zip和3rdDll_A.zip,仅将Resource_A.zip和3rdDll_A.zip加以保存,作为后续人工检查的辅助手段,不作为本发明实施例中的分析依据。
[0110]步骤S22:对源应用B进行代码反编译处理,获得源应用信息;
[0111]具体地,采用反向工程工具APKToolsAPKTools反编译应用B,得到资源文件包(Resource_B.zip)、配置文件(AndroidMa
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1