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

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

Info

Publication number
CN110598408B
CN110598408B CN201910783724.0A CN201910783724A CN110598408B CN 110598408 B CN110598408 B CN 110598408B CN 201910783724 A CN201910783724 A CN 201910783724A CN 110598408 B CN110598408 B CN 110598408B
Authority
CN
China
Prior art keywords
function
app
coding
control flow
flow graph
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.)
Active
Application number
CN201910783724.0A
Other languages
English (en)
Other versions
CN110598408A (zh
Inventor
付才
杨佳
韩兰胜
刘铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201910783724.0A priority Critical patent/CN110598408B/zh
Publication of CN110598408A publication Critical patent/CN110598408A/zh
Application granted granted Critical
Publication of CN110598408B publication Critical patent/CN110598408B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种基于函数层编码的App克隆检测方法及系统
技术领域
本发明属于网络空间安全领域,更具体地,涉及一种基于函数层编码的App克隆检测方法及系统。
背景技术
为了更高效地和准确地进行App克隆检测,需要对非结构化App二进制代码进行数据精细度特征提取和高维大量数据处理。如今图编码方法用于高维图空间的特征提取,并且在当前App的特征提取方案研究中也非常热门,例如,App代码的二进制语义分析,App的字符串统计分析,以及token分析,hash研究等静态的特征方法。
然而,现有App克隆检测方案存在四个问题:第一,对未知App中恶意代码缺乏有效的感知机制,App克隆方法隐蔽性变深,以及在App里面插入各种恶意的广告代码等;第二,对大规模App所有的特征提炼缺乏高效方法,当前App第三方下载市场已经达到百万级别,有厂商每天都产生都达到百万级的App,从数量上讲已经非常庞大,而App从功能上讲,又是有限的;第三,对App中第三方库函数的过滤方法存在缺陷,提取App中的关键函数特征是一件非常重要的事情,当前App中对第三方库的使用会严重影响关键信息函数特征的提取,进而影响App克隆检测的准确性等问题;第四,对App克隆检测精细度特征数据库的更新方法缺乏高效快速的方法,当前的App克隆检测特征数据库的更新方法过于冗杂,需要对原始的数据重新进行学习训练来更新App特征数据,重新计算浪费了大量的时间和精力,已经无法适应于大量快速增长的App。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于函数层编码的App克隆检测方法及系统,其目的在于解决现有技术中存在的缺陷,使得检测者能够根据准确的App精细度特征快速检测出相似的App,从而找出恶意剽窃或者非法抄袭的恶意App,同时在时间复杂度和空间复杂度上也优于现有技术。
为实现上述目的,按照本发明的第一方面,提供了一种基于函数层编码的App克隆检测方法,该方法包括以下步骤:
S1.提取待检App和样本库App字节码反编译的smali文件中的函数控制流图;
S2.提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
S3.基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量;
S4.根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
S5.将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
具体地,所述函数控制流图中,每个节点代表函数中的一个代码块,每条边表示代码块之间的调用关系,有向边表示的是控制流图的跳转结构。
具体地,步骤S2中提取到的代码块属性特征
Figure BDA0002177355080000021
其中,si、pi、ai、oi、li分别表示第i个代码块在控制流图中的序列编号、第i个代码块的操作码数目、第i个代码块调用API接口的数目、第i个代码块在控制流图中的出度、第i个代码块在控制流图的循环结构的数目。
具体地,步骤S3包括以下子步骤:
S31.利用下列公式对App中函数特征进行编码:
Figure BDA0002177355080000031
其中,wi是函数第i个代码块的权重,向量
Figure BDA0002177355080000032
表示第i个代码块提取到的属性特征,
Figure BDA0002177355080000033
表示函数的编码特征向量,|v|表示该函数控制流图的代码块数目;
S32.使用图嵌入图匹配算法,学习节点间的逻辑跳转信息以及代码块的字节信息,求解各函数的编码特征向量对应的平均权重w;
S33.根据各函数的编码特征向量对应的平均权重w和函数各代码块的权重,计算函数的编码特征向量。
具体地,让损失函数
Figure BDA0002177355080000034
Figure BDA0002177355080000035
1≤i≤|v|为0,求解得到权重向量
Figure BDA0002177355080000036
其中,O1表示一级跳转结构的损失函数,O2表示全局跳转结构的损失函数,e(i,j)∈E表示边集合E中边(i,j),
Figure BDA0002177355080000037
表示第i个代码块的属性特征,N(i,j)表示节点i和节点j的共同邻居节点数目,di表示节点i的度。
具体地,函数的编码特征向量
Figure BDA0002177355080000038
计算公式如下:
Figure BDA0002177355080000039
Figure BDA00021773550800000310
Figure BDA00021773550800000311
Figure BDA0002177355080000041
Figure BDA0002177355080000042
Figure BDA0002177355080000043
其中,e(i,k)表示以i为起点且k为终点的边,Ej表示第j个函数控制流图的边集合,w表示函数的编码特征向量对应的平均权重。
具体地,步骤S4中,对提取到的样本库App的各函数编码特征向量进行两次聚类,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
具体地,步骤S4包括以下子步骤:
S41.删除每个App中重复的函数;
S42.让带有相同函数的编码特征向量对应的平均权重w的对应函数编码特征向量聚集在同一类中,选取聚类函数数目在前第一预设值的函数编码特征向量聚类;
S43.将同一聚类中函数编码特征向量完全对应相同的函数,重新放置到同一类别中,并将所有聚类中函数数目在前第二预设值的函数作为第三方库函数;
S44.删除待检App和样本库App中包含这些第三方库函数的函数编码特征向量,剩下的就是App核心功能的函数编码特征向量。
为实现上述目的,按照本发明的第二方面,提供了一种基于函数层编码的App克隆检测系统,该系统包括以下:
函数控制流图提取模块,用于提取待检App和样本库App字节码反编译的smali文件中的函数控制流图;
函数控制流图的空间特征提取模块,用于提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征;
编码模块,用于基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量;
过滤模块,用于根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量;
克隆检测模块,用于将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
为实现上述目的,按照本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的基于函数层编码的App克隆检测方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明采用基于图嵌入编码算法进行CFG函数结构编码,函数特征编码过程是一个解耦和的过程,不仅考虑了代码块之间的静态特征,同时也考虑了CFG中代码块之间的跳转结构,每个App中函数能够独立编码,并不依赖于之前的函数特征数据库。基于图嵌入编码方案,对于每个新增的App能够单独计算它的函数特征,并且每个函数特征具有单调性。能够将高维的几何空间投影到低维的数据空间,避免了传统控制流图比对过程中造成的复杂的图匹配算法,以及配置文件检测不准确的问题。
(2)本发明提出两次聚类过滤第三方库函数,两次聚类删除第三方库函数方法,能够利用现有的App样本进行第三方库函数过滤,留下核心的函数特征进行克隆检测的比较,相比较之前的方案中,通过之前统计的第三方库函数黑白名单进行过滤的方法,更加准确和实用,能够及时增加第三方库函数的名单,更加准确地提取了App中核心函数,有效提高App检测的准确率。
附图说明
图1为本发明实施例提供的一种基于函数层编码的App克隆检测方法流程图;
图2为本发明实施例提供的ROC曲线图;
图3为本发明实施例提供的基于图嵌入编码算法编码时间曲线图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供一种基于函数层编码的App克隆检测方法,该方法包括以下步骤:
步骤S1.提取待检App和样本库App字节码反编译的smali文件中的函数控制流图。
通过Androguard开源项目,提取App字节码,将其存为dex文件。通过Androguard反编译开源项目,将dex文件反编译为包含App中所有函数的smali文件。一个smali文件中包含了很多函数,每个函数中包含了一系列的操作码以及该操作码对应的寄存器和处理数据。提取待检App和样本库中App字节码反编译的smali文件中的函数控制流图CFG。CFG中的每个节点代表函数中的一个代码块,每个代码块包含了一系列的操作码和数据;CFG中的边表示代码块之间的调用关系,有向边表示的是控制流图的跳转结构,CFG中跳转结构开始于一个代码块,结束于另一个代码块。
具体地,每个执行函数由多个代码块通过跳转连接组成,首先针对每个执行函数提取原始CFG,然后提取每个CFG图形节点的特征,即代码块特征,这些特征值表示了该代码块的静态统计特征以及该代码在CFG中调用跳转结构特征。
带有代码块属性的控制流图CFG,既能无损地获取App每个函数的信息,也避免了App逆向之后源码混淆、字符匹配以及配置文件变更等不准确的信息,从源头提高了App克隆检测的准确率。
步骤S2.提取待检App和样本库App的每个函数控制流图的每个代码块的属性特征,根据代码块的属性特征和函数控制流图的拓扑结构,构成函数控制流图的空间特征。
由于每个代码块包含m行操作码及对应操作的寄存器、对象、字段以及调用的API接口等,将这个代码块中的全部信息提取到一个固定5个属性值的数字向量中进行存储。对每个函数控制流图的每个代码块提取相同长度的特征,这5个属性值同时保留了函数的逻辑跳转结构以及代码块的代码特征。
提取到的代码块属性特征
Figure BDA0002177355080000071
其中,si、pi、ai、oi、li分别表示第i个代码块在控制流图中的序列编号、第i个代码块的操作码数目、第i个代码块调用API接口的数目、第i个代码块在控制流图中的出度、第i个代码块在控制流图的循环结构的数目,每个代码块有唯一的权重wi
步骤S3.基于图嵌入编码算法,将提取到的函数控制流图的空间特征单调映射为函数的编码特征向量。
基于图形嵌入的编码算法,将CFG中的所有节点特征编码为一个单调的低维数字特征。每个App通过组成它的一系列函数特征表示,利用下列公式对App中函数特征进行编码:
Figure BDA0002177355080000081
其中,wi是函数第i个代码块的权重,向量
Figure BDA0002177355080000082
表示第i个代码块提取到的属性特征,
Figure BDA0002177355080000083
表示函数的编码特征向量,|v|表示该函数控制流图的代码块数目。
函数的编码特征向量
Figure BDA0002177355080000084
前三个表示代码块的统计特征,后两个表示CFG拓扑结构的跳转结构。该向量的计算公式如下:
Figure BDA0002177355080000085
Figure BDA0002177355080000086
Figure BDA0002177355080000087
Figure BDA0002177355080000088
Figure BDA0002177355080000089
Figure BDA00021773550800000810
其中,e(i,k)表示以i为起点且k为终点的边,Ej表示第j个函数控制流图的边集合,w表示函数的编码特征向量对应的平均权重。
最主要的是求解权重w,使用图嵌入图匹配算法学习节点间的逻辑跳转信息以及代码块的字节信息来求该权重。在控制流图,当两个节点之间有直接的跳转关系时,说明这两个节点的链接概率就更大,根据这个目标,能够得到下面的损失函数:
Figure BDA00021773550800000811
Figure BDA0002177355080000091
1≤i≤|v|
其中,O1表示一级跳转结构的损失函数,O2表示全局跳转结构的损失函数,e(i,j)∈E表示边集合E中边(i,j),
Figure BDA0002177355080000092
表示第i个代码块的属性特征,N(i,j)表示节点i和节点j的共同邻居节点数目,di表示节点i的度。
1)一级跳转结构
一级跳转结构L描述CFG中任意2个节点之间的跳转情况。
Figure BDA0002177355080000093
如果节点(代码块)i和k之间有一个有向边,则e(i,k)=1;否则e(i,k)=0。一级跳转结构对CFG编码非常重要,表示了在函数代码中CFG结构代码块的一级继承和调用情况。
2)全局跳转结构
全局跳转结构N描述了节点与CFG中的其他节点之间的一级跳转情况。
Figure BDA0002177355080000094
Nu={e(u,1),e(u,2),…,e(u,|v|)}
其中,Nu表示节点u和CFG图中其他节点的一级跳转,节点的总数为|v|。比较Nu和Nv之间的相似度,获得节点u与节点v之间的全局跳转N(u,v)。直观来说,全局跳转结构表示如果2个节点连接了更多相同的节点,则它们之间的联系会更加紧密,这些设想在很多领域都被合理证明。
当上式
Figure BDA0002177355080000095
为0时,得到权重向量
Figure BDA0002177355080000096
根据权重向量
Figure BDA0002177355080000097
最终获得函数的编码特征向量
Figure BDA0002177355080000098
将该向量存储到App特征数据库中。
通过上述的优化学习模型,将带有节点信息的控制流图空间属性结构编码为一个低维的数字向量特征,每个低维数字特征能够对App函数的原本属性进行保真,并且该对应函数编码特征向量能够单调对App中的函数进行特征表示。
步骤S4.根据提取到的样本库App的各函数的编码特征向量,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
优选地,对提取到的样本库App的各函数编码特征向量进行两次聚类,将App中的重复函数以及第三方库函数过滤删除,得到待检App和样本库App的核心函数编码特征向量。
判断App是否克隆,需要满足以下条件:
1)不同的开发源有相同的App功能函数。通过查看Android应用的签名密钥和App中所有函数的特征来判断该App是否为克隆。如果这些不同签名的App具有相似或相同的核心函数特征,则说明是克隆App;
2)相似的函数不能包括第三方库函数。App的代码中一般包含了许多相同的第三方库函数,这些库函数不能作为判断克隆的依据,克隆检测方案需要过滤这些第三方库函数。
大量的重复函数需要重复比对,降低了效率和正确率。在过滤之前,先删除每个App中重复的函数。
App中所有函数的编码特征获得App的矩阵表示,即
Figure BDA0002177355080000101
其中,
Figure BDA0002177355080000102
表示整个函数的编码特征向量,也是矩阵A中第j列向量,m表示App中函数的个数。对于不同大小的App,所包含函数的个数m不同,由于App中会有重复函数,重复函数的字符串特征和CFG拓扑结构相同,重复的函数编码表现为矩阵A中有相同的列。
由于App克隆检测需要比较所有的代码块特征,如果不同App中有大量相同的第三方库函数,一方面会增加克隆检测时间,另外一方面会干扰克隆检测的准确率,相同的第三方库函数不能作为克隆的检测依据。为了提高效率和准确度,本发明主要通过两次聚类来过滤第三方库函数。首先根据每个对应函数编码特征向量对应的平均权重参数w进行粗粒度过滤,接着在第一步的基础上,进行严格比对聚类。
第一次聚类
首先统计所有函数相同w的出现频率,让带有相同的w的对应函数编码特征向量聚集在同一类中,第三方库函数会被聚集到一个远远大于其它类别的类中。具体地,统计所有不同w中的数目,选取聚类函数数目在前60%的函数编码特征向量聚类,作为下一步需要比较的对象。
第二次聚类
将同一聚类中函数编码特征向量完全对应相同的函数,重新放置到同一类别中。再将所有聚类中函数数目在前80%的函数作为第三方库函数。
删除待检App和样本库App中包含这些第三方库函数的函数编码特征向量,剩下的就是App核心功能的函数编码特征向量。
步骤S5.将待检App的核心函数编码特征向量与样本库App的核心函数编码特征向量进行搜索比对,得到App克隆检测结果。
用余弦相似度计算2个函数特征之间的向量距离,通过该距离判断App是否克隆。任意两个函数编码特征向量
Figure BDA0002177355080000111
Figure BDA0002177355080000112
的相似度定义如下:
Figure BDA0002177355080000113
Figure BDA0002177355080000114
其中,δ表示函数之间差异度阈值。如果2个函数相同,则
Figure BDA0002177355080000115
由于函数特征是独立编码,不需要更新之前的App函数特征库,只需在数据库中增加新的App特征。
为了表示App函数检测的正确率,用以下2个参数来评估实验的好坏,即TPR(truepositive rate)和FPR(false positive rate)。从测试数据库随机选取一些检测样本序列q,有m个克隆函数,在样本函数数目L中,如果检测了F个函数,正确检测出来的函数有c个,认为这检测出来的c个函数是positive的,剩下的L-c,就是误报率。设置TPR为
Figure BDA0002177355080000121
设置FPR为
Figure BDA0002177355080000122
ROC曲线的实验结果如图2所示,可以看到本发明提出的编码方式的正确率高于现有的函数克隆检测Centroid的方案,取App中函数差异阈值为0.01时候,根据ROC曲线可以看到检测的准确率可以达到97.6%。由于本发明提出的是单调的,而且对函数的信息编码得更完整,不仅获取了每个代码块的主要统计特征信息,还获取了每个CFG的结构特征,所以本发明提出的编码方式准确率很高。Centroid并不是严格单调的表示特征,相比较,本发明提出的编码方案更能正确地表示函数的特征。
如图3所示,本发明提出的编码方式的编码时间随着函数的数目增加而增长。本发明提出的编码方式将APP中一个函数的CFG编码为一个特征,该编码方式是一种线性计算的编码,当函数个数有20 000个时,即使串行编码,该编码方式的编码时间仅仅需要1h。由于该编码方式的编码方式是解耦合的,因此利用并行的方式可以大大缩短编码时间。
表1比较了当前几个比较好的App克隆检测方案FSquaDRA、Wukong、Centroid和本发明方法之间的效率。
表1 App克隆检测效率
Figure BDA0002177355080000123
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910783724.0A CN110598408B (zh) 2019-08-23 2019-08-23 一种基于函数层编码的App克隆检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910783724.0A CN110598408B (zh) 2019-08-23 2019-08-23 一种基于函数层编码的App克隆检测方法及系统

Publications (2)

Publication Number Publication Date
CN110598408A CN110598408A (zh) 2019-12-20
CN110598408B true CN110598408B (zh) 2021-03-26

Family

ID=68855438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910783724.0A Active CN110598408B (zh) 2019-08-23 2019-08-23 一种基于函数层编码的App克隆检测方法及系统

Country Status (1)

Country Link
CN (1) CN110598408B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111562943B (zh) * 2020-04-29 2023-07-11 海南大学 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473346A (zh) * 2013-09-24 2013-12-25 北京大学 一种基于应用程序编程接口的安卓重打包应用检测方法
KR20150047241A (ko) * 2013-10-24 2015-05-04 한양대학교 산학협력단 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
CN107122659A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种快速定位Android应用软件中恶意代码或漏洞的方法
CN108108622A (zh) * 2017-12-13 2018-06-01 上海交通大学 基于深度卷积网络和控制流图的漏洞检测系统
CN108875317A (zh) * 2017-05-08 2018-11-23 中国移动通信有限公司研究院 软件克隆检测方法及装置、检测设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997256B1 (en) * 2014-03-31 2015-03-31 Terbium Labs LLC Systems and methods for detecting copied computer code using fingerprints
CN105868641A (zh) * 2016-04-01 2016-08-17 北京理工大学 基于虚函数表劫持的防御方法
CN107516040A (zh) * 2017-07-25 2017-12-26 中国人民解放军63928部队 一种基于数据控制流图的脆弱性特征分析和获取方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473346A (zh) * 2013-09-24 2013-12-25 北京大学 一种基于应用程序编程接口的安卓重打包应用检测方法
KR20150047241A (ko) * 2013-10-24 2015-05-04 한양대학교 산학협력단 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
CN107122659A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种快速定位Android应用软件中恶意代码或漏洞的方法
CN108875317A (zh) * 2017-05-08 2018-11-23 中国移动通信有限公司研究院 软件克隆检测方法及装置、检测设备及存储介质
CN108108622A (zh) * 2017-12-13 2018-06-01 上海交通大学 基于深度卷积网络和控制流图的漏洞检测系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Clone analysis and detection in android applications;Haofei Niu等;《2016 3rd International Conference on Systems and Informatics (ICSAI)》;20170109;第520-525页 *
基于代码克隆检测技术的Android应用重打包检测;王浩宇等;《中国科学》;20140131;第44卷(第1期);第142-157页 *

Also Published As

Publication number Publication date
CN110598408A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
CN109063055B (zh) 同源二进制文件检索方法和装置
CN111698247A (zh) 异常账号检测方法、装置、设备及存储介质
CN107633444A (zh) 基于信息熵与模糊c均值聚类的推荐系统噪声过滤方法
CN104036187A (zh) 计算机病毒类型确定方法及其系统
Felix et al. Rough sets-based machine learning using a binary discernibility matrix
CN111814148A (zh) 一种基于方法调用图的安卓恶意软件家族聚类方法
CN111046388B (zh) 识别应用中第三方sdk的方法、智能终端及储存介质
CN113221112A (zh) 基于弱相关集成策略的恶意行为识别方法、系统和介质
CN110598408B (zh) 一种基于函数层编码的App克隆检测方法及系统
Liu et al. Functions-based CFG embedding for malware homology analysis
CN115396212A (zh) 检测模型的训练方法、装置、计算机设备和存储介质
CN113868650B (zh) 基于代码异质中间图表示的漏洞检测方法与装置
CN114662096A (zh) 一种基于图核聚类的威胁狩猎方法
CN109492844B (zh) 业务策略的生成方法和装置
CN102082700B (zh) 一种网络入侵的检测方法
Madsen et al. Stochastic model checking of genetic circuits
CN111858275A (zh) 一种异常媒体行为的识别方法、装置、设备及存储介质
CN112347477A (zh) 家族变种恶意文件挖掘方法和装置
CN115659942A (zh) 合同模板的生成、装置及设备
CN114780103A (zh) 一种基于图匹配网络的语义类代码克隆检测方法
CN110083534B (zh) 一种基于约减最短路径胎记的软件抄袭检测方法
CN112764791A (zh) 一种增量更新的恶意软件检测方法及系统
CN106650444B (zh) 一种基于软件签名和安装时间的Android系统应用检测方法
CN110895567A (zh) 一种实体嵌入方法及装置
CN112559859B (zh) 资源推荐方法、装置、电子设备及机器可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant