首页 / 专利库 / 软件 / 控制流图 / 一种基于函数层编码的App克隆检测方法及系统

一种基于函数层编码的App克隆检测方法及系统

阅读:449发布:2020-05-13

专利汇可以提供一种基于函数层编码的App克隆检测方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于函数层编码的App克隆检测方法及系统,属于网络空间安全领域。本发明采用基于图嵌入编码 算法 进行CFG函数结构编码,函数特征编码过程是一个解耦和的过程,不仅考虑了代码 块 的静态特征,同时也考虑了CFG中代码块之间的跳转结构,每个App中函数能够独立编码,并不依赖于之前的函数特征 数据库 。避免了传统 控制流图 比对过程中复杂的图匹配算法,以及配置文件检测不准确的问题。通过两次聚类删除App中第三方库函数,能利用现有的App样本进行第三方库函数过滤,留下核心的函数特征进行克隆检测的比较,相比较之前,能及时增加第三方库函数的名单,更准确地提取了App中核心函数,有效提高App检测的准确率。,下面是一种基于函数层编码的App克隆检测方法及系统专利的具体信息内容。

1.一种基于函数层编码的App克隆检测方法,其特征在于,该方法包括以下步骤:
S1.提取待检App和样本库App字节码反编译的smali文件中的函数控制流图
S2.提取待检App和样本库App的每个函数控制流图的每个代码的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
S3.基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量
S4.根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
S5.将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
2.如权利要求1所述的方法,其特征在于,所述函数控制流图中,每个节点代表函数中的一个代码块,每条边表示代码块之间的调用关系,有向边表示的是控制流图的跳转结构。
3.如权利要求1所述的方法,其特征在于,步骤S2中提取到的代码块属性特征其中,si、pi、ai、oi、li分别表示第i个代码块在控制流图中的序列编号、第i个代码块的操作码数目、第i个代码块调用API接口的数目、第i个代码块在控制流图中的出度、第i个代码块在控制流图的循环结构的数目。
4.如权利要求1所述的方法,其特征在于,步骤S3包括以下子步骤:
S31.利用下列公式对App中函数特征进行编码:
其中,wi是函数第i个代码块的权重,向量 表示第i个代码块提取到的属性特征, 表示函数的编码特征向量,|v|表示该函数控制流图的代码块数目;
S32.使用图嵌入图匹配算法,学习节点间的逻辑跳转信息以及代码块的字节信息,求解各函数的编码特征向量对应的平均权重w;
S33.根据各函数的编码特征向量对应的平均权重w和函数各代码块的权重,计算函数的编码特征向量。
5.如权利要求4所述的方法,其特征在于,让损失函数
1≤i≤|v|
为0,求解得到权重向量
其中,O1表示一级跳转结构的损失函数,O2表示全局跳转结构的损失函数,e(i,j)∈E表示边集合E中边(i,j), 表示第i个代码块的属性特征,N(i,j)表示节点i和节点j的共同邻居节点数目,di表示节点i的度。
6.如权利要求4所述的方法,其特征在于,函数的编码特征向量
计算公式如下:
其中,e(i,k)表示以i为起点且k为终点的边,Ej表示第j个函数控制流图的边集合,w表示函数的编码特征向量对应的平均权重。
7.如权利要求1所述的方法,其特征在于,步骤S4中,对提取到的样本库App的各函数编码特征向量进行两次聚类,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
8.如权利要求1所述的方法,其特征在于,步骤S4包括以下子步骤:
S41.删除每个App中重复的函数;
S42.让带有相同函数的编码特征向量对应的平均权重w的对应函数编码特征向量聚集在同一类中,选取聚类函数数目在前第一预设值的函数编码特征向量聚类;
S43.将同一聚类中函数编码特征向量完全对应相同的函数,重新放置到同一类别中,并将所有聚类中函数数目在前第二预设值的函数作为第三方库函数;
S44.删除待检App和样本库App中包含这些第三方库函数的函数编码特征向量,剩下的就是App核心功能的函数编码特征向量。
9.一种基于函数层编码的App克隆检测系统,其特征在于,该系统包括以下:
函数控制流图提取模块,用于提取待检App和样本库App字节码反编译的smali文件中的函数控制流图;
函数控制流图的空间特征提取模块,用于提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
编码模块,用于基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量;
过滤模块,用于根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
克隆检测模块,用于将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的基于函数层编码的App克隆检测方法。

