CN113946830B - 基于多模态检测的Android APP漏洞细粒度检测方法 - Google Patents
基于多模态检测的Android APP漏洞细粒度检测方法 Download PDFInfo
- Publication number
- CN113946830B CN113946830B CN202111175586.1A CN202111175586A CN113946830B CN 113946830 B CN113946830 B CN 113946830B CN 202111175586 A CN202111175586 A CN 202111175586A CN 113946830 B CN113946830 B CN 113946830B
- Authority
- CN
- China
- Prior art keywords
- code
- java
- smali
- slice
- detection
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 63
- 230000004927 fusion Effects 0.000 claims abstract description 27
- 239000013598 vector Substances 0.000 claims abstract description 16
- 238000013136 deep learning model Methods 0.000 claims abstract description 13
- 239000012634 fragment Substances 0.000 claims description 9
- 230000002452 interceptive effect Effects 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007500 overflow downdraw method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了基于多模态检测的Android APP漏洞细粒度检测方法,包括以下步骤:S1、选择需要进行检测的APP;S2、对APP的Java源代码编译形成smali代码;S3、对Java源代码进行分析提取细粒度的代码片段java code slice;S4、从smali代码中匹配java code slice形成代码片段smali code slice;S5、将code slice进行转换为向量形式;S6、对向量形式的java code slice和smali codeslice进行多模态早期融合,对两个数据的简单相加后去除冗余数据,得到融合的向量数据;S7、将三种独立的数据通过三个独立的BLSTM深度学习模型得到三个独立的检测结果;S8、将三个检测结果通过多模态晚期融合,综合三个检测结果做出检测结论。本发明方法能够更高准确率、更快速率以及细粒度的完成漏洞检测工作。
Description
技术领域
本发明属于代码漏洞检测技术领域,具体涉及基于多模态检测的Android APP漏洞细粒度检测方法。
背景技术
静态漏洞检测技术广泛应用于软件开发及测试当中。它通过扫描软件源代码分析其词法、语法、控制流、数据流等信息来挖掘隐藏在软件中的漏洞。传统的静态漏洞检测技术往往需要大量的人工交互,以及先验知识,这些知识依赖于经验和专业知识,因此造成昂贵的人工成本。随着深度学习的快速发展,人们将静态漏洞检测与深度学习结合,减少漏洞检测过程中的人工介入。但是这些基于深度学习的漏洞检测方案往往有着各种的局限性,例如检测准确率低、检测粒度粗、检测范围小等问题。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提出一种基于多模态检测的Android APP漏洞细粒度检测方法,方法能够更高准确率,更快速率以及细粒度的完成漏洞检测工作。
为了达到上述目的,本发明采用以下技术方案:
基于多模态检测的Android APP漏洞细粒度检测方法,包括以下步骤:
S1、选择需要进行漏洞检测的Android APP;
S2、对Android APP的Java源代码进行编译形成smali代码;
S3、对Java源代码进行分析提取细粒度的代码片段java code slice;
S4、从smali代码中匹配java code slice形成代码片段smali code slice;
S5、通过预训练完成Word2vec模型将code slice转换为向量形式;
S6、对向量形式的java code slice和smali code slice进行多模态早期融合,对两个code slice叠加后去除两者之间的冗余数据,最后得到一个融合过的向量数据fusioncode slice;
S7、将提取到的java code slice、smali code slice以及fusion code slice作为三个不同的数据集,输入三个独立的BLSTM深度学习模型,三种不同的code slice通过BLSTM深度学习模型最后得到三个独立的检测结果,检测结果以0和1作为展示,其中0代表该片段存在漏洞,1代表该片段不存在漏洞;
S8、对三个判断该code slice是否存在漏洞的检测结果进行投票,以多数为主从而得到该code slice是否存在漏洞的综合判断结果,实现多模态晚期融合。
进一步的,步骤S2具体包括以下步骤:
S21、将java源代码文件通过javac编译为.class文件;
S22、将.class文件通过Android SDK提供的工具编译成dex文件;
S23、使用smali.jar将dex文件转为smali文件。
进一步的,步骤S3具体包括以下步骤:
S31、使用代码分析工具解析java源代码,提取代码的控制流程和代码的程序依赖图;
S32、通过控制流图和程序依赖图,从java源代码中提取相互影响的语句,将相互影响的语句按照执行顺序进行排序合并为一个代码片段java code slice。
进一步的,步骤S4具体包括以下步骤:
S41、使用反编译工具,通过smali文件中的代码行数和变量别名信息,还原为原始的java代码;
S42、通过对比java code slice和还原的java代码的语句类型和执行顺序,选择匹配度最高的一系列语句,提取该系列语句对应的smali语句,按照java code slice中语句顺序进行排序,最后组成与java code slice相对应的smali code slice。
进一步的,Word2vec是一个将所有词转换为向量的工具,通过Word2vec转换后的词与词之间可以定量去度量他们的关系,挖掘词之间的联系;将提取到的java code slice和smali code slice通过分词形成语料库,利用该语料库对Word2vec模型进行训练,训练完成的Word2vec模型更好地体现每个不同词之间的关系。
进一步的,BLSTM深度学习模型包括输入层、双向LSTM层、Dense层、Softmax层以及输出层。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明提出了一个细粒度检测漏洞的方案。它对软件代码进行分析,通过代码的控制流图(CFG)以及程序依赖图(PDG)从代码中一个个小型的代码片段,运用神经网络对这些片段进行检测,从而缩小漏洞可能存在的范围,可以更好更快的定位漏洞位置。
2、本发明提出结合使用Android APP的Java代码和对应的smali代码,对比使用单一代码的漏洞检测方案,这种方案可以同时检测到两种数据所能检测到漏洞类型,大大增加了漏洞发现的类型。
3、本发明提出将多模态机器学习与漏洞检测相结合,通过结合考虑不同模态带来的特征信息从而做出漏洞检测决策,这样大大提高了漏洞检测的准确率。
附图说明
图1是本发明方法的流程图;
图2是本发明实施例smali code slice提取流程图;
图3是本发明实施例多模态混合融合示意图;
图4是本发明实施例BLSTTM深度学习模型结构图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所示,本发明,基于多模态检测的Android APP漏洞细粒度检测方法,包括以下步骤:
S1、选择需要进行漏洞检测的Android APP;
S2、对Android APP的Java源代码进行变异形成smali代码;在本实施例中,步骤S2具体包括以下子步骤:
S21、对Java源代码文件通过javac编译为.class文件;
S22、对.class文件通过android SDK提供的工具编译成dex文件;
S23、使用smali.jar将dex文件转为smali文件。
S3、对java源代码进行分析提取细粒度的代码片段java code slice;在本实施例中,具体包括以下子步骤:
S31、使用代码分析工具解析java源代码,提取代码的控制流程和代码的程序依赖图;
S32、通过控制流图和程序依赖图,从Java源代码中提取相互影响的语句,将相互影响的语句按照执行顺序进行排序合并为一个代码片段java code slice;
S4、从smali代码中匹配java code slice形成代码片段smali code slice;在本实施例中,具体包括以下子步骤:
S41、使用反编译工具,通过smali文件中的代码行数和变量别名等信息,最大程度还原为原始的java代码;
S42、通过对比java code slice和还原的java代码的语句类型、执行顺序等信息,选择匹配度最高的一系列语句,提取该系列语句对应的smali语句,按照java code slice中语句顺序进行排序,最后组成与java code slice相对应的smali code slice;
如图2所示,为smali code slice提取流程图。
S5、通过预训练完成Word2vec模型对code slice进行转换为向量形式;
其中,Word2vec是一个将所有词转换为向量的工具,通过Word2vec转换后的词与词之间可以定量去度量他们的关系,挖掘词之间的联系;将提取到的java code slice和smali code slice通过分词形成语料库,利用该语料库对Word2vec模型进行训练,训练完成的Word2vec模型更好地体现每个不同词之间的关系。
S6、对向量形式的java code slice和smali code slice进行多模态早期融合,对两个code slice叠加后去除两者之间的冗余数据,最后得到一个融合过的向量数据fusioncode slice;
S7、将提取到的java code slice、smali code slice以及fusion code slice作为三个不同的数据集,输入三个独立的BLSTM深度学习模型,三种不同的code slice通过BLSTM深度学习模型最后得到三个独立的检测结果;检测结果以0和1作为展示,其中0代表该片段存在漏洞,1代表该片段不存在漏洞;BLSTM深度学习模型包括输入层、双向LSTM层、Dense层、Softmax层以及输出层,其结构如图4所示。
S8、对三个判断该code slice是否存在漏洞的检测结果进行投票,以多数为主从而得到该code slice是否存在漏洞的综合判断结果,实现多模态晚期融合。即实现多模态混合融合。
其中,多模态晚期融合与多模态早期融合的数据层面和特征层面的融合不同,晚期融合是对不同模型的输出结果进行结合考虑,通常采用投票决策,最大值结合,贝叶斯规则结合等结合策略来完成晚期融合。多模态混合融合是结合多模态早期融合和多模态晚期融合后的多模态融合方法,该方法首先通过在数据层面的融合,生成一个新的模态数据,从而完成早期融合。之后在结合考虑多个模态的输出结果后,对多个输出结果进行晚期融合,从而得到最终的输出结果。
如图3所示,为本实施例多模态混合融合示意图。
本发明提出了一个更广泛、高精度、细粒度的Android APP的漏洞检测方法。该方法由三个模块组成:数据采集模块,数据转换模块,漏洞检测模块。在数据采集模块,首先对Android APP的Java源代码进行编译形成smali代码,接着对Java源代码进行分析提取细粒度的代码片段,最后从smali代码中匹配Java代码片段。在数据转换模块,通过训练好的Word2vec模型将数据采集模块生成的代码片段转换为可以被深度学习模型识别的向量形式。在漏洞检测模块,首先将两个不同模态的数据通过多模态早期融合形成新的模态数据,接着将三个不同的模态数据通过三个独立的深度学习模型得出各自的决策。最后将三个结果通过多模态晚期融合做出检测结果。
还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,包括以下步骤:
S1、选择需要进行漏洞检测的Android APP;
S2、对Android APP的Java源代码进行编译形成smali代码;
S3、对Java源代码进行分析提取细粒度的代码片段java code slice;
S4、从smali代码中匹配java code slice形成代码片段smali code slice;
S5、通过预训练完成Word2vec模型将code slice转换为向量形式;
S6、对向量形式的java code slice和smali code slice进行多模态早期融合,对两个code slice叠加后去除两者之间的冗余数据,最后得到一个融合过的向量数据fusioncode slice;
S7、将提取到的java code slice、smali code slice以及fusion code slice作为三个不同的数据集,输入三个独立的BLSTM深度学习模型,三种不同的code slice通过BLSTM深度学习模型最后得到三个独立的检测结果,检测结果以0和1作为展示,其中0代表该片段存在漏洞,1代表该片段不存在漏洞;
S8、对三个判断该code slice是否存在漏洞的检测结果进行投票,以多数为主从而得到该code slice是否存在漏洞的综合判断结果,实现多模态晚期融合。
2.根据权利要求1所述的基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,步骤S2具体包括以下步骤:
S21、将java源代码文件通过javac编译为.class文件;
S22、将.class文件通过Android SDK提供的工具编译成dex文件;
S23、使用smali.jar将dex文件转为smali文件。
3.根据权利要求1所述的基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,步骤S3具体包括以下步骤:
S31、使用代码分析工具解析java源代码,提取代码的控制流程和代码的程序依赖图;
S32、通过控制流图和程序依赖图,从java源代码中提取相互影响的语句,将相互影响的语句按照执行顺序进行排序合并为一个代码片段java code slice。
4.根据权利要求1所述的基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,步骤S4具体包括以下步骤:
S41、使用反编译工具,通过smali文件中的代码行数和变量别名信息,还原为原始的java代码;
S42、通过对比java code slice和还原的java代码的语句类型和执行顺序,选择匹配度最高的一系列语句,提取该系列语句对应的smali语句,按照java code slice中语句顺序进行排序,最后组成与java code slice相对应的smali code slice。
5.根据权利要求1所述的基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,Word2vec是一个将所有词转换为向量的工具,通过Word2vec转换后的词与词之间可以定量去度量他们的关系,挖掘词之间的联系;将提取到的java code slice和smali codeslice通过分词形成语料库,利用该语料库对Word2vec模型进行训练,训练完成的Word2vec模型更好地体现每个不同词之间的关系。
6.根据权利要求1所述的基于多模态检测的Android APP漏洞细粒度检测方法,其特征在于,BLSTM深度学习模型包括输入层、双向LSTM层、Dense层、Softmax层以及输出层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175586.1A CN113946830B (zh) | 2021-10-09 | 2021-10-09 | 基于多模态检测的Android APP漏洞细粒度检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175586.1A CN113946830B (zh) | 2021-10-09 | 2021-10-09 | 基于多模态检测的Android APP漏洞细粒度检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946830A CN113946830A (zh) | 2022-01-18 |
CN113946830B true CN113946830B (zh) | 2024-05-07 |
Family
ID=79329446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175586.1A Active CN113946830B (zh) | 2021-10-09 | 2021-10-09 | 基于多模态检测的Android APP漏洞细粒度检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946830B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017049800A1 (zh) * | 2015-09-23 | 2017-03-30 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
CN106874764A (zh) * | 2017-01-16 | 2017-06-20 | 南开大学 | 一种基于回调函数建模自动生成Android应用回调序列的方法 |
CN108268773A (zh) * | 2016-12-30 | 2018-07-10 | 南京理工大学 | Android应用升级包本地存储安全性检测方法 |
CN111753303A (zh) * | 2020-07-29 | 2020-10-09 | 哈尔滨工业大学 | 一种基于深度学习和强化学习的多粒度代码漏洞检测方法 |
-
2021
- 2021-10-09 CN CN202111175586.1A patent/CN113946830B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017049800A1 (zh) * | 2015-09-23 | 2017-03-30 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
CN108268773A (zh) * | 2016-12-30 | 2018-07-10 | 南京理工大学 | Android应用升级包本地存储安全性检测方法 |
CN106874764A (zh) * | 2017-01-16 | 2017-06-20 | 南开大学 | 一种基于回调函数建模自动生成Android应用回调序列的方法 |
CN111753303A (zh) * | 2020-07-29 | 2020-10-09 | 哈尔滨工业大学 | 一种基于深度学习和强化学习的多粒度代码漏洞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113946830A (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110348214B (zh) | 对恶意代码检测的方法及系统 | |
US8051410B2 (en) | Apparatus for migration and conversion of software code from any source platform to any target platform | |
CN106462399B (zh) | 代码推荐 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
CN107220235A (zh) | 基于人工智能的语音识别纠错方法、装置及存储介质 | |
CN110232280B (zh) | 一种基于树结构卷积神经网络的软件安全漏洞检测方法 | |
CN112579469A (zh) | 一种源代码缺陷检测方法与装置 | |
CN117746078B (zh) | 一种基于用户自定义类别的物体检测方法及系统 | |
CN115562721A (zh) | 一种从汇编语言中挖掘特征的克隆代码检测方法及系统 | |
CN117540389A (zh) | 一种基于签名的模型源代码漏洞检测方法 | |
CN116627490A (zh) | 一种智能合约字节码相似性检测方法 | |
CN104484156B (zh) | 多语言公式的编辑方法、编辑系统和多语言公式编辑器 | |
CN113946830B (zh) | 基于多模态检测的Android APP漏洞细粒度检测方法 | |
Mathur et al. | LayerDoc: layer-wise extraction of spatial hierarchical structure in visually-rich documents | |
CN104536880B (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
CN111666748B (zh) | 一种自动化分类器的构造方法以及识别决策的方法 | |
Yashaswini et al. | HTML Code Generation from Website Images and Sketches using Deep Learning-Based Encoder-Decoder Model | |
KR102019752B1 (ko) | 컴퓨터 수행 가능한 ui/ux 전략제공방법 및 이를 수행하는 ui/ux 전략제공장치 | |
KR20180093734A (ko) | 통신 데이터 모델링 방법 | |
CN106845224A (zh) | 一种恶意程序识别系统 | |
KR20230082792A (ko) | 소스코드 보안 취약점의 종류를 구별하는 인공지능 기반의 구별 모델의 생성을 통해 소스코드에 대한 보안 취약점의 종류를 확인할 수 있도록 지원하는 전자 장치 및 그 동작 방법 | |
CN114357984A (zh) | 一种基于拼音的同音字变体处理方法 | |
KR102131423B1 (ko) | 문서의 자동 컴파일 방법 및 장치 | |
CN113778902A (zh) | 测试案例覆盖度的检测方法及装置 | |
CN109656543B (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 |