CN111339531A - 恶意代码的检测方法、装置、存储介质及电子设备 - Google Patents
恶意代码的检测方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111339531A CN111339531A CN202010113038.5A CN202010113038A CN111339531A CN 111339531 A CN111339531 A CN 111339531A CN 202010113038 A CN202010113038 A CN 202010113038A CN 111339531 A CN111339531 A CN 111339531A
- Authority
- CN
- China
- Prior art keywords
- code
- detected
- malicious
- information
- callback
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 36
- 230000006870 function Effects 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 5
- 238000005295 random walk Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 239000013598 vector Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种恶意代码的检测方法、检测装置、计算机可读存储介质以及电子设备,通过提取待检测代码的特征信息,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
Description
技术领域
本发明涉及应用程序领域,具体涉及一种应用程序的恶意代码的检测方法、检测装置、计算机可读存储介质及电子设备。
背景技术
随着手机等移动终端的普及化,越来越多的应用于手机上的应用程序也随之产生,并且由于很多的应用程序在安装的过程中会获取用户的个人信息,例如通讯录信息、个人身份信息,虽然部分应用程序获取个人信息是用户实名验证等,但是还有部分应用程序则是通过窃取用户的个人信息并通过非正规途径获利,因此,需要对此类有泄露个人信息的应用程序进行识别,以提高用户的个人信息的安全性。
应用程序中通常会包含多个应用程序接口(Application ProgrammingInterface,简称API),即应用程序会调用多个函数(称之为回调函数),而恶意获取用户的个人信息的代码通常会存在于其中一个或多个回调函数中,因此,需要一种简称应用程序的代码或者其中各个回调函数中是否存在恶意代码。
发明内容
有鉴于此,本发明实施例致力于提供一种恶意代码的检测方法、检测装置、计算机可读存储介质以及电子设备,通过提取待检测代码的特征信息,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
根据本发明的一方面,本发明一实施例提供的一种恶意代码的检测方法,包括:获取待检测代码;其中所述待检测代码包括至少一个回调函数;提取所述待检测代码的特征信息;计算所述待检测代码的特征信息与典型恶意代码的特征信息的相似度;以及当所述相似度大于预设的相似度阈值时,确定所述待检测代码为恶意代码。
在一实施例中,所述待检测代码包括多个回调函数;所述待检测代码的特征信息包括所述多个回调函数的内部代码信息和所述多个回调函数之间的序列信息。
在一实施例中,所述多个回调函数之间的序列信息的获取方式包括:基于所述多个回调函数,构建回调图;以及通过随机游走的方式,获取所述多个回调函数之间的序列信息。
在一实施例中,所述多个回调函数的内部代码信息的获取方式包括:分别将所述多个回调函数中每个回调函数的内部代码转化为抽象语法树中的多个节点;以及根据所述抽象语法树中的多个节点,形成所述多个回调函数中每个回调函数的内部代码信息。
在一实施例中,所述待检测代码的特征信息包括如下信息中的一个或多个的组合:函数名称、返回值类型、函数参数列表;和/或所述典型恶意代码的特征信息包括如下信息中的一个或多个的组合:函数名称、返回值类型、函数参数列表。
在一实施例中,所述典型恶意代码包括多个恶意应用程序类别。
在一实施例中,所述检测方法还包括:当所述相似度小于或等于所述相似度阈值时,确定所述待检测代码为非恶意代码。
根据本发明的另一方面,本发明一实施例提供的一种恶意代码的检测装置,包括:获取模块,用于获取待检测代码;其中所述待检测代码包括至少一个回调函数;提取模块,用于提取所述待检测代码的特征信息;计算模块,用于计算所述待检测代码的特征信息与典型恶意代码的特征信息的相似度;以及确定模块,用于当所述相似度大于预设的相似度阈值时,确定所述待检测代码为恶意代码。
根据本发明的另一方面,本发明一实施例提供的一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的检测方法。
根据本发明的另一方面,本发明一实施例提供的一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于执行上述任一所述的检测方法。
本发明实施例提供的一种恶意代码的检测方法、检测装置、计算机可读存储介质以及电子设备,通过提取待检测代码的特征信息,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
附图说明
图1所示为本申请一实施例提供的一种恶意代码的检测方法的流程图。
图2所示为本申请一实施例提供的多个回调函数之间的序列信息的获取方式的流程图。
图3所示为本申请一实施例提供的回调函数的内部代码信息的获取方式的流程图。
图4所示为本申请另一实施例提供的一种恶意代码的检测方法的流程图。
图5所示为本申请一实施例提供的一种恶意代码的检测装置的结构示意图。
图6是本申请一示例性实施例提供的电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,在示例性实施例中,因为相同的参考标记表示具有相同结构的相同部件或相同方法的相同步骤,如果示例性地描述了一实施例,则在其他示例性实施例中仅描述与已描述实施例不同的结构或方法。
在整个说明书及权利要求书中,当一个部件描述为“连接”到另一部件,该一个部件可以“直接连接”到另一部件,或者通过第三部件“电连接”到另一部件。此外,除非明确地进行相反的描述,术语“包括”及其相应术语应仅理解为包括所述部件,而不应该理解为排除任何其他部件。
如背景技术中所述,越来越多的应用程序为广大用户提供了使用便利,但是由于对于应用程序的监管难度比较大,而应用程序的复杂程度也越来越高,因此,用户几乎不可能排除带有恶意代码的应用程序。
然而,应用程序都是由代码组成,并且通常是包括多个回调函数,虽然应用程序本身可以很复杂,但是其包含的回调函数通常是有限的,因此,只要对回调函数进行逻辑识别,即可了解每个回调函数的返回值和参数等信息,从而获知该应用程序是否恶意获取用户的个人信息。
出于上述目的,本申请提供了一种恶意代码的检测方法、检测装置、计算机可读存储介质以及电子设备,通过提取待检测代码的特征信息,其中待检测代码包括至少一个回调函数,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
下面结合附图具体说明本申请提供的恶意代码的检测方法、检测装置、计算机可读存储介质以及电子设备的具体实现方式:
图1所示为本申请一实施例提供的一种恶意代码的检测方法的流程图。如图1所示,该恶意代码的检测方法包括如下步骤:
步骤110:获取待检测代码;其中待检测代码包括至少一个回调函数。
可以将应用程序对应的代码作为待检测代码,也可以将应用程序中可疑的部分代码作为待检测代码进行检测,其中待检测代码包括至少一个回调函数,或者将一个或多个函数作为代检测代码,通常一个恶意的待检测代码会包括多个回调函数的配合实现,即通常待检测代码包括多个回调函数。本申请实施例中的待检测代码可以是应用程序的代码(例如android app的代码等),也可以只是一段实现某一特定功能的代码,即待检测代码可以是实现一定功能的程序代码,既可以是完整的应用程序,也可以只是一段功能代码(例如多个函数组成的功能代码),本申请实施例对于待检测代码的具体内容不做限定。
步骤120:提取待检测代码的特征信息。
在获取待检测代码后,提取待检测代码的特征信息,将待检测代码表征为该待检测代码的特征信息。在一实施例中,待检测代码的特征信息可以包括多个回调函数的内部代码信息和多个回调函数之间的序列信息。即待检测代码的特征信息不仅包括其内部的代码信息,例如函数名称、返回值类型、函数参数列表、回调函数的表征代码结构(譬如if语句、for循环语句等关键性的节点信息)等信息,还包括多个回调函数之间的序列信息,即各个回调函数之间的逻辑序列关系,通过同时考虑待检测代码的内部代码信息和多个回调函数之间的序列信息,可以在检测各个回调函数是否为恶意函数的同时,也考虑到各个回调函数之间的联系,如上述通常一个恶意代码会由多个回调函数配合实现,因此,考虑回调函数之间的联系,可以避免非恶意代码的过检和恶意代码的遗漏。例如,待检测代码的其中一个回调函数获取了用户的个人信息,并且将该个人信息返回给一个对外输出的回调函数,这两个回调函数的配合就有泄露用户的个人信息的风险,因此,该待检测代码为恶意代码,对应的应用程序也可以定义为恶意应用程序;而若待检测代码的其中一个回调函数获取了用户的个人信息,并且将该个人信息返回给用户验证用户身份的一个回调函数中,则这两个回调函数的配合就只是用于实名制的验证,并不会泄露用户的个人信息,因此,该待检测代码不是恶意代码,对应的应用程序也可以不是恶意应用程序。
步骤130:计算待检测代码的特征信息与典型恶意代码的特征信息的相似度。
安卓恶意软件数据集(Android Malware Dataset,简称AMD)是恶意app的分类统计数据集。由于AMD将所有的恶意应用程序进行了分类,而很多恶意应用程序在现实应用中很少见或者对于用户的危害较小,出于提高检测效率和检测的准确度的目的考虑,在一实施例中,典型恶意代码包括多个恶意应用程序类别,选取上述恶意应用程序类型中的部分恶意应用程序类型的代码作为,典型恶意代码。优选地,可以手动选取其中的22个子类作为典型恶意代码,并且通过提取选取的典型恶意代码的特性信息来表征典型恶意代码。由于恶意应用程序的类别较多,若逐一去计算待检测代码与恶意应用程序的代码之间的相似度,计算量非常大,并且恶意应用程序中的很多类别在用户日常使用的应用程序中比较少见或者是对用户的危害性较低,因此,在保证用户使用的安全性的前提下,本申请实施例只选取恶意应用程序中的22个子类作为典型恶意代码作为恶意代码识别的参照代码,既可以提高检测的效率,也可以保证其一定的检测精度,同时可以有效提高用户使用的安全性。其中恶意代码的特征信息可以包括如下信息中的一个或多个的组合:函数名称、返回值类型、函数参数列表以及回调函数的表征代码结构(譬如if语句、for循环语句等关键性的节点信息)。其中,提取恶意代码的特征信息的具体实现方式可以是:通过look-up算法用关键词提取典型恶意代码中的相关代码节点,以获取恶意代码的特性信息。应当理解,本申请实施例可以根据实际应用场景的不同而选取恶意代码和待检测代码的不同特性信息,只要所选取的恶意代码的特性信息能够表征恶意代码的相关代码节点且与待检测代码的特信息相对应即可,本申请实施例对于恶意代码和待检测代码的具体特性信息不做限定。
步骤140:当相似度大于预设的相似度阈值时,确定待检测代码为恶意代码。
通过预先设定一个相似度阈值,当待检测代码的特征信息与所选取的恶意代码中人一个的特征信息的相似度大于该相似度阈值时,则可以确定该待检测代码为恶意代码,并且该待检测代码为与其相似度大于相似度阈值的恶意代码对应的类别。
本发明实施例提供的一种恶意代码的检测方法,通过提取待检测代码的特征信息,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
图2所示为本申请一实施例提供的多个回调函数之间的序列信息的获取方式的流程图。如图2所示,该方法包括如下步骤:
步骤210:基于多个回调函数,构建回调图。
如上所述,每个应用程序最多包括有限个回调函数,可以根据这有限个回调函数之间的调用关系,形成回调图(例如数据结构中的普通图),以逻辑分析各个回调函数之间的逻辑序列关系。
步骤220:通过随机游走的方式,获取多个回调函数之间的序列信息。
通过随机游走的方式,让观察节点随机在各个回调函数之间游走,以此获知观察节点在各个回调函数之间游走的先后关系,从而得到多个回调函数之间的序列信息。
通过构建回调图并随机游走,可以准确的获取多个回调函数之间的序列信息,从而得到带检测代码准确的特征信息。
图3所示为本申请一实施例提供的回调函数的内部代码信息的获取方式的流程图。如图3所示,该方法包括如下步骤:
步骤310:分别将多个回调函数中每个回调函数的内部代码转化为抽象语法树中的多个节点。
抽象语法树(Abstract Syntax Tree,简称AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,这里的语法并不会表示出真实语法中出现的每个细节,比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现,而类似于if-condition-then的条件跳转语句,可以使用带有两个分支的节点来表示。将回调函数的内部代码抽象为抽象语法树的结构,可以更好的获知回调函数的内部代码的关键信息,从而简化逻辑分析的过程。
步骤320:根据抽象语法树中的多个节点,形成多个回调函数中每个回调函数的内部代码信息。
在将回调函数的内部代码转化为抽象语法树中的各个节点以形成多个回调函数中每个回调函数的内部代码信息之后,再结合上述实施例获取的回调图,通过分层嵌入的方式得到待检测代码的特征向量,其中该特征向量包括上述抽象语法树中的全部节点信息,还包括各个回调函数之间的序列信息。在一实施例中,可以将抽象语法树中的多个节点信息以及回调图所包含的序列信息作为待检测代码的特征向量的元素。将待检测代码的特征信息都转化为特征向量的元素,并且将上述多个类型的恶意代码的特征信息也转化为特性向量的元素,通过计算待检测代码的特性向量与多个类型的恶意代码的特性向量之间的向量距离(即相似度),从而可以较为准确的检测出待检测代码是否为恶意代码。
图4所示为本申请另一实施例提供的一种恶意代码的检测方法的流程图。如图4所示,上述检测方法还可以包括:
步骤150:当相似度小于或等于相似度阈值时,确定待检测代码为非恶意代码。
当所有类型的恶意代码的特性向量与待检测代码的特征向量之间的相似度都小于或等于相似度阈值时,即说明待检测代码不属于上述任何类型的恶意代码,则可以确定该待检测代码不属于常见的恶意代码,或者该待检测代码对用户的日常使用的威胁较小,因此,可以确定待检测代码为非恶意代码。
图5所示为本申请一实施例提供的一种恶意代码的检测装置的结构示意图。如图5所示,该恶意代码的检测装置40包括:获取模块41,用于获取待检测代码;其中待检测代码包括至少一个回调函数;提取模块42,用于提取待检测代码的特征信息;计算模块43,用于计算待检测代码的特征信息与典型恶意代码的特征信息的相似度;以及确定模块44,用于当相似度大于预设的相似度阈值时,确定待检测代码为恶意代码。
本发明实施例提供的一种恶意代码的检测装置,通过提取待检测代码的特征信息,并计算待检测代码的特征信息与典型恶意代码的特征信息的相似度,当该相似度大于预设的相似度阈值时,确定待检测代码为恶意代码,利用特征信息来检测出待检测代码中的恶意代码或恶意回调函数,可以较为准确的检测出恶意的待检测代码,从而提高了用户的使用安全。
在一实施例中,如图5所示,提取模块42还可以包括子单元:回调图构建单元421,用于基于多个回调函数,构建回调图;序列信息获取单元422,用于通过随机游走的方式,获取多个回调函数之间的序列信息。
在一实施例中,如图5所示,提取模块42还可以包括子单元:语法树转化单元423,用于将多个回调函数中每个回调函数的内部代码转化为抽象语法树中的多个节点;内部代码信息形成单元424,用于根据抽象语法树中的多个节点,形成多个回调函数中每个回调函数的内部代码信息。
在一实施例中,确定模块44可以进一步配置为:当相似度小于或等于相似度阈值时,确定待检测代码为非恶意代码。
下面,参考图6来描述根据本申请实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图6图示了根据本申请实施例的电子设备的框图。
如图6所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的恶意代码的检测方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是第一设备或第二设备时,该输入装置13可以是数据传送装置,用于传送代码的输入信号。在该电子设备是单机设备时,该输入装置13可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
此外,该输入设备13还可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的恶意代码的检测方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的恶意代码的检测方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
为了进一步验证本申请实施所提供的恶意代码的检测方法、检测装置、计算机可读存储介质、电子设备在实际检测恶意代码的过程中有较高的准确度,我们对3777个应用程序代码(其中包括2159个恶意应用程序代码和1618个非恶意应用程序代码)进行检测,结果如下表:
表1不同相似度阈值和不同方法检测出的恶意代码数量表
相似度阈值 | 方法1(数量/个) | 方法2(数量/个) |
0.75 | 1564 | 2068 |
0.8 | 1340 | 1702 |
0.85 | 922 | 1396 |
0.9 | 555 | 897 |
0.95 | 390 | 514 |
表2检测准确度表
相似度阈值 | 方法1(真阳率) | 方法2(真阳率) | 方法1(假阳率) | 方法2(假阳率) |
0.75 | 18.3% | 24% | 0.6% | 0.9% |
0.8 | 25.9% | 42.1% | 1.1% | 1.3% |
0.85 | 42.6% | 65.1% | 2.7% | 2.9% |
0.9 | 62.3% | 79.4% | 3.1% | 3.4% |
0.95 | 72.4% | 95.8% | 4.3% | 5.6% |
注:表1和表2中的方法1是指仅以待检测代码的内部代码信息作为特征向量,方法2是以待检测代码的内部代码信息和多个回调函数之间的序列信息同时作为特征向量(即本申请的分层嵌入方法)。表2中的真阳率为检测出的恶意代码数量占所有恶意代码数量的比例,假阳率为被检测为恶意代码的非恶意代码占所有非恶意代码数量的比例。
由上述表1和表2可以看成,在同时考虑待检测代码的内部代码信息和多个回调函数之间的序列信息时,检测出恶意代码的概率也会有一个较大幅度的提升。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种恶意代码的检测方法,其特征在于,包括:
获取待检测代码;其中所述待检测代码包括至少一个回调函数;
提取所述待检测代码的特征信息;
计算所述待检测代码的特征信息与典型恶意代码的特征信息的相似度;以及
当所述相似度大于预设的相似度阈值时,确定所述待检测代码为恶意代码。
2.根据权利要求1所述的检测方法,其特征在于,所述待检测代码包括多个回调函数;所述待检测代码的特征信息包括所述多个回调函数的内部代码信息和所述多个回调函数之间的序列信息。
3.根据权利要求2所述的检测方法,其特征在于,所述多个回调函数之间的序列信息的获取方式包括:
基于所述多个回调函数,构建回调图;以及
通过随机游走的方式,获取所述多个回调函数之间的序列信息。
4.根据权利要求2所述的检测方法,其特征在于,所述多个回调函数的内部代码信息的获取方式包括:
分别将所述多个回调函数中每个回调函数的内部代码转化为抽象语法树中的多个节点;以及
根据所述抽象语法树中的多个节点,形成所述多个回调函数中每个回调函数的内部代码信息。
5.根据权利要求1所述的检测方法,其特征在于,所述待检测代码的特征信息包括如下信息中的一个或多个的组合:
函数名称、返回值类型、函数参数列表;和/或
所述典型恶意代码的特征信息包括如下信息中的一个或多个的组合:
函数名称、返回值类型、函数参数列表。
6.根据权利要求1所述的检测方法,其特征在于,所述典型恶意代码包括多个恶意应用程序类别。
7.根据权利要求1所述的检测方法,其特征在于,还包括:
当所述相似度小于或等于所述相似度阈值时,确定所述待检测代码为非恶意代码。
8.一种恶意代码的检测装置,其特征在于,包括:
获取模块,用于获取待检测代码;其中所述待检测代码包括至少一个回调函数;
提取模块,用于提取所述待检测代码的特征信息;
计算模块,用于计算所述待检测代码的特征信息与典型恶意代码的特征信息的相似度;以及
确定模块,用于当所述相似度大于预设的相似度阈值时,确定所述待检测代码为恶意代码。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7任一所述的检测方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于执行上述权利要求1-7任一所述的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113038.5A CN111339531B (zh) | 2020-02-24 | 2020-02-24 | 恶意代码的检测方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113038.5A CN111339531B (zh) | 2020-02-24 | 2020-02-24 | 恶意代码的检测方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111339531A true CN111339531A (zh) | 2020-06-26 |
CN111339531B CN111339531B (zh) | 2023-12-19 |
Family
ID=71185512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010113038.5A Active CN111339531B (zh) | 2020-02-24 | 2020-02-24 | 恶意代码的检测方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111339531B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988592A (zh) * | 2021-04-07 | 2021-06-18 | 北京字节跳动网络技术有限公司 | 代码检测方法、装置、设备和存储介质 |
CN114489756A (zh) * | 2022-01-29 | 2022-05-13 | 建信金融科技有限责任公司 | 一种代码的质量评估方法、装置、设备及可读存储介质 |
CN115577363A (zh) * | 2022-09-15 | 2023-01-06 | 华北电力科学研究院有限责任公司 | 恶意代码反序列化利用链的检测方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015056885A1 (ko) * | 2013-10-16 | 2015-04-23 | (주)이스트소프트 | 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법 |
CN105653949A (zh) * | 2014-11-17 | 2016-06-08 | 华为技术有限公司 | 一种恶意程序检测方法及装置 |
CN106951780A (zh) * | 2017-02-08 | 2017-07-14 | 中国科学院信息工程研究所 | 重打包恶意应用的静态检测方法和装置 |
CN107122659A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种快速定位Android应用软件中恶意代码或漏洞的方法 |
CN108256325A (zh) * | 2016-12-29 | 2018-07-06 | 中移(苏州)软件技术有限公司 | 一种恶意代码变种的检测的方法和装置 |
CN108334776A (zh) * | 2017-01-19 | 2018-07-27 | 中国移动通信有限公司研究院 | 一种变形恶意代码的检测方法及装置 |
CN109472145A (zh) * | 2017-12-29 | 2019-03-15 | 北京安天网络安全技术有限公司 | 一种基于图论的代码复用识别方法及系统 |
-
2020
- 2020-02-24 CN CN202010113038.5A patent/CN111339531B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015056885A1 (ko) * | 2013-10-16 | 2015-04-23 | (주)이스트소프트 | 안드로이드 악성 애플리케이션의 탐지장치 및 탐지방법 |
CN105653949A (zh) * | 2014-11-17 | 2016-06-08 | 华为技术有限公司 | 一种恶意程序检测方法及装置 |
CN108256325A (zh) * | 2016-12-29 | 2018-07-06 | 中移(苏州)软件技术有限公司 | 一种恶意代码变种的检测的方法和装置 |
CN108334776A (zh) * | 2017-01-19 | 2018-07-27 | 中国移动通信有限公司研究院 | 一种变形恶意代码的检测方法及装置 |
CN106951780A (zh) * | 2017-02-08 | 2017-07-14 | 中国科学院信息工程研究所 | 重打包恶意应用的静态检测方法和装置 |
CN107122659A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种快速定位Android应用软件中恶意代码或漏洞的方法 |
CN109472145A (zh) * | 2017-12-29 | 2019-03-15 | 北京安天网络安全技术有限公司 | 一种基于图论的代码复用识别方法及系统 |
Non-Patent Citations (1)
Title |
---|
SHENGQIAN YANG等: ""Static Control-Flow Analysis of User-Driven Callbacks in Android Applications"" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988592A (zh) * | 2021-04-07 | 2021-06-18 | 北京字节跳动网络技术有限公司 | 代码检测方法、装置、设备和存储介质 |
CN112988592B (zh) * | 2021-04-07 | 2024-04-30 | 北京字节跳动网络技术有限公司 | 代码检测方法、装置、设备和存储介质 |
CN114489756A (zh) * | 2022-01-29 | 2022-05-13 | 建信金融科技有限责任公司 | 一种代码的质量评估方法、装置、设备及可读存储介质 |
CN115577363A (zh) * | 2022-09-15 | 2023-01-06 | 华北电力科学研究院有限责任公司 | 恶意代码反序列化利用链的检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111339531B (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111339531B (zh) | 恶意代码的检测方法、装置、存储介质及电子设备 | |
US9798981B2 (en) | Determining malware based on signal tokens | |
CN108614970B (zh) | 病毒程序的检测方法、模型训练方法、装置及设备 | |
CN109344611B (zh) | 应用的访问控制方法、终端设备及介质 | |
Zhu et al. | Android malware detection based on multi-head squeeze-and-excitation residual network | |
KR20120078018A (ko) | 파일 유전자 지도를 이용하여 파일의 악성코드 포함 여부를 판단하는 방법 및 시스템 | |
EP3051767A1 (en) | Method and apparatus for automatically identifying signature of malicious traffic using latent dirichlet allocation | |
CN101593253A (zh) | 一种恶意程序判断方法及装置 | |
CN105431859A (zh) | 指示恶意软件的信号标记 | |
CN108600162B (zh) | 用户认证方法及装置、计算设备及计算机存储介质 | |
JP2018508892A (ja) | 装置指紋をインターネット装置に割り当てるための方法及び機器 | |
CN113542442A (zh) | 一种恶意域名检测方法、装置、设备及存储介质 | |
CN113886821A (zh) | 基于孪生网络的恶意进程识别方法、装置、电子设备及存储介质 | |
CN113139185A (zh) | 基于异质信息网络的恶意代码检测方法及系统 | |
CN109992960B (zh) | 一种伪造参数检测方法、装置、电子设备及存储介质 | |
CN114143074B (zh) | webshell攻击识别装置及方法 | |
CN113452700B (zh) | 处理安全信息的方法、装置、设备以及存储介质 | |
CN116028917A (zh) | 权限检测方法及装置、存储介质及电子设备 | |
Shi et al. | SFCGDroid: android malware detection based on sensitive function call graph | |
CN114925365A (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
CN114266045A (zh) | 网络病毒的识别方法、装置、计算机设备及存储介质 | |
CN114297735A (zh) | 数据处理方法及相关装置 | |
CN114266046A (zh) | 网络病毒的识别方法、装置、计算机设备及存储介质 | |
KR102465307B1 (ko) | 화이트 리스트 생성 방법 및 이를 수행하는 사용자 단말, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 |
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 |