说明书全文

一种基于函数层编码的App克隆检测方法及系统

技术领域

[0001] 本发明属于网络空间安全领域,更具体地,涉及一种基于函数层编码的App克隆检测方法及系统。

背景技术

[0002] 为了更高效地和准确地进行App克隆检测,需要对非结构化App二进制代码进行数据精细度特征提取和高维大量数据处理。如今图编码方法用于高维图空间的特征提取,并且在当前App的特征提取方案研究中也非常热,例如,App代码的二进制语义分析,App的字符串统计分析,以及token分析,hash研究等静态的特征方法。
[0003] 然而,现有App克隆检测方案存在四个问题:第一,对未知App中恶意代码缺乏有效的感知机制,App克隆方法隐蔽性变深,以及在App里面插入各种恶意的广告代码等;第二,对大规模App所有的特征提炼缺乏高效方法,当前App第三方下载市场已经达到百万级别,有厂商每天都产生都达到百万级的App,从数量上讲已经非常庞大,而App从功能上讲,又是有限的;第三,对App中第三方库函数的过滤方法存在缺陷,提取App中的关键函数特征是一件非常重要的事情,当前App中对第三方库的使用会严重影响关键信息函数特征的提取,进而影响App克隆检测的准确性等问题;第四,对App克隆检测精细度特征数据库的更新方法缺乏高效快速的方法,当前的App克隆检测特征数据库的更新方法过于冗杂,需要对原始的数据重新进行学习训练来更新App特征数据,重新计算浪费了大量的时间和精,已经无法适应于大量快速增长的App。

发明内容

[0004] 针对现有技术的缺陷和改进需求,本发明提供了一种基于函数层编码的App克隆检测方法及系统,其目的在于解决现有技术中存在的缺陷,使得检测者能够根据准确的App精细度特征快速检测出相似的App,从而找出恶意剽窃或者非法抄袭的恶意App,同时在时间复杂度和空间复杂度上也优于现有技术。
[0005] 为实现上述目的,按照本发明的第一方面,提供了一种基于函数层编码的App克隆检测方法,该方法包括以下步骤:
[0006] S1.提取待检App和样本库App字节码反编译的smali文件中的函数控制流图
[0007] S2.提取待检App和样本库App的每个函数控制流图的每个代码的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
[0008] S3.基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量
[0009] S4.根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
[0010] S5.将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
[0011] 具体地,所述函数控制流图中,每个节点代表函数中的一个代码块,每条边表示代码块之间的调用关系,有向边表示的是控制流图的跳转结构。
[0012] 具体地,步骤S2中提取到的代码块属性特征 其中,si、pi、ai、oi、li分别表示第i个代码块在控制流图中的序列编号、第i个代码块的操作码数目、第i个代码块调用API接口的数目、第i个代码块在控制流图中的出度、第i个代码块在控制流图的循环结构的数目。
[0013] 具体地,步骤S3包括以下子步骤:
[0014] S31.利用下列公式对App中函数特征进行编码:
[0015]
[0016] 其中,wi是函数第i个代码块的权重,向量 表示第i个代码块提取到的属性特征,表示函数的编码特征向量,|v|表示该函数控制流图的代码块数目;
[0017] S32.使用图嵌入图匹配算法,学习节点间的逻辑跳转信息以及代码块的字节信息,求解各函数的编码特征向量对应的平均权重w;
[0018] S33.根据各函数的编码特征向量对应的平均权重w和函数各代码块的权重,计算函数的编码特征向量。
[0019] 具体地,让损失函数1≤i≤|v|为0,求解得到权重向量
[0020] 其中,O1表示一级跳转结构的损失函数,O2表示全局跳转结构的损失函数,e(i,j)∈E表示边集合E中边(i,j), 表示第i个代码块的属性特征,N(i,j)表示节点i和节点j的共同邻居节点数目,di表示节点i的度。
[0021] 具体地,函数的编码特征向量 计算公式如下:
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028] 其中,e(i,k)表示以i为起点且k为终点的边,Ej表示第j个函数控制流图的边集合,w表示函数的编码特征向量对应的平均权重。
[0029] 具体地,步骤S4中,对提取到的样本库App的各函数编码特征向量进行两次聚类,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
[0030] 具体地,步骤S4包括以下子步骤:
[0031] S41.删除每个App中重复的函数;
[0032] S42.让带有相同函数的编码特征向量对应的平均权重w的对应函数编码特征向量聚集在同一类中,选取聚类函数数目在前第一预设值的函数编码特征向量聚类;
[0033] S43.将同一聚类中函数编码特征向量完全对应相同的函数,重新放置到同一类别中,并将所有聚类中函数数目在前第二预设值的函数作为第三方库函数;
[0034] S44.删除待检App和样本库App中包含这些第三方库函数的函数编码特征向量,剩下的就是App核心功能的函数编码特征向量。
[0035] 为实现上述目的,按照本发明的第二方面,提供了一种基于函数层编码的App克隆检测系统,该系统包括以下:
[0036] 函数控制流图提取模块,用于提取待检App和样本库App字节码反编译的smali文件中的函数控制流图;
[0037] 函数控制流图的空间特征提取模块,用于提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
[0038] 编码模块,用于基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量;
[0039] 过滤模块,用于根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
[0040] 克隆检测模块,用于将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
[0041] 为实现上述目的,按照本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的基于函数层编码的App克隆检测方法。
[0042] 总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
[0043] (1)本发明采用基于图嵌入编码算法进行CFG函数结构编码,函数特征编码过程是一个解耦和的过程,不仅考虑了代码块之间的静态特征,同时也考虑了CFG中代码块之间的跳转结构,每个App中函数能够独立编码,并不依赖于之前的函数特征数据库。基于图嵌入编码方案,对于每个新增的App能够单独计算它的函数特征,并且每个函数特征具有单调性。能够将高维的几何空间投影到低维的数据空间,避免了传统控制流图比对过程中造成的复杂的图匹配算法,以及配置文件检测不准确的问题。
[0044] (2)本发明提出两次聚类过滤第三方库函数,两次聚类删除第三方库函数方法,能够利用现有的App样本进行第三方库函数过滤,留下核心的函数特征进行克隆检测的比较,相比较之前的方案中,通过之前统计的第三方库函数黑白名单进行过滤的方法,更加准确和实用,能够及时增加第三方库函数的名单,更加准确地提取了App中核心函数,有效提高App检测的准确率。附图说明
[0045] 图1为本发明实施例提供的一种基于函数层编码的App克隆检测方法流程图
[0046] 图2为本发明实施例提供的ROC曲线图;
[0047] 图3为本发明实施例提供的基于图嵌入编码算法编码时间曲线图。

具体实施方式

