CN103336890A - 一种快速计算软件相似度的方法 - Google Patents

一种快速计算软件相似度的方法 Download PDF

Info

Publication number
CN103336890A
CN103336890A CN2013102291223A CN201310229122A CN103336890A CN 103336890 A CN103336890 A CN 103336890A CN 2013102291223 A CN2013102291223 A CN 2013102291223A CN 201310229122 A CN201310229122 A CN 201310229122A CN 103336890 A CN103336890 A CN 103336890A
Authority
CN
China
Prior art keywords
software
data
characteristic
similarity
fingerprint
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.)
Pending
Application number
CN2013102291223A
Other languages
English (en)
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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN2013102291223A priority Critical patent/CN103336890A/zh
Publication of CN103336890A publication Critical patent/CN103336890A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种快速计算软件相似度的方法,基于模糊哈希算法,对于待计算的软件的特征数据,首先根据数据的长度进行预判决,然后根据数据的内容,利用一个素数对数据进行分割,并计算分片数据的哈希值,连接起来,生成数据的哈希指纹。最后进行指纹匹配判决并计算指纹相似度,从而得出软件相似结果。在设定的阈值范围里,通过进行数据预判决和指纹匹配判决以保证较高的效率。在指纹相似度计算方法上,优化的编辑距离的计算方法采用三个一维数组代替传统的二维数组,在实际应用中,大大地减少了计算所需的内存占用量,进而提高了相似度的计算速度。

Description

