CN111240696A - 移动恶意程序相似模块提取方法 - Google Patents
移动恶意程序相似模块提取方法 Download PDFInfo
- Publication number
- CN111240696A CN111240696A CN202010023758.2A CN202010023758A CN111240696A CN 111240696 A CN111240696 A CN 111240696A CN 202010023758 A CN202010023758 A CN 202010023758A CN 111240696 A CN111240696 A CN 111240696A
- Authority
- CN
- China
- Prior art keywords
- application program
- call graph
- function call
- key
- similarity
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 230000006870 function Effects 0.000 claims abstract description 358
- 239000011159 matrix material Substances 0.000 claims description 60
- 238000000605 extraction Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000002155 anti-virotic effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种移动恶意程序相似模块提取方法,该方法包括:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。通过上述方式,增加恶意应用程序同源性判断的准确性,以此来提高计算和分类的速度,极大地减少分类时间。
Description
技术领域
本申请涉及软件工程技术领域,特别是涉及一种移动恶意程序相似模块提取方法。
背景技术
不同的终端设备均具有操作系统,每个操作系统里均有不同类型的应用程序。随着移动互联网的发展,恶意应用程序数目与日俱增。以安卓系统为例,攻击者通过工具可方便的对非恶意应用程序解压缩,修改应用程序内容,如注入恶意代码,将应用程序图标修改为具有诱惑性的图片,修改完成后,重新打包并伪装成正常应用程序上传到各大应用市场。并且攻击者为了扩大攻击面,会批量向多种应用程序进行相似的恶意操作,导致多种应用程序之间具有许多相似的代码段。一旦用户运行恶意程序,根据攻击者意图,恶意代码可能会悄悄收集用户信息到服务器,直接锁定手机屏幕进行钱财勒索,恶意消耗手机资源进行挖矿等行为或者发送恶意短信进行扣费。安卓恶意软件不仅造成用户个人隐私信息的泄露,也给用户带来经济上的巨大损失,减缓安卓恶意软件对用户的攻击迫在眉睫。
发明内容
为了解决上述问题,本申请提供一种移动恶意程序相似模块提取方法,增加恶意应用程序同源性判断的准确性,以此来提高计算和分类的速度,极大地减少分类时间。
本申请采用的一种技术方案是提供一种移动恶意程序相似模块提取方法,该方法包括:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
其中,将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图之前,还包括:将第一应用程序进行反编译,以得到反编译后的第一代码,以及将第二应用程序进行反编译,以得到反编译后的第二代码;获取第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取第二代码中的所有应用程序接口,以得到第二函数调用图。
其中,获取第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取第二代码中的所有应用程序接口,以得到第二函数调用图之前,包括:对第一代码进行符号执行,移除第一代码中的第一无效代码;对第二代码进行符号执行,移除第二代码中的第二无效代码。
其中,该方法还包括:对第一函数调用图中的函数设置标志值;对第二函数调用图中的函数设置标志值。
其中,将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图,包括:根据第一函数调用图中的函数标志值,判断第一函数调用图中的函数是否为关键函数,以及根据第二函数调用图中的函数标志值,判断第二函数调用图中的函数是否为关键函数;若是,则去除第一函数调用图中的所有非关键函数,以得到第一关键函数,以及去除第二函数调用图中的所有非关键函数,以得到第二关键函数;将第一关键函数和第二关键函数进行哈希处理,以分别得到第一关键函数调用图和第二关键函数调用图。
其中,计算第一关键函数调用图和第二关键函数调用图的相似度,包括:
将第一关键函数调用图转变为第一矩阵,将第二关键函数调用图转变为第二矩阵;计算第一矩阵与第二矩阵的相似度。
其中,计算第一矩阵与第二矩阵的相似度之前,还包括:基于第一矩阵和第二矩阵建立共有矩阵;判断共有矩阵是否为空;若否,则计算第一矩阵与第二矩阵的相似度。
其中,第一应用程序为待测应用程序,第二应用程序为已知的恶意应用程序;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序,包括:若相似度大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序。
其中,若相似度大于设定阈值,则确定待测应用程序为与所述已知的恶意应用程序类型相同的恶意应用程序,包括:若相似度大于设定阈值,则将待检测应用程序与另一已知的恶意应用程序进行相似度比对;若相似度比对结果大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序;其中,另一已知的恶意应用程序和已知的恶意应用程序属于类型相同的恶意应用程序。
其中,该方法还包括:获取第三应用程序;将所述第三应用程序去除非关键函数,以得到第三关键函数调用图;将所述第三关键函数调用图中的函数与预设函数库中的第一预设函数进行匹配;若匹配成功,则获取与所述第一预设函数相关联的应用程序库;计算所述第三关键函数调用图与所述应用程序库中的第四应用程序的第四关键函数调用图的相似度;若所述相似度大于设定阈值,则确定所述第三应用程序和所述第四应用程序为同类型恶意应用程序。
本申请采用的另一种技术方案是提供一种终端设备,该终端设备包括处理器以及与处理器耦接的存储器;其中,存储器用于存储程序数据,程序数据在被处理器执行时,用于实现上述移动恶意程序相似模块提取方法。
本申请采用的另一种技术方案是提供一种计算机存储介质,该计算机存储介质用于存储程序数据,程序数据在被处理器执行时,用于实现上述移动恶意程序相似模块提取方法。
本申请的有益效果是:区别于现有技术的情况,本申请的一种移动恶意程序相似模块提取方法,该方法包括:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。通过上述方式,提取两个应用程序中的关键函数并进行相似度计算,判定两个或者多个应用程序的相似性,增加恶意应用程序同源性判断的准确性,略去非关键函数的比较,以此来提高计算和分类的速度,极大地减少分类时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的移动恶意程序相似模块提取方法第一实施例的流程示意图;
图2是本申请提供的移动恶意程序相似模块提取方法第二实施例的流程示意图;
图3是本申请提供的移动恶意程序相似模块提取方法第三实施例的流程示意图;
图4是本申请提供的移动恶意程序相似模块提取方法第四实施例的流程示意图;
图5是本申请提供的移动恶意程序相似模块提取方法第五实施例的流程示意图;
图6是本申请提供的移动恶意程序相似模块提取方法第六实施例的流程示意图;
图7是本申请提供的移动恶意程序相似模块提取方法第七实施例的流程示意图;
图8是本申请提供的终端设备一实施例的结构示意图;
图9是本申请提供的计算机存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请提供一种移动恶意程序相似模块提取方法,其中,模块为应用程序中的代码块,相似模块表示不同应用程序的代码块之间相似度达到设定阈值的代码块。
参阅图1,图1是本申请提供的移动恶意程序相似模块提取方法第一实施例的流程示意图,该方法包括:
步骤11:获取第一应用程序和第二应用程序。
可选的,在本实施例中,第一应用程序为未知的应用程序,第二应用程序为恶意应用程序。
可选的,在本实施例中,第一应用程序和第二应用程序均为已知的恶意应用程序。
可选的,在本实施例中,第一应用程序和第二应用程序均为未知的应用程序。
可以理解,本实施例中的未知的应用程序是指暂时不清楚应用程序是否是恶意应用程序。
步骤12:将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图。
可以理解,应用程序是由不同的计算机编程语言进行编写而成,不同的操作系统,所使用的编程语言也不相同,如:安卓系统的应用程序使用Java语言,苹果系统的应用程序使用Objective C(扩充C的面向对象编程语言)。不同的编程语言都具有软件开发工具包,用以支持开发者进行应用程序开发,软件开发工具包中包括不同的系统函数。
在本实施例中,关键函数是指如果一个函数调用了两个或者两个以上的系统函数,那么该函数就称之为关键函数。
在去除非关键函数时,需要在保留非关键函数与其他函数调用关系的基础上,去除所有非关键函数。
步骤13:计算第一关键函数调用图和第二关键函数调用图的相似度。
可选的,计算第一关键函数调用图和第二关键函数调用图的相似度包括:先分别识别出第一关键函数调用图和第二关键函数调用图中的子图,在识别出第一关键函数调用图和第二关键函数调用图中的子图中相似的子图,然后检测相似子图中的等价调用替换,并计算相似子图间的相似度,最后根据所有相似子图间的相似度计算出第一关键函数调用图和第二关键函数调用图的相似度。
可选的,计算第一关键函数调用图和第二关键函数调用图的相似度,可以采用对相应的系统函数加权,然后根据关键函数对系统函数的调用进行加权计算,结合加权计算,计算第一关键函数调用图和第二关键函数调用图的相似度。
步骤14:若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
可以理解,设定阈值依照实际需求进行设置。
在一些实施例中,若相似度小于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序不属于同类型恶意应用程序,则分别将第一应用程序和第二应用程序与其他应用程序按照上述方法进行相似度比较,以确定应用程序的类型。
可选的,本实施例的恶意应用程序的分类是基于杀毒引擎的分类为模板,并以杀毒引擎的分类作为检测本实施例准确性的参考标准。
在本实施例中,第一应用程序和第二应用程序均为恶意应用程序,通过上述方法,对恶意应用程序进行分类。
在一应用场景中,有数量较多的恶意应用程序,以知名杀毒引擎诺顿的对恶意应用程序的分类为模板,以对上述数量较多的恶意应用程序进行分类。通过获取两个恶意应用程序,将两个恶意应用程序分别去除非关键函数,以得到两个关键函数调用图,计算两个关键函数调用图的相似度,若相似度大于设定阈值,则确定两个恶意应用程序同类型恶意应用程序,如设定阈值为0.7,计算出的相似度为0.8,则确定两个恶意应用程序同类型恶意应用程序。
区别于现有技术的情况,本申请的一种移动恶意程序相似模块提取方法,该方法包括:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。通过上述方式,提取两个应用程序中的关键函数并进行相似度计算,判定两个或者多个应用程序的相似性,增加恶意应用程序同源性判断的准确性,略去非关键函数的比较,以此来提高计算和分类的速度,极大地减少分类时间。
参阅图2,图2是本申请提供的移动恶意程序相似模块提取方法第二实施例的流程示意图,该方法包括:
步骤21:获取第一应用程序和第二应用程序。
步骤22:将第一应用程序进行反编译,以得到反编译后的第一代码,以及将第二应用程序进行反编译,以得到反编译后的第二代码。
可选的,利用应用程序工具对第一应用程序和第二应用程序进行反编译,将反编译的代码存放在指定路径。
以安卓应用程序为例,反编译后的代码存放在以“smali”命名的文件夹中。
步骤23:获取第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取第二代码中的所有应用程序接口,以得到第二函数调用图。
可选的,在得到反编译后的代码后,从代码中获取所有的应用程序接口,以得到函数调用图。可以使用方法签名来确定一个方法,对这个方法提取之后,遍历这个方法的主体部分以找到这个方法调用的所有的函数。将这些被调用的函数按出现次序存放在一个列表中,表示该函数的所调用的应用程序接口序列,并且为该函数设置一个标志值,表示该函数是否为关键函数,如以1和0为标志值为例,标志值为1则表示该函数为关键函数,标志值为0则表示该函数为普通函数。
在一些实施例中,在步骤23之前还包括:对第一代码进行符号执行,移除第一代码中的第一无效代码;对第二代码进行符号执行,移除第二代码中的第二无效代码。
在经过符号执行处理后的第一代码和第二代码,去除了其中的无效代码块,使提取的函数更加精准和有效.。
步骤24:根据第一函数调用图中的函数标志值,判断第一函数调用图中的函数是否为关键函数,以及根据第二函数调用图中的函数标志值,判断第二函数调用图中的函数是否为关键函数。
步骤25:若是,则去除第一函数调用图中的所有非关键函数,以得到第一关键函数,以及去除第二函数调用图中的所有非关键函数,以得到第二关键函数。
可选的,在保留非关键函数与其他函数调用关系的基础上,去除所有非关键函数。
步骤26:将第一关键函数和第二关键函数进行哈希处理,以分别得到第一关键函数调用图和第二关键函数调用图。
由于函数的名字是直接从反编译后得到的,即使函数拥有相同的应用程序接口序列,也有可能出现名字不相同的情况。所以在此步骤中,将用应用程序接口序列的哈希值来代替函数的名字,以对上述情况进行更好的归类,增强函数调用图的准确性。
步骤27:计算第一关键函数调用图和第二关键函数调用图的相似度。
步骤28:若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
参阅图3,图3是本申请提供的移动恶意程序相似模块提取方法第三实施例的流程示意图,该方法包括:
步骤31:获取第一应用程序和第二应用程序
步骤32:将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图。
步骤31-32与上述实施例具有相同或相似的技术方案,这里不做赘述。
步骤33:将第一关键函数调用图转变为第一矩阵,将第二关键函数调用图转变为第二矩阵。
可选的,第一矩阵为:
第二矩阵为:
步骤34:计算第一矩阵与第二矩阵的相似度。
将上述第一矩阵和第二矩阵利用下列公式计算得出相似度。
其中,
S(A,B)函数得到的结果是应用程序α和β之间的相似值,是由和函数分别求和再相比的值。而函数是应用程序α和β中i方法与j方法之间的最小距离与应用程序α和β中i方法与j方法之间的最大距离之比。是判断应用程序α和β的i方法与j方法之间的距离是否同时为0,如果均没有i方法到j方法之间的调用,则赋值为0,出现了调用则为1。
最后计算出来的相似值区间为[0,1]。相似值越高,两个应用程序之间就越相似。
步骤35:若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
参阅图4,图4是本申请提供的移动恶意程序相似模块提取方法第四实施例的流程示意图,该方法包括:
步骤41:获取第一应用程序和第二应用程序。
可选的,在本实施例中,第一应用程序和第二应用程序其中有一个应用程序是已知的恶意应用程序,且已进行了分类。
步骤42:将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图。
步骤43:将第一关键函数调用图转变为第一矩阵,将第二关键函数调用图转变为第二矩阵。
步骤44:基于第一矩阵和第二矩阵建立共有矩阵。
可以理解,建立共有矩阵是为了查看第一矩阵和第二矩阵中是否有相同的关键函数。
步骤45:判断共有矩阵是否为空。
可以理解,若判断共有矩阵不为空,则确定第一矩阵和第二矩阵中有相同的关键函数,则执行步骤46。若为空,确定第一矩阵和第二矩阵中没有相同的关键函数,此时若第一应用程序和第二应用程序都属于恶意应用程序,可判断出第一应用程序和第二应用程序不属于同类型的恶意应用程序,若第一应用程序和第二应用程序中有一个属于恶意应用程序,可判断出另一应用程序与其中的恶意应用程序不是同类型,且让另一应用程序与其他恶意应用程序进行比较。
步骤46:计算第一矩阵与第二矩阵的相似度。
步骤47:若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
参阅图5,图5是本申请提供的移动恶意程序相似模块提取方法第五实施例的流程示意图,该方法包括:
步骤51:获取待测应用程序和已知的恶意应用程序。
可选的,待检测应用程序属于未知的应用程序,不清楚是否为恶意程序。
步骤52:将待测应用程序去除非关键函数,以得到第一关键函数调用图,以及将已知的恶意应用程序去除非关键函数,以得到第二关键函数调用图。
可选的,使用上述实施例的技术方案获取关键函数调用图。
步骤53:计算第一关键函数调用图和第二关键函数调用图的相似度。
在一些实施例中,将第一关键函数调用图和第二关键函数调用图分别转化为第一矩阵和第二矩阵,并采用上述实施例中的公式进行相似度计算。
步骤54:若相似度大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序。
在一些实施例中,只获取待检测应用程序,将待检测应用程序进行关键函数提取,得到关键函数调用图,然后获取已知的恶意应用程序的关键函数调用图,然后对两个关键函数调用图进行相似度计算。
可以理解,已知的恶意应用程序的关键函数调用图已预先保存在恶意应用程序库中,并有对应的类型。
在本实施例中,利用提取关键函数,判断未知的应用程序是否为恶意应用程序,将重点放在调用了关键函数即系统函数的函数,不需要考虑用户定义函数,因此具有较高的效率,降低了时间复杂度和空间复杂度。
参阅图6,图6是本申请提供的移动恶意程序相似模块提取方法第六实施例的流程示意图,该方法包括:
步骤61:获取待测应用程序和已知的恶意应用程序。
步骤62:将待测应用程序去除非关键函数,以得到第一关键函数调用图,以及将已知的恶意应用程序去除非关键函数,以得到第二关键函数调用图。
步骤63:计算第一关键函数调用图和第二关键函数调用图的相似度。
步骤64:若相似度大于设定阈值,则将待检测应用程序与另一已知的恶意应用程序进行相似度比对。
步骤65:若相似度比对结果大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序。
在一些实施例中,当待检测应用程序的相似度大于设定阈值时,将待检测应用程序与其做相似度计算的已知恶意应用程序的类型中的所有已知恶意应用程序进行上述相似度计算,当相似度比对结果大于设定阈值时,确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序。
通过再次进行相似度判断的方式,对上一次相似度计算进行验证,并减小错误率,保证对待检测应用程序的判断的准确性。
在一些实施例中,对安卓应用程序进行恶意应用程序的相似性判断。选择NANO-Engine作为检索的杀毒引擎。利用VirusTotal(一个提供免费的可疑文件分析服务的网站)提供的接口,得到每一个安卓恶意应用程序样本在NANO-Engine的检测分类结果,并作为检测准确性的参考标准。
利用Apktool(Android application package tool,安卓应用程序包编译工具)对安卓恶意应用程序样本进行反编译,并将反编译出的smali代码存放在指定的路径。
从smali文件中提取所有的API(Application Programming Interface,应用程序接口),得到函数调用图。使用方法签名来确定一个方法,对这个方法提取之后,遍历这个方法的主体部分以找到这个方法调用的所有的函数。将这些被调用的函数按出现次序存放在一个列表中,表示该函数的所调用的API序列。除此之外,为该函数设置一个标志值,表示其是否为关键函数。关键函数的是指:如果一个函数调用了两个或者两个以上的系统函数,那么该函数就称之为关键函数,标志值是1,否则标志值是0,表示这是一个普通函数。
通过每个函数设置的标志值,判定该函数是否为关键函数,在保留非关键函数与其他函数调用关系的基础上,去除所有非关键函数,得到关键函数调用图。
由于函数的名字是直接从反编译后得到的smali代码中获得的,即使函数拥有相同的API序列,也有可能出现名字不相同的情况。所以在此步骤中,将用API序列的哈希值来代替函数的名字。
将关键函数调用图转变为矩阵形式,可选的,转变为上述实施例中的矩阵形式,并利用上述实施例中的公式进行相似度计算。
最后计算出来的相似值区间为[0,1]。相似值越高,两个应用程序之间就越相似。
参阅图7,图7是本申请提供的移动恶意程序相似模块提取方法第七实施例的流程示意图,该方法包括:
步骤71:获取第三应用程序。
在本实施例中,第三应用程序为未知的应用程序。
步骤72:将第三应用程序去除非关键函数,以得到第三关键函数调用图。
在步骤72中,还包括将第三应用程序进行反编译,以得到第三代码,然后对第三代码进行符号执行,以移除第三代码中的第三无效代码。进而去除非关键函数,以得到第三关键函数调用图。
去除关键函数的过程如上述实施中的方案,这里不做赘述。
步骤73:将第三关键函数调用图中的函数与预设函数库中的第一预设函数进行匹配。
可选的,预设函数库存储着已知的恶意应用程序中所有的关键函数。将第三关键函数调用图中的函数与预设函数库的函数进行一一匹配。匹配成功,执行步骤74。
步骤74:若匹配成功,则获取与第一预设函数相关联的应用程序库。
在本实施例中,预设函数库中的函数与恶意应用程序库中的应用程序存在映射关系,并且还存在这一个函数对应多个应用程序的关系。
因此,在找到与第三关键函数调用图中函数相匹配的第一预设函数时,则获取与第一预设函数相关联的应用程序库。
步骤75:计算第三关键函数调用图与应用程序库中的第四应用程序的第四关键函数调用图的相似度。
在获取到应用程序库后,让第三应用程序的第三关键函数调用图与应用程序库中的第四应用程序的第四关键函数调用图的进行相似度计算,在此过程中,把该第三应用程序和匹配第一预设函数相关联的应用程序库中的应用程序一一对比,当比对中,出现相似度大于设定阈值时,执行步骤76。
步骤76:若相似度大于设定阈值,则确定第三应用程序和第四应用程序为同类型恶意应用程序。
可以理解,在本实施例中还使用上述实施例中的技术方案来实现本实施例中的步骤。
参阅图8,图8是本申请提供的终端设备一实施例的结构示意图,该终端设备80包括处理器81以及与处理器81耦接的存储器82;其中,存储器82用于存储程序数据,程序数据在被处理器81执行时,用于实现以下的方法步骤:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:将第一应用程序进行反编译,以得到反编译后的第一代码,以及将第二应用程序进行反编译,以得到反编译后的第二代码;获取第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取第二代码中的所有应用程序接口,以得到第二函数调用图。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:对第一代码进行符号执行,移除第一代码中的第一无效代码;对第二代码进行符号执行,移除第二代码中的第二无效代码。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:对第一函数调用图中的函数设置标志值;对第二函数调用图中的函数设置标志值。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:根据第一函数调用图中的函数标志值,判断第一函数调用图中的函数是否为关键函数,以及根据第二函数调用图中的函数标志值,判断第二函数调用图中的函数是否为关键函数;若是,则去除第一函数调用图中的所有非关键函数,以得到第一关键函数,以及去除第二函数调用图中的所有非关键函数,以得到第二关键函数;将第一关键函数和第二关键函数进行哈希处理,以分别得到第一关键函数调用图和第二关键函数调用图。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:将第一关键函数调用图转变为第一矩阵,将第二关键函数调用图转变为第二矩阵;计算第一矩阵与第二矩阵的相似度。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:基于第一矩阵和第二矩阵建立共有矩阵;判断共有矩阵是否为空;若否,则计算第一矩阵与第二矩阵的相似度。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:若相似度大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:若相似度大于设定阈值,则将待检测应用程序与另一已知的恶意应用程序进行相似度比对;若相似度比对结果大于设定阈值,则确定待测应用程序为与已知的恶意应用程序类型相同的恶意应用程序;其中,另一已知的恶意应用程序和已知的恶意应用程序属于类型相同的恶意应用程序。
可选的,该处理器81用于执行程序数据时,还用于实现以下的方法步骤:获取第三应用程序;将所述第三应用程序去除非关键函数,以得到第三关键函数调用图;将所述第三关键函数调用图中的函数与预设函数库中的第一预设函数进行匹配;若匹配成功,则获取与所述第一预设函数相关联的应用程序库;计算所述第三关键函数调用图与所述应用程序库中的第四应用程序的第四关键函数调用图的相似度;若所述相似度大于设定阈值,则确定所述第三应用程序和所述第四应用程序为同类型恶意应用程序。
参阅图9,图9是本申请提供的计算机存储介质一实施例的结构示意图,该计算机存储介质90用于存储程序数据91,程序数据91在被处理器执行时,用于实现以下的方法步骤:获取第一应用程序和第二应用程序;将第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将第二应用程序去除非关键函数,以得到第二关键函数调用图;计算第一关键函数调用图和第二关键函数调用图的相似度;若相似度大于设定阈值,则确定第一应用程序和第二应用程序为同类型恶意应用程序。
可以理解,程序数据91在被处理器执行时,还用于实现上述任一实施例的方法。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述组件或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种移动恶意程序相似模块提取方法,其特征在于,所述方法包括:
获取第一应用程序和第二应用程序;
将所述第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将所述第二应用程序去除非关键函数,以得到第二关键函数调用图;
计算所述第一关键函数调用图和所述第二关键函数调用图的相似度;
若所述相似度大于设定阈值,则确定所述第一应用程序和所述第二应用程序为同类型恶意应用程序。
2.根据权利要求1所述的方法,其特征在于,
所述将所述第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将所述第二应用程序去除非关键函数,以得到第二关键函数调用图之前,还包括:
将所述第一应用程序进行反编译,以得到反编译后的第一代码,以及将所述第二应用程序进行反编译,以得到反编译后的第二代码;
获取所述第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取所述第二代码中的所有应用程序接口,以得到第二函数调用图。
3.根据权利要求2所述的方法,其特征在于,
所述获取所述第一代码中的所有应用程序接口,以得到第一函数调用图,以及获取所述第二代码中的所有应用程序接口,以得到第二函数调用图之前,包括:
对所述第一代码进行符号执行,移除所述第一代码中的第一无效代码;
对所述第二代码进行符号执行,移除所述第二代码中的第二无效代码。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对所述第一函数调用图中的函数设置标志值;
对所述第二函数调用图中的函数设置标志值。
5.根据权利要求3所述的方法,其特征在于,
所述将所述第一应用程序去除非关键函数,以得到第一关键函数调用图,以及将所述第二应用程序去除非关键函数,以得到第二关键函数调用图,包括:
根据所述第一函数调用图中的函数标志值,判断所述第一函数调用图中的函数是否为关键函数,以及根据所述第二函数调用图中的函数标志值,判断所述第二函数调用图中的函数是否为关键函数;
若是,则去除所述第一函数调用图中的所有非关键函数,以得到第一关键函数,以及去除所述第二函数调用图中的所有非关键函数,以得到第二关键函数;
将所述第一关键函数和第二关键函数进行哈希处理,以分别得到所述第一关键函数调用图和所述第二关键函数调用图。
6.根据权利要求1所述的方法,其特征在于,
所述计算所述第一关键函数调用图和所述第二关键函数调用图的相似度,包括:
将所述第一关键函数调用图转变为第一矩阵,将所述第二关键函数调用图转变为第二矩阵;
计算所述第一矩阵与所述第二矩阵的相似度。
7.根据权利要求6所述的方法,其特征在于,
所述计算所述第一矩阵与所述第二矩阵的相似度之前,还包括:
基于所述第一矩阵和所述第二矩阵建立共有矩阵;
判断所述共有矩阵是否为空;
若否,则计算所述第一矩阵与所述第二矩阵的相似度。
8.根据权利要求1所述的方法,其特征在于,
所述第一应用程序为待测应用程序,所述第二应用程序为已知的恶意应用程序;
所述若所述相似度大于设定阈值,则确定所述第一应用程序和所述第二应用程序为同类型恶意应用程序,包括:
若所述相似度大于设定阈值,则确定所述待测应用程序为与所述已知的恶意应用程序类型相同的恶意应用程序。
9.根据权利要求8所述的方法,其特征在于,
所述若所述相似度大于设定阈值,则确定所述待测应用程序为与所述已知的恶意应用程序类型相同的恶意应用程序,包括:
若所述相似度大于设定阈值,则将所述待检测应用程序与另一已知的恶意应用程序进行相似度比对;
若所述相似度比对结果大于设定阈值,则确定所述待测应用程序为与所述已知的恶意应用程序类型相同的恶意应用程序;
其中,所述另一已知的恶意应用程序和所述已知的恶意应用程序属于类型相同的恶意应用程序。
10.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
获取第三应用程序;
将所述第三应用程序去除非关键函数,以得到第三关键函数调用图;
将所述第三关键函数调用图中的函数与预设函数库中的第一预设函数进行匹配;
若匹配成功,则获取与所述第一预设函数相关联的应用程序库;
计算所述第三关键函数调用图与所述应用程序库中的第四应用程序的第四关键函数调用图的相似度;
若所述相似度大于设定阈值,则确定所述第三应用程序和所述第四应用程序为同类型恶意应用程序。
11.一种终端设备,其特征在于,所述终端设备包括处理器以及与所述处理器耦接的存储器;
其中,所述存储器用于存储程序数据,所述程序数据在被所述处理器执行时,用于实现如权利要求1-10任一项所述的方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质用于存储程序数据,所述程序数据在被处理器执行时,用于实现如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010023758.2A CN111240696A (zh) | 2020-01-09 | 2020-01-09 | 移动恶意程序相似模块提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010023758.2A CN111240696A (zh) | 2020-01-09 | 2020-01-09 | 移动恶意程序相似模块提取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111240696A true CN111240696A (zh) | 2020-06-05 |
Family
ID=70870920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010023758.2A Pending CN111240696A (zh) | 2020-01-09 | 2020-01-09 | 移动恶意程序相似模块提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240696A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112379922A (zh) * | 2020-11-24 | 2021-02-19 | 中国科学院信息工程研究所 | 一种程序比对方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542508A (zh) * | 2018-10-18 | 2019-03-29 | 华中科技大学 | 一种基于函数调用关系图的代码同源性分析方法 |
CN109711163A (zh) * | 2018-12-26 | 2019-05-03 | 西安电子科技大学 | 基于api调用序列的安卓恶意软件检测方法 |
CN110516446A (zh) * | 2019-08-26 | 2019-11-29 | 南京信息职业技术学院 | 一种恶意软件家族归属判定方法、系统及存储介质 |
-
2020
- 2020-01-09 CN CN202010023758.2A patent/CN111240696A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542508A (zh) * | 2018-10-18 | 2019-03-29 | 华中科技大学 | 一种基于函数调用关系图的代码同源性分析方法 |
CN109711163A (zh) * | 2018-12-26 | 2019-05-03 | 西安电子科技大学 | 基于api调用序列的安卓恶意软件检测方法 |
CN110516446A (zh) * | 2019-08-26 | 2019-11-29 | 南京信息职业技术学院 | 一种恶意软件家族归属判定方法、系统及存储介质 |
Non-Patent Citations (2)
Title |
---|
LI,ZHENG-QIANG 等: "A Similar Module Extraction Approach for Android Malware" * |
乔延臣 等: "面向恶意代码同源判定的相似模块提取技术" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112379922A (zh) * | 2020-11-24 | 2021-02-19 | 中国科学院信息工程研究所 | 一种程序比对方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11188650B2 (en) | Detection of malware using feature hashing | |
JP6126672B2 (ja) | 悪性コード検出方法及びシステム | |
US9239922B1 (en) | Document exploit detection using baseline comparison | |
US8256000B1 (en) | Method and system for identifying icons | |
CN105357204B (zh) | 生成终端识别信息的方法及装置 | |
CN103473346A (zh) | 一种基于应用程序编程接口的安卓重打包应用检测方法 | |
CN106709336A (zh) | 识别恶意软件的方法和装置 | |
CN112148305A (zh) | 一种应用检测方法、装置、计算机设备和可读存储介质 | |
KR20160099160A (ko) | 명령어 집합의 행위 패턴을 엔-그램 방식으로 모델링하는 방법, 그 방법으로 동작하는 컴퓨팅 장치, 및 그 방법을 컴퓨팅 장치에서 실행하도록 구성되는 기록 매체에 저장된 프로그램 | |
US9787699B2 (en) | Malware detection | |
CN111597553A (zh) | 病毒查杀中的进程处理方法、装置、设备及存储介质 | |
CN106789973B (zh) | 页面的安全性检测方法及终端设备 | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN109145589B (zh) | 应用程序获取方法及装置 | |
Hu et al. | Robust app clone detection based on similarity of ui structure | |
CN112395603B (zh) | 基于指令执行序列特征的漏洞攻击识别方法、装置及计算机设备 | |
CN111240696A (zh) | 移动恶意程序相似模块提取方法 | |
CN111460449A (zh) | 应用程序识别方法、系统、存储介质以及电子设备 | |
CN116595523A (zh) | 基于动态编排的多引擎文件检测方法、系统、设备及介质 | |
CN112347479B (zh) | 恶意软件检测的误报纠正方法、装置、设备和存储介质 | |
CN110069926B (zh) | Android重打包应用的恶意代码定位方法、存储介质和终端 | |
Liu et al. | Android malware detection based on multi-features | |
CN114491528A (zh) | 恶意软件的检测方法、装置和设备 | |
CN112883375A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200605 |