[0048] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0049] 如图1所示,本发明提供一种基于函数层编码的App克隆检测方法,该方法包括以下步骤:
[0050] 步骤S1.提取待检App和样本库App字节码反编译的smali文件中的函数控制流图。
[0051] 通过Androguard开源项目,提取App字节码,将其存为dex文件。通过Androguard反编译开源项目,将dex文件反编译为包含App中所有函数的smali文件。一个smali文件中包含了很多函数,每个函数中包含了一系列的操作码以及该操作码对应的寄存器和处理数据。提取待检App和样本库中App字节码反编译的smali文件中的函数控制流图CFG。CFG中的每个节点代表函数中的一个代码块,每个代码块包含了一系列的操作码和数据;CFG中的边表示代码块之间的调用关系,有向边表示的是控制流图的跳转结构,CFG中跳转结构开始于一个代码块,结束于另一个代码块。
[0052] 具体地,每个执行函数由多个代码块通过跳转连接组成,首先针对每个执行函数提取原始CFG,然后提取每个CFG图形节点的特征,即代码块特征,这些特征值表示了该代码块的静态统计特征以及该代码在CFG中调用跳转结构特征。
[0053] 带有代码块属性的控制流图CFG,既能无损地获取App每个函数的信息,也避免了App逆向之后源码混淆、字符匹配以及配置文件变更等不准确的信息,从源头提高了App克隆检测的准确率。
[0054] 步骤S2.提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征。
[0055] 由于每个代码块包含m行操作码及对应操作的寄存器、对象、字段以及调用的API接口等,将这个代码块中的全部信息提取到一个固定5个属性值的数字向量中进行存储。对每个函数控制流图的每个代码块提取相同长度的特征,这5个属性值同时保留了函数的逻辑跳转结构以及代码块的代码特征。
[0056] 提取到的代码块属性特征 其中,si、pi、ai、oi、li分别表示第i个代码块在控制流图中的序列编号、第i个代码块的操作码数目、第i个代码块调用API接口的数目、第i个代码块在控制流图中的出度、第i个代码块在控制流图的循环结构的数目,每个代码块有唯一的权重wi。
[0057] 步骤S3.基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量。
[0058] 基于图形嵌入的编码算法,将CFG中的所有节点特征编码为一个单调的低维数字特征。每个App通过组成它的一系列函数特征表示,利用下列公式对App中函数特征进行编码:
[0059]
[0060] 其中,wi是函数第i个代码块的权重,向量 表示第i个代码块提取到的属性特征,表示函数的编码特征向量,|v|表示该函数控制流图的代码块数目。
[0061] 函数的编码特征向量 前三个表示代码块的统计特征,后两个表示CFG拓扑结构的跳转结构。该向量的计算公式如下:
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068] 其中,e(i,k)表示以i为起点且k为终点的边,Ej表示第j个函数控制流图的边集合,w表示函数的编码特征向量对应的平均权重。
[0069] 最主要的是求解权重w,使用图嵌入图匹配算法学习节点间的逻辑跳转信息以及代码块的字节信息来求该权重。在控制流图,当两个节点之间有直接的跳转关系时,说明这两个节点的链接概率就更大,根据这个目标,能够得到下面的损失函数:
[0070]
[0071] 1≤i≤|v|
[0072] 其中,O1表示一级跳转结构的损失函数,O2表示全局跳转结构的损失函数,e(i,j)∈E表示边集合E中边(i,j), 表示第i个代码块的属性特征,N(i,j)表示节点i和节点j的共同邻居节点数目,di表示节点i的度。
[0073] 1)一级跳转结构
[0074] 一级跳转结构L描述CFG中任意2个节点之间的跳转情况。
[0075]
[0076] 如果节点(代码块)i和k之间有一个有向边,则e(i,k)=1;否则e(i,k)=0。一级跳转结构对CFG编码非常重要,表示了在函数代码中CFG结构代码块的一级继承和调用情况。
[0077] 2)全局跳转结构
[0078] 全局跳转结构N描述了节点与CFG中的其他节点之间的一级跳转情况。
[0079]
[0080] Nu={e(u,1),e(u,2),…,e(u,|v|)}
[0081] 其中,Nu表示节点u和CFG图中其他节点的一级跳转,节点的总数为|v|。比较Nu和Nv之间的相似度,获得节点u与节点v之间的全局跳转N(u,v)。直观来说,全局跳转结构表示如果2个节点连接了更多相同的节点,则它们之间的联系会更加紧密,这些设想在很多领域都被合理证明。
[0082] 当上式 为0时,得到权重向量 根据权重向量 最终获得函数的编码特征向量 将该向量存储到App特征数据库中。
[0083] 通过上述的优化学习模型,将带有节点信息的控制流图空间属性结构编码为一个低维的数字向量特征,每个低维数字特征能够对App函数的原本属性进行保真,并且该对应函数编码特征向量能够单调对App中的函数进行特征表示。
[0084] 步骤S4.根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
[0085] 优选地,对提取到的样本库App的各函数编码特征向量进行两次聚类,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
[0086] 判断App是否克隆,需要满足以下条件:
[0087] 1)不同的开发源有相同的App功能函数。通过查看Android应用的签名密钥和App中所有函数的特征来判断该App是否为克隆。如果这些不同签名的App具有相似或相同的核心函数特征,则说明是克隆App;
[0088] 2)相似的函数不能包括第三方库函数。App的代码中一般包含了许多相同的第三方库函数,这些库函数不能作为判断克隆的依据,克隆检测方案需要过滤这些第三方库函数。
[0089] 大量的重复函数需要重复比对,降低了效率和正确率。在过滤之前,先删除每个App中重复的函数。
[0090] App中所有函数的编码特征获得App的矩阵表示,即 其中,表示整个函数的编码特征向量,也是矩阵A中第j列向量,m表示App中函数的个数。对于不同大小的App,所包含函数的个数m不同,由于App中会有重复函数,重复函数的字符串特征和CFG拓扑结构相同,重复的函数编码表现为矩阵A中有相同的列。
[0091] 由于App克隆检测需要比较所有的代码块特征,如果不同App中有大量相同的第三方库函数,一方面会增加克隆检测时间,另外一方面会干扰克隆检测的准确率,相同的第三方库函数不能作为克隆的检测依据。为了提高效率和准确度,本发明主要通过两次聚类来过滤第三方库函数。首先根据每个对应函数编码特征向量对应的平均权重参数w进行粗粒度过滤,接着在第一步的基础上,进行严格比对聚类。
[0092] 第一次聚类
[0093] 首先统计所有函数相同w的出现频率,让带有相同的w的对应函数编码特征向量聚集在同一类中,第三方库函数会被聚集到一个远远大于其它类别的类中。具体地,统计所有不同w中的数目,选取聚类函数数目在前60%的函数编码特征向量聚类,作为下一步需要比较的对象。
[0094] 第二次聚类
[0095] 将同一聚类中函数编码特征向量完全对应相同的函数,重新放置到同一类别中。再将所有聚类中函数数目在前80%的函数作为第三方库函数。
[0096] 删除待检App和样本库App中包含这些第三方库函数的函数编码特征向量,剩下的就是App核心功能的函数编码特征向量。
[0097] 步骤S5.将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
[0098] 用余弦相似度计算2个函数特征之间的向量距离,通过该距离判断App是否克隆。任意两个函数编码特征向量 和 的相似度定义如下:
[0099]
[0100]
[0101] 其中,δ表示函数之间差异度阈值。如果2个函数相同,则
[0102] 由于函数特征是独立编码,不需要更新之前的App函数特征库,只需在数据库中增加新的App特征。
[0103] 为了表示App函数检测的正确率,用以下2个参数来评估实验的好坏,即TPR(true positive rate)和FPR(false positive rate)。从测试数据库随机选取一些检测样本序列q,有m个克隆函数,在样本函数数目L中,如果检测了F个函数,正确检测出来的函数有c个,认为这检测出来的c个函数是positive的,剩下的L-c,就是误报率。设置TPR为设置FPR为
[0104] ROC曲线的实验结果如图2所示,可以看到本发明提出的编码方式的正确率高于现有的函数克隆检测Centroid的方案,取App中函数差异阈值为0.01时候,根据ROC曲线可以看到检测的准确率可以达到97.6%。由于本发明提出的是单调的,而且对函数的信息编码得更完整,不仅获取了每个代码块的主要统计特征信息,还获取了每个CFG的结构特征,所以本发明提出的编码方式准确率很高。Centroid并不是严格单调的表示特征,相比较,本发明提出的编码方案更能正确地表示函数的特征。
[0105] 如图3所示,本发明提出的编码方式的编码时间随着函数的数目增加而增长。本发明提出的编码方式将APP中一个函数的CFG编码为一个特征,该编码方式是一种线性计算的编码,当函数个数有20 000个时,即使串行编码,该编码方式的编码时间仅仅需要1h。由于该编码方式的编码方式是解耦合的,因此利用并行的方式可以大大缩短编码时间。
[0106] 表1比较了当前几个比较好的App克隆检测方案FSquaDRA、Wukong、Centroid和本发明方法之间的效率。
[0107] 表1 App克隆检测效率
[0108]
[0109] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