一种快速计算软件相似度的方法
技术领域
本发明涉及一种快速计算软件相似度的方法,属于计算机软件克隆或软件开发维护等技术领域。
背景技术
随着信息技术的飞速发展,出现了越来越多的计算机软件来满足人们的各类需求。但是,很多开发者通过反编译,修改资源文件或代码文件等手段对原软件进行拷贝或克隆,这严重侵害了软件作者的利益。在智能手机领域,越来越多的开发者为了节约开发成本,获取更大的利润,直接对原手机软件进行反编译,植入恶意代码或者插入广告,进行重打包并发布。这不仅侵害了作者的利益,植入恶意代码和插入的广告也对广大用户造成了不良的影响。因此,软件相似性检测显得尤为重要。对于待检测的两个应用软件,可以使用各种反编译工具进行反编译,提取软件特征指令并比较两个特征数据之间的相似性。然而由于提取的特征指令可能很长,如果直接计算长指令序列间的编辑距离或者最长公共子序列等将很难快速计算出相似性。
模糊哈希算法又叫基于内容分割的分片哈希算法(Context TriggeredPiecewise Hashing,CTPH),主要用于数据的相似性比较。通常,模糊哈希算法由以下部分组成:一个弱哈希算法,以及一个触发值,用于分片;一个强哈希算法,用于计算每片的哈希;一个压缩映射算法,将每片的哈希值映射为一个更短的值;一个相似度计算方法,用于计算两个哈希指纹的相似程度。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种快速计算软件相似度的方法,基于模糊哈希算法,对于待计算的软件的特征数据,首先根据数据的长度进行预判决,然后根据数据的内容,利用一个素数对数据进行分割,并计算分片数据的哈希值,连接起来,生成数据的哈希指纹。最后进行指纹匹配判决并计算指纹相似度,从而得出软件相似结果。在设定的阈值范围里,通过进行数据预判决和指纹匹配判决以保证较高的效率。在指纹相似度计算方法上,优化的编辑距离的计算方法采用三个一维数组代替传统的二维数组,在实际应用中,大大地减少了计算所需的内存占用量,进而提高了相似度的计算速度。
技术方案:一种快速计算软件相似度的方法,包括如下步骤:
步骤1、对待比较的两个软件进行特征数据的提取,根据特征数据的长度进行预判决,若满足判决成功,进行下一步;否则,返回数据不匹配并结束;
步骤2、根据判决成功的两个软件的特征数据生成一个素数,作为模糊哈希过程中用于分片的触发值,选取素数是为了增加随机性和抵御可能的攻击,然后利用该素数计算特征数据的模糊哈希指纹;
步骤3、对特征数据的模糊哈希指纹进行判决,确定是否匹配;若匹配,进行下一步相似度计算;否则,返回指纹不匹配并结束;
步骤4、通过三个一维数组循环迭代的方式,优化编辑距离计算方法,节省了计算所需的内存使用,进而加快了计算的速度;再通过优化的编辑距离计算方法,对特征数据的模糊哈希指纹进行相似度计算,得出两个软件特征数据的相似结果。
有益效果:快速计算软件相似度的方法,对于软件提取的特征数据,首先根据数据长度进行预判决,然后计算软件特征数据的模糊哈希指纹并进行指纹匹配判决。如果判决成功,则计算软件数据指纹的相似性。在实际应用中,优化的编辑距离计算方法,大大地节省了计算所需的内存占用,从而提高了计算的速度。本发明数据预判决和指纹匹配判决,可有效快速地计算软件的相似性。
附图说明
图1为本发明实施例的流程图;
图2为本发明实施例的特征数据指纹生成流程图;
图3为本发明实施例的优化的编辑距离计算流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
快速计算软件相似度的方法中定义的特征数据是通过反汇编工具反汇编软件,并从软件里提取的操作码。
如图1所示,包括如下流程:
步骤1、对待比较的两个软件进行特征数据的提取,根据特征数据的长度进行预判决,若满足判决成功,进行下一步;否则,返回数据不匹配并结束;
步骤2、根据判决成功的两个软件的特征数据生成一个素数,作为模糊哈希过程中用于分片的触发值,选取素数是为了增加随机性和抵御可能的攻击,然后利用该素数计算特征数据的模糊哈希指纹;
步骤3、对特征数据的模糊哈希指纹进行判决,确定是否匹配;若匹配,进行下一步相似度计算;否则,返回指纹不匹配并结束;
步骤4、通过三个一维数组循环迭代的方式,优化编辑距离计算方法,节省了计算所需的内存使用,进而加快了计算的速度;再通过优化的编辑距离计算方法,对特征数据的模糊哈希指纹进行相似度计算,得出两个软件特征数据的相似结果。
其中,本发明定义的特征数据是通过反汇编工具反汇编软件,并从软件里提取的特征指令信息。
1.数据预判决
对于提取的两个软件的特征数据,记为x和y,首先进行数据预判决。预判决的具体规则如下:
设x和y的长度分别为len1和len2,判决阈值为ε(可设为70),有如下公式:
[ 1 - | len 1 - len 2 | max ( len 1 , len 2 ) ] × 100 ≥ ϵ - - - ( 1 )
若对于特征数据x和y,满足公式(1),则进行下一步,即分别计算特征数据的模糊哈希指纹;否则停止并返回匹配不成功。
2.指纹计算
对于数据预判决成功的两个特征数据,接下来根据两个数据的长度,选取一个素数作为触发值并生成指纹。具体过程如下:
设两个数据分别进行模糊哈希指纹过程后都产生N个分片,N一般取值为64或128等(根据实际需要),则每个分片的平均长度为[len1/N]和[len2/N]。函数f(x)的输出为不大于x的最大素数。设定一个触发值tv(trigger value):
tv = f ( len 1 + len 2 2 × N ) - - - ( 2 )
然后利用该触发值来计算数据的模糊哈希指纹,具体过程如图2所示,首先用一个滑动窗口在数据序列上滑动,当滑动窗口里的内容的哈希值等于tv-1时,产生一个分片,接下来计算这个分片的哈希值hash,并复位滑动窗口的值,然后继续滑动并产生下一个分片。为了提高指纹的精度,本发明去掉了以往模糊哈希过程中的压缩映射步骤,把每个分片哈希的值直接连接起来作为指纹。具体算法描述见算法1,最后生成的数据指纹fp(fingerprint)为:
fp=hash1||hash2||…||hashN    (3)
Figure BDA00003324032100041
3.指纹匹配判决
指纹匹配判决的处理与步骤1数据预判决类似。具体如下:
设两个特征数据指纹fp1和fp2的长度分别为len1′和len2′,判决阈值ε(可设为70),有如下公式:
[ 1 - | len 1 ′ - len 2 ′ | max ( len 1 ′ , len 2 ′ ) ] × 100 ≥ ϵ - - - ( 4 )
若对于数据指纹fp1和fp2,满足公式(4),则进行下一步,即计算相似度;否则停止并返回匹配不成功。
4.相似度计算
在指纹匹配判决成功后,接下来需要计算数据指纹的相似度来准确描述软件相似程度。本发明通过计算两个指纹间的编辑距离(Edit Distance)来表征两个指纹之间的相似度。编辑距离是指两个字符串之间由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。为了计算原始两个字符串的相似度,传统方法利用一个二维数组array[len1,len2]来计算两个字符串s1和s2(长度分别为len1,len2)之间的距离,采用循环迭代逐步填满数组,二维数组中的任意一个值都代表一个编辑距离,其中array[i,j](0<=i<=len1-1,0<=j<=len2-1)代表s1前i个字符和s2前j个字符之间的编辑距离,数组右下角的值array[len1-1,len2-1]就是两个字符串s1和s2的编辑距离,即distance=array[len1-1,len2-1]。
传统的方法需要申请len1*len2的内存空间,在实际应用中,当软件指纹很长时将消耗大量的内存空间,因而对批量大数据进行处理的效率较低。为了加快计算效率,本发明优化了编辑距离的计算方法,考虑到二维数组中某点编辑距离的计算只使用到其上方相邻、左边相邻和左上角相邻的三个点,即只需知道当前行和上方相邻行的数据,我们使用了两个大小都为len2的一维数组array2和array3表示二维数组的相邻两行。为计算方便,我们又使用了一个大小为len1的一维数组array1表示原来所需二维数组的第一列。具体做法如图3所示,在计算过程中array2表示奇数行,array3表示偶数行(注意在计算机中,数组的下标从0开始,所以第1行的行下标为0,第2行的行下标为1,以此类推)。最后得到的编辑距离distance为:
dis tan ce = array 2 [ len 2 - 1 ] , iflen 1 % 2 = 1 array 3 [ len 2 - 1 ] , iflen 1 % 2 = 0 - - - ( 5 )
采用本方法后需要申请的内存空间为len1+len2*2,大大节省了内存空间,提高了计算速度,算法伪码如下:
Figure BDA00003324032100052
Figure BDA00003324032100061
本发明根据如下公式表征两个特征数据指纹的相似性Sim。其中,len1′和len2′分别为两个指纹的长度。
Sim = [ 1 - dis tan ce max ( len 1 &prime; , len 2 &prime; ) ] &times; 100 - - - ( 6 )
若两个软件的相似度大于一定的阈值ε(一般为70),则认为这两款软件有较高的相似度。对于计算机软件,则是克隆软件;对智能手机应用软件来说,则是重打包应用(软件签名私钥不同)。

Claims (6)

1.一种快速计算软件相似度的方法,其特征在于,包括如下步骤: 
步骤1、对待比较的两个软件进行特征数据的提取,根据特征数据的长度进行预判决,若满足判决成功,进行下一步;否则,返回数据不匹配并结束; 
步骤2、根据判决成功的两个软件的特征数据生成一个素数,作为模糊哈希过程中用于分片的触发值,利用素数计算特征数据的模糊哈希指纹; 
步骤3、对特征数据的模糊哈希指纹进行判决,确定是否匹配;若匹配,进行下一步相似度计算;否则,返回指纹不匹配并结束; 
步骤4、通过三个一维数组循环迭代的方式,优化编辑距离计算方法;再通过优化的编辑距离计算方法,对特征数据的模糊哈希指纹进行相似度计算,得出两个软件特征数据的相似结果。 
2.如权利要求1所述的快速计算软件相似度的方法,其特征在于:特征数据是通过反汇编软件从软件里提取的特征指令信息。 
3.如权利要求1所述的快速计算软件相似度的方法,其特征在于:步骤1中,对于提取的两个软件的特征数据,记为x和y,进行数据预判决如下: 
设x和y的长度分别为len1和len2,判决阈值为ε,有如下公式: 
Figure FDA00003324032000011
若对于特征数据x和y,满足公式(1),则进行下一步,即分别计算数据的模糊哈希指纹;否则停止并返回匹配不成功。 
4.如权利要求3所述的快速计算软件相似度的方法,其特征在于:步骤2中,设两个软件的特征数据分别进行模糊哈希指纹过程后都产生N个分片,则素数tv为 
Figure FDA00003324032000012
函数f(σ)的输出为不大于σ的最大素数;然后利用素数来计算特征数据的模糊哈希指纹,首先用一个滑动窗口在特征数据序列上滑动,当滑动窗口里的内容的哈希值等于tv-1时,产生一个分片,接下来计算这个分片的哈希值hash,并复位滑动窗口的值,然后继续滑动并产生下一个分片;最好把每个分片的哈希值连接起来作为指纹;生成的特征数据的模糊哈希指纹fp为: 
fp=hash1||hash2||…||hashN    (3) 。
5.如权利要求4所述的快速计算软件相似度的方法,其特征在于:步骤3中,设两个软件的特征数据的模糊哈希指纹分别为fp1和fp2,fp1和fp2的长度分别为len1′和len2′,判决阈值ε(可设为70),有如下公式: 
Figure FDA00003324032000021
若对于特征数据的模糊哈希指纹fp1和fp2,满足公式(4),则进行下一步,即计算相似度;否则停止并返回匹配不成功。 
6.如权利要求5所述的快速计算软件相似度的方法,其特征在于:步骤4中, 
两个软件的特征数据的模糊哈希指纹相似度
Figure FDA00003324032000022
distance表示两个软件特征数据的编辑距离。 
CN2013102291223A 2013-06-08 2013-06-08 一种快速计算软件相似度的方法 Pending CN103336890A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013102291223A CN103336890A (zh) 2013-06-08 2013-06-08 一种快速计算软件相似度的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013102291223A CN103336890A (zh) 2013-06-08 2013-06-08 一种快速计算软件相似度的方法

Publications (1)

Publication Number Publication Date
CN103336890A true CN103336890A (zh) 2013-10-02

Family

ID=49245053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013102291223A Pending CN103336890A (zh) 2013-06-08 2013-06-08 一种快速计算软件相似度的方法

Country Status (1)

Country Link
CN (1) CN103336890A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761483A (zh) * 2014-01-27 2014-04-30 百度在线网络技术(北京)有限公司 恶意代码的检测方法及装置
CN104123493A (zh) * 2014-07-31 2014-10-29 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置
CN105200938A (zh) * 2015-08-27 2015-12-30 广西交通科学研究院 一种基于视觉的车道闸杆防撞系统
CN107423295A (zh) * 2016-05-24 2017-12-01 张向利 一种海量地址数据智能快速匹配方法
CN107423309A (zh) * 2016-06-01 2017-12-01 国家计算机网络与信息安全管理中心 基于模糊哈希算法的海量互联网相似图片检测系统及方法
CN108073815A (zh) * 2017-12-29 2018-05-25 哈尔滨安天科技股份有限公司 基于代码切片的家族判定方法、系统及存储介质
CN110674337A (zh) * 2019-10-15 2020-01-10 盛唐威讯数媒科技(北京)有限公司 一种音像图文识别系统
CN112650451A (zh) * 2020-12-28 2021-04-13 杭州趣链科技有限公司 查找网络服务器的优化方法、装置、计算机设备及存储介质
CN112685455A (zh) * 2021-03-12 2021-04-20 北京每日优鲜电子商务有限公司 实时数据分类显示方法、装置、电子设备和可读介质
WO2021121338A1 (en) * 2019-12-17 2021-06-24 Beijing Didi Infinity Technology And Development Co., Ltd. Fingerprints for open source code governance
US11163948B2 (en) 2018-07-10 2021-11-02 Beijing Didi Infinity Technology And Development Co., Ltd. File fingerprint generation
CN114461196A (zh) * 2022-02-21 2022-05-10 广州图创计算机软件开发有限公司 一种软件开发智能辅助方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100817A1 (en) * 2007-02-28 2010-04-22 Optical Systems Corporation Ltd. Text management software
CN101894236A (zh) * 2010-07-28 2010-11-24 北京华夏信安科技有限公司 基于摘要语法树和语义匹配的软件同源性检测方法及装置
CN102750482A (zh) * 2012-06-20 2012-10-24 东南大学 一种安卓市场中重包装应用的检测方法
CN102811213A (zh) * 2011-11-23 2012-12-05 北京安天电子设备有限公司 基于模糊哈希算法的恶意代码检测系统及方法
US20130114811A1 (en) * 2011-11-08 2013-05-09 Petros T. Boufounos Method for Privacy Preserving Hashing of Signals with Binary Embeddings

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100100817A1 (en) * 2007-02-28 2010-04-22 Optical Systems Corporation Ltd. Text management software
CN101894236A (zh) * 2010-07-28 2010-11-24 北京华夏信安科技有限公司 基于摘要语法树和语义匹配的软件同源性检测方法及装置
US20130114811A1 (en) * 2011-11-08 2013-05-09 Petros T. Boufounos Method for Privacy Preserving Hashing of Signals with Binary Embeddings
CN102811213A (zh) * 2011-11-23 2012-12-05 北京安天电子设备有限公司 基于模糊哈希算法的恶意代码检测系统及方法
CN102750482A (zh) * 2012-06-20 2012-10-24 东南大学 一种安卓市场中重包装应用的检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ALEX木头: "编辑距离分析与实现", 《HTTP://WWW.CNBLOGS.COM/HESHIZHU/ARCHIVE/2010/12.HTML》, 31 December 2010 (2010-12-31) *
WU ZHOU ET AL.: "Detecting Repackaged Smartphone Applications in Third-Party Android Marketplaces", 《PROCEEDING OF THE SECOND ACM CONFERENCE ON DATA AND APPLICANT SECURITY AND PRIVACY》, 7 February 2012 (2012-02-07) *
魏诗云等: "网页近似重复检测算法研究", 《计算机光盘软件与应用》, no. 8, 31 December 2012 (2012-12-31), pages 135 - 136 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761483A (zh) * 2014-01-27 2014-04-30 百度在线网络技术(北京)有限公司 恶意代码的检测方法及装置
CN104123493A (zh) * 2014-07-31 2014-10-29 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置
CN104123493B (zh) * 2014-07-31 2017-09-26 百度在线网络技术(北京)有限公司 应用程序的安全性检测方法和装置
CN105200938A (zh) * 2015-08-27 2015-12-30 广西交通科学研究院 一种基于视觉的车道闸杆防撞系统
CN107423295A (zh) * 2016-05-24 2017-12-01 张向利 一种海量地址数据智能快速匹配方法
CN107423309A (zh) * 2016-06-01 2017-12-01 国家计算机网络与信息安全管理中心 基于模糊哈希算法的海量互联网相似图片检测系统及方法
CN108073815A (zh) * 2017-12-29 2018-05-25 哈尔滨安天科技股份有限公司 基于代码切片的家族判定方法、系统及存储介质
CN108073815B (zh) * 2017-12-29 2022-02-15 安天科技集团股份有限公司 基于代码切片的家族判定方法、系统及存储介质
US11163948B2 (en) 2018-07-10 2021-11-02 Beijing Didi Infinity Technology And Development Co., Ltd. File fingerprint generation
CN110674337A (zh) * 2019-10-15 2020-01-10 盛唐威讯数媒科技(北京)有限公司 一种音像图文识别系统
WO2021121338A1 (en) * 2019-12-17 2021-06-24 Beijing Didi Infinity Technology And Development Co., Ltd. Fingerprints for open source code governance
CN112650451A (zh) * 2020-12-28 2021-04-13 杭州趣链科技有限公司 查找网络服务器的优化方法、装置、计算机设备及存储介质
CN112650451B (zh) * 2020-12-28 2023-06-09 杭州趣链科技有限公司 查找网络服务器的优化方法、装置、计算机设备及存储介质
CN112685455B (zh) * 2021-03-12 2021-11-23 北京每日优鲜电子商务有限公司 实时数据分类显示方法、装置、电子设备和可读介质
CN112685455A (zh) * 2021-03-12 2021-04-20 北京每日优鲜电子商务有限公司 实时数据分类显示方法、装置、电子设备和可读介质
CN114461196A (zh) * 2022-02-21 2022-05-10 广州图创计算机软件开发有限公司 一种软件开发智能辅助方法及系统
CN114461196B (zh) * 2022-02-21 2022-09-27 广州图创计算机软件开发有限公司 一种软件开发智能辅助方法及系统

Similar Documents

Publication Publication Date Title
CN103336890A (zh) 一种快速计算软件相似度的方法
Jin et al. Predicting aesthetic score distribution through cumulative jensen-shannon divergence
Cheng et al. Fast and accurate image matching with cascade hashing for 3d reconstruction
Zhou et al. Muvir: Multi-view rare category detection.
Chen et al. Using binarization and hashing for efficient SIFT matching
CN104978521B (zh) 一种实现恶意代码标注的方法及系统
CN104966090B (zh) 实现面向图像理解的视觉单词生成和评价的系统及方法
CN103632134A (zh) 基于Fisher低秩矩阵恢复的人脸识别方法
CN109190370B (zh) 一种基于控件区域分布特征的安卓界面相似度计算方法
CN105740808A (zh) 人脸识别方法和装置
Deng et al. Deep multi-scale discriminative networks for double JPEG compression forensics
Weyand et al. An evaluation of two automatic landmark building discovery algorithms for city reconstruction
CN109697240A (zh) 一种基于特征的图像检索方法及装置
CN103246877A (zh) 基于图像轮廓的人脸识别新方法
Bao et al. An improved DenseNet model to classify the damage caused by cotton aphid
CN108090117B (zh) 一种图像检索方法及装置,电子设备
CN108182375B (zh) 一种基于手机支付的指纹识别系统
CN112257689A (zh) 人脸识别模型的训练和识别方法、存储介质及相关设备
Lin et al. Automatic image annotation using tag-related random search over visual neighbors
Flores et al. Computer algorithm for archaeological projectile points automatic classification
CN102346830B (zh) 基于梯度直方图的病毒检测方法
Munarko et al. HII: Histogram Inverted Index for Fast Images Retrieval.
Finn et al. Relevance feedback in biometric retrieval of animal photographs
Tsang et al. Affine invariant matching of broken boundaries based on simple genetic algorithm and contour reconstruction
Xie et al. An analogy-relevance feedback CBIR method using multiple features

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20131002