CN114817924A - 基于ast和跨层分析的安卓恶意软件检测方法及系统 - Google Patents
基于ast和跨层分析的安卓恶意软件检测方法及系统 Download PDFInfo
- Publication number
- CN114817924A CN114817924A CN202210544603.2A CN202210544603A CN114817924A CN 114817924 A CN114817924 A CN 114817924A CN 202210544603 A CN202210544603 A CN 202210544603A CN 114817924 A CN114817924 A CN 114817924A
- Authority
- CN
- China
- Prior art keywords
- node
- function call
- code
- graph
- call 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.)
- Granted
Links
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/353—Clustering; Classification into predefined classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
- G06F18/253—Fusion techniques of extracted features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种基于AST和跨层分析的安卓恶意软件检测方法及系统,属于恶意代码分析技术领域,主要解决现有基于函数调用图中忽视敏感节点祖先节点代码语义信息以及函数调用图生成忽略Native层部分等问题。主要方案包括对待测AndroidAPK文件进行静态反编译以获取其Java层代码与Native层代码并生成函数调用图FCG;根据Java层代码中对Native层函数的调用将两部分FCG合成完整的FCG;基于敏感API对FCG进行简化,从而得到简化FCG;对非敏感API节点进行代码分析,生成对应的抽象语法树;使用图神经网络对融合了代码语义的简化FCG信息进行学习;将训练好的检测模型用于对Android恶意软件进行检测与识别。
Description
技术领域
本发明属于恶意代码分析技术领域,提供了一种基于AST和跨层分析的安卓恶意软件检测方法及系统,具体的是一种使用图嵌入、跨层代码分析、抽象语法树(AST)以及图神经网络对安卓软件进行分析以及分类的方法,其分析的对象为安卓软件,可自动输出该安卓软件是否为恶意软件。
背景技术
随着数字化发展逐渐成为了发展中的一大主题,移动智能设备在这个时代中发挥着极其重要的作用,例如移动支付、网络购物以及人际交往等等。而Android操作系统因为其开源性、可扩展性等优点,逐渐成为移动终端以及物联网设备中使用最为广泛的操作系统之一。随之而来的是大量出现的Android恶意软件,这些恶意软件对互联网的威胁正快速增大,因此,对Android恶意软件智能识别相关技术的研究具有重要意义。
在恶意软件检测技术与检测规避技术的博弈中,二者不断发展。早期基于签名和特征匹配的检测方法已经不能用于每日新增的大量恶意程序的检测。随着人工智能技术的再度兴起,使用机器学习的方法逐渐成为了恶意软件分类的研究热点,其中使用深度学习的方法目前在检测和分类任务中表现良好。在对安卓恶意软件检测的研究中,图神经网络表现出很大的潜力,对于图结构数据这种非欧几里得数据,它能够更好地处理并分析,相比处理文本、图像和语音等数据的传统深度学习模型,它能够更好地挖掘恶意行为的特征。
在文献《GDroid: Android malware detection and classification withgraph convolutional network》中,Gao等人将应用程序和API映射成一个大的异构图,将原始问题转换为节点分类任务,然后通过GCN对异构图进行嵌入和后续的分类。该方法存在以下问题:
(1)虽然利用了代码中的语义信息,但仅仅是利用了API调用及使用模式相关的这一部分信息,对代码语义的使用并不充分;
(2)其使用的图结构数据是用来获取APP之间的关系,而并不是对APP自身行为的表征;
(3)其只分析了Java层代码,而忽视了Native层代码部分。
在文献《OpCode-Level Function Call Graph Based Android MalwareClassification Using Deep Learning》中,Niu等人使用FlowDroid为给定的APK文件生成函数调用图,并获取不同函数的代码文件,然后重新组织字节码顺序,得到opcode级别的函数调用图,最终使用LSTM对给定的AndroidAPK进行分类。该方法存在以下问题:
(1)在函数调用图的生成中只考虑了Java层代码,而忽视了Native层的代码,这使得获得的函数调用图并不完整;
(2)在对代码语义的表示中,使用自然语言处理对其进行处理,并未考虑到代码自身的结构;
(3)在对函数调用图时,基于opcode序列进行来拆分,一定程度上破坏了函数调用图的拓扑信息。
发明内容
针对上述问题,本发明旨在提出一种基于AST和跨层分析的安卓恶意软件检测方法及系统,能够对安卓恶意软件的代码进行跨层(Java层和Native层)分析,有效、完整地表征恶意软件的恶意行为,从而对恶意软件进行更加精准的分析;能够获取更加结构化和细粒度的语义信息;能够对结合了代码语义的FCG进行充分的学习,从而实现对Android恶意软件的精确检测。
为了达到上述目的,本发明采用如下技术方案:
一种基于AST和跨层分析的安卓恶意软件检测方法,包括如下步骤:
步骤1:对AndroidAPK文件进行静态反编译,获取其Java层代码Smali文件和Native层代码SO文件;
步骤2:对步骤1中获得的Smali文件和SO文件使用静态分析工具进行处理,分别生成Java层和Native层的函数调用图;
步骤3:对步骤2中生成的Java层和Native层函数调用图,基于Java层代码中对Native函数的声明,将Java层的函数调用图与Native层的函数调用图连接起来,生成完整的函数调用图,此步骤将Android应用程序所有可执行代码的函数调用图都考虑进去,相比先前聚焦于Java层函数调用,完整调用图能够体现Native层的调用情况,以及能够发现通过Native层函数调用Java层的敏感API;
步骤4:对步骤3中生成的完整函数调用图,基于敏感API对函数调用图进行简化,只保留敏感API节点,以及敏感API节点的父节点和其他祖先节点,得到简化函数调用图,由于Android应用程序不一定调用Native层的所有函数,同时也不是所有函数调用都与恶意行为,通过此步骤,可以更加聚焦恶意行为,同时减小图的规模,从而降低计算成本;
步骤5:对步骤4中生成的简化函数调用图,针对其中的Java层非敏感API节点对应的Smali文件进行代码解析,生成其对应的Java层非敏感节点抽象语法树AST,相比其他方法中使用文本处理的方法处理代码,抽象语法树能更好地表征代码的语义与结构;
步骤6:对于步骤5中生成的Java层非敏感节点抽象语法树,使用图嵌入方法生成抽象语法树的节点的代码特征向量,相比其他的向量化方法,图嵌入不仅能保存图的节点特征,同时能保存图的拓朴特征;
步骤7:将步骤4中生成的简化函数调用图与步骤6中生成的代码特征向量相融合,生成融合了代码语义的简化函数调用图;
步骤8:对于步骤7中生成的融合了代码语义的简化函数调用图,以图拓扑结构和节点代码语义特征作为图特征,使用图神经网络对其进行学习,得到训练好的智能分类器,相比其他深度学习方法,图神经网络能够对图结构数据进行更好的学习;
步骤9:使用训练好的智能分类器对待测Android APK文件进行分类,得到该APK的分类结果。
上述技术方案中,所述步骤2的具体步骤为:
对Android APK使用静态分析工具Androguard中的cg命令,生成Java层函数调用图;
对步骤1中获得的SO文件,使用二进制分析工具Angr,生成Native层函数调用图。
上述技术方案中,所述步骤3的具体步骤为:
对步骤1中获得的Smali文件,检索Smali文件所有的方法信息,提取从Java层代码调用Native层代码的进入方法;并从进入方法开始跟踪Native函数调用提取退出方法;根据上述过程中提取到的进入方法和退出方法,将步骤2中生成的Java层函数调用图和Native层函数调用图连接起来,生成完整的函数调用图。
上述技术方案中,所述步骤4的具体步骤为:
对步骤3中生成的完整函数调用图,基于敏感API进行简化,具体来说,首先找到所有的敏感API节点;再以敏感API节点为终点,根据调用关系追溯其始点,即敏感API节点的父节点;再以父节点作为终点,根据调用关系追溯其始点,即敏感API节点的祖先节点;依次递归,直至追溯到函数调用图的起始调用节点;保留上述所有节点,删除其他节点,生成简化函数调用图。
上述技术方案中,所述步骤5的具体步骤为:
对于步骤4中生成的简化函数调用图,首先找到所有的Java层非敏感API节点;根据Java层非敏感API节点对应的方法名,检索到该节点对应的Smali文件;使用代码解析工具Antlr对该Smali文件进行解析,生成对应的Java层非敏感节点抽象语法树AST。
上述技术方案中,所述步骤6的具体步骤为:
对于步骤5中生成的Java层非敏感节点抽象语法树,以其拓扑结构和节点特征作为图特征,使用图嵌入中node2vec算法生成其对应的代码特征向量。
上述技术方案中,所述步骤7的具体步骤为:
对于步骤4中生成的简化函数调用图,将其与步骤6中生成的代码特征向量相融合,具体来说,
简化函数调用图中包含Java层敏感节点、Java层非敏感节点以及Native层节点三类节点;
用长度为L的向量表征节点的代码语义,用长度为X的向量表征节点对应的函数类型;
对于Java层敏感节点,由于Java层敏感节点代码语义是固定的,通过Java层敏感节点的API类型来进行特征表示,使用Java层敏感节点的敏感API种类作为X长度向量部分,L长度向量部分均设置为0;
对于Java层非敏感节点, Java层非敏感节点为自定义函数,我们更加关注其代码,而不关注其函数名,使用Java层非敏感节点的对应的抽象语法树代码特征向量作为L长度向量,X长度向量部分均设置为0;
对于Native层节点,只作增加函数调用图的连通性的用途,故将L+X长度向量均设置为0;
综上,生成融合了代码语义的简化函数调用图,其中每个节点的特征向量的长度均为L+X。
本发明还提供了一种基于AST和跨层分析的安卓恶意软件检测系统,其特征在于,包括:
程序分析模块:用于对AndroidAPK文件进行反编译,得到Android应用程序的Smali文件与SO文件;
图构造模块:用于对程序分析模块中得到的Smali文件和SO文件进行分析,生成Java层和Native层代码的函数调用图FCG;并进行两部分的连接与整体的简化,得到简化函数调用图;
解析模块:用于对程序分析模块中得到的指定Smali文件进行解析,生成其对应的抽象语法树,并使用图嵌入方法得到抽象语法树对应节点的代码特征向量;
分类模块:用于将图构造模块生成的简化函数调用图和解析模块生成的代码语义进行融合,然后使用图神经网络对融合代码语义的简化函数调用图FCG进行学习,得到训练好的智能分类器,从而对Android恶意软件进行检测与识别,输出分类结果。
上述技术方案中,所述程序分析模块的具体实现为:
使用Androguard对AndroidAPK文件进行静态反编译,获取其Java层代码Smali文件和Native层代码SO文件。
上述技术方案中,所述图构造模块的具体实现为:
对Android APK使用静态分析工具Androguard中的cg命令,生成Java层函数调用图;对程序分析模块中获得的SO文件,使用二进制分析工具Angr,生成Native层函数调用图;
对程序分析模块中获得的Smali文件,检索其所有的方法信息,提取从Java层代码调用Native层代码的进入方法;并从该进入方法开始跟踪Native函数调用提取退出方法;根据上述过程中提取到的进入方法和退出方法,将步骤2中生成的Java层函数调用图和Native层函数调用图连接起来,生成完整的函数调用图;
对上述过程中生成的完整函数调用图,基于敏感API进行简化,只保留敏感API节点以及敏感API节点的父节点和其他祖先节点,删除其他节点,生成简化函数调用图。
上述技术方案中,所述解析模块的具体实现为:
对于图构造模块中生成的简化函数调用图,针对其中的Java层非敏感API节点,从程序分析模块中得到的Smali文件中检索到其对应的Smali文件;使用代码解析工具Antlr对该Smali文件进行解析,生成对应的Java层非敏感节点抽象语法树AST;
对于上述过程中生成的Java层非敏感节点抽象语法树,以其拓扑结构和节点特征作为图特征,使用图嵌入生成其对应的代码特征向量。
上述技术方案中,所述分类模块的具体实现为:
对于图构造模块中生成的简化函数调用图,将其与解析模块中生成的代码特征向量相融合,具体来说,对于Java层敏感节点,使用其敏感API种类作为节点特征;对于Java层非敏感节点,使用其对应的抽象语法树代码特征向量作为节点特征;对于Native层节点,只作增加函数调用图的连通性的用途,故将节点特征设置为0。综上,生成融合了代码语义的简化函数调用图。
对于上述过程中生成的融合了代码语义的简化函数调用图,以图拓扑结构和节点代码语义特征作为图特征,使用图神经网络对其进行学习,得到训练好的智能分类器;
使用训练好的智能分类器对待测Android APK文件进行分类,得到该APK的分类结果。
本发明同现有技术相比,其有益效果表现为:
一、本发明提出一种跨层的代码分析,构建统一了Java层和Native层代码的完整函数调用图(FCG),能够获取完整的应用程序行为。
二、本发明聚焦于敏感API节点,并只保留敏感API节点及其父节点和其他祖先节点,以此来对完整的FCG进行简化,从而减少计算成本。
三、本发明使用抽象语法树AST和函数调用图FCG结合的方式来同时表示恶意行为的代码语义和行为信息。基于抽象语法树的代码分析有一定程度的抗混淆能力,同时表征代码的语法词法以及结构信息。
四、本发明使用图嵌入和图神经网络对图结构的代码特征以及行为特征进行处理和学习,能够同时考虑到图的节点特征与拓扑特征。
附图说明:
图1是本发明整体工作流程的示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,现在对本发明进行实例说明。
实施例
步骤1:构建数据集,收集安卓良性样本2000个,广告恶意软件500个,银行恶意软件500个,短信恶意软件500个,移动风险软件500个,共计4000个样本,按照8:1:1的比例划分为训练集、验证集与测试集,同时保证每个集合中各类别样本的数量比例均为4:1:1:1:1;
步骤2:对数据集中的所有样本进行处理,包括以下步骤:
步骤2.1:对AndroidAPK文件进行静态反编译,获取其Java层代码Smali文件和Native层代码SO文件;
步骤2.2:对步骤2.1中获得的Smali文件和SO文件使用静态分析工具进行处理,分别生成Java层和Native层的函数调用图;
步骤2.3:对步骤2.2中生成的Java层和Native层函数调用图,基于Java层代码中对Native函数的声明,将Java层的函数调用图与Native层的函数调用图连接起来,生成完整的函数调用图;
步骤2.4:对步骤2.3中生成的完整函数调用图,基于敏感API对函数调用图进行简化,只保留敏感API节点,以及敏感API节点的父节点和其他祖先节点,得到简化函数调用图;
步骤2.5:对步骤2.4中生成的简化函数调用图,针对其中的Java层非敏感API节点对应的Smali文件进行代码解析,生成其对应的Java层非敏感节点抽象语法树AST;
步骤2.6:对于步骤2.5中生成的Java层非敏感节点抽象语法树,使用图嵌入方法生成其节点的代码特征向量;
步骤2.7:将步骤2.4中生成的简化函数调用图与步骤2.6中生成的代码特征向量相融合,生成融合了代码语义的简化函数调用图;
步骤3:对于步骤2中生成的融合了代码语义的简化函数调用图,以图拓扑结构和节点代码语义特征作为图特征,使用图神经网络对数据集中样本的图特征进行学习,得到训练好的智能分类器;
步骤4:使用训练好的智能分类器对待测Android APK(未知分类)进行分类,得到该APK的分类结果,包括以下步骤:
步骤4.1:对AndroidAPK文件进行静态反编译,获取其Java层代码Smali文件和Native层代码SO文件;
步骤4.2:对步骤4.1中获得的Smali文件和SO文件使用静态分析工具进行处理,分别生成Java层和Native层的函数调用图;
步骤4.3:对步骤4.2中生成的Java层和Native层函数调用图,基于Java层代码中对Native函数的声明,将Java层的函数调用图与Native层的函数调用图连接起来,生成完整的函数调用图;
步骤4.4:对步骤4.3中生成的完整函数调用图,基于敏感API对函数调用图进行简化,只保留敏感API节点,以及敏感API节点的父节点和其他祖先节点,得到简化函数调用图;
步骤4.5:对步骤4.4中生成的简化函数调用图,针对其中的Java层非敏感API节点对应的Smali文件进行代码解析,生成其对应的Java层非敏感节点抽象语法树AST;
步骤4.6:对于步骤4.5中生成的Java层非敏感节点抽象语法树,使用图嵌入方法生成其节点的代码特征向量;
步骤4.7:将步骤4.4中生成的简化函数调用图与步骤4.6中生成的代码特征向量相融合,生成融合了代码语义的简化函数调用图;
步骤4.8:对于步骤4.7中生成的融合了代码语义的简化函数调用图,以图拓扑结构和节点代码语义特征作为图特征,将其输入到训练好的智能分类器模型中,输出该Android APK的分类结果,即良性、广告恶意、银行恶意、短信恶意或移动风险类型。
Claims (10)
1.一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,包括如下步骤:
步骤1:对AndroidAPK文件进行静态反编译,获取其Java层代码Smali文件和Native层代码SO文件;
步骤2:对步骤1中获得的Smali文件和SO文件使用静态分析工具进行处理,分别生成Java层和Native层的函数调用图;
步骤3:对步骤2中生成的Java层和Native层函数调用图,基于Java层代码中对Native函数的声明,将Java层的函数调用图与Native层的函数调用图连接起来,生成完整的函数调用图;
步骤4:对步骤3中生成的完整函数调用图,基于敏感API对函数调用图进行简化,只保留敏感API节点,以及敏感API节点的父节点和其他祖先节点,得到简化函数调用图;
步骤5:对步骤4中生成的简化函数调用图,针对其中的Java层非敏感API节点对应的Smali文件进行代码解析,生成其对应的Java层非敏感节点抽象语法树AST;
步骤6:对于步骤5中生成的Java层非敏感节点抽象语法树,使用图嵌入方法生成抽象语法树的节点的代码特征向量;
步骤7:将步骤4中生成的简化函数调用图与步骤6中生成的代码特征向量相融合,生成融合了代码语义的简化函数调用图;
步骤8:对于步骤7中生成的融合了代码语义的简化函数调用图,以图拓扑结构和节点代码语义特征作为图特征,使用图神经网络对其进行学习,得到训练好的智能分类器;
步骤9:使用训练好的智能分类器对待测Android APK文件进行分类,得到该APK的分类结果。
2.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤2的具体步骤为:
对Android APK使用静态分析工具Androguard中的cg命令,生成Java层函数调用图;
对步骤1中获得的SO文件,使用二进制分析工具Angr,生成Native层函数调用图。
3.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤3的具体步骤为:
对步骤1中获得的Smali文件,检索Smali文件所有的方法信息,提取从Java层代码调用Native层代码的进入方法;并从进入方法开始跟踪Native函数调用提取退出方法;根据上述过程中提取到的进入方法和退出方法,将步骤2中生成的Java层函数调用图和Native层函数调用图连接起来,生成完整的函数调用图。
4.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤4的具体步骤为:
对步骤3中生成的完整函数调用图,基于敏感API进行简化,具体来说,首先找到所有的敏感API节点;再以敏感API节点为终点,根据调用关系追溯其始点,即敏感API节点的父节点;再以父节点作为终点,根据调用关系追溯其始点,即敏感API节点的祖先节点;依次递归,直至追溯到函数调用图的起始调用节点;保留上述所有节点,删除其他节点,生成简化函数调用图。
5.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤5的具体步骤为:
对于步骤4中生成的简化函数调用图,首先找到所有的Java层非敏感API节点;根据Java层非敏感API节点对应的方法名,检索到该节点对应的Smali文件;使用代码解析工具Antlr对该Smali文件进行解析,生成对应的Java层非敏感节点抽象语法树AST。
6.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤6的具体步骤为:
对于步骤5中生成的Java层非敏感节点抽象语法树,以其拓扑结构和节点特征作为图特征,使用图嵌入中node2vec算法生成其对应的代码特征向量。
7.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法,其特征在于,所述步骤7的具体步骤为:
对于步骤4中生成的简化函数调用图,将其与步骤6中生成的代码特征向量相融合,具体来说,
简化函数调用图中包含Java层敏感节点、Java层非敏感节点以及Native层节点三类节点;
用长度为L的向量表征节点的代码语义,用长度为X的向量表征节点对应的函数类型;
对于Java层敏感节点,由于Java层敏感节点代码语义是固定的,通过Java层敏感节点的API类型来进行特征表示,使用Java层敏感节点的敏感API种类作为X长度向量部分,L长度向量部分均设置为0;
对于Java层非敏感节点, Java层非敏感节点为自定义函数,我们更加关注其代码,而不关注其函数名,使用Java层非敏感节点的对应的抽象语法树代码特征向量作为L长度向量,X长度向量部分均设置为0;
对于Native层节点,只作增加函数调用图的连通性的用途,故将L+X长度向量均设置为0;
综上,生成融合了代码语义的简化函数调用图,其中每个节点的特征向量的长度均为L+X。
8.一种基于AST和跨层分析的安卓恶意软件检测系统,其特征在于,包括:
程序分析模块:用于对AndroidAPK文件进行反编译,得到Android应用程序的Smali文件与SO文件;
图构造模块:用于对程序分析模块中得到的Smali文件和SO文件进行分析,生成Java层和Native层代码的函数调用图FCG;并进行两部分的连接与整体的简化,得到简化函数调用图;
解析模块:用于对程序分析模块中得到的指定Smali文件进行解析,生成其对应的抽象语法树,并使用图嵌入方法得到抽象语法树对应节点的代码特征向量;
分类模块:用于将图构造模块生成的简化函数调用图和解析模块生成的代码语义进行融合,然后使用图神经网络对融合代码语义的简化函数调用图FCG进行学习,得到训练好的智能分类器,从而对Android恶意软件进行检测与识别,输出分类结果。
9.根据权利要求8所述的一种基于AST和跨层分析的安卓恶意软件检测系统,其特征在于,所述图构造模块的具体实现为:
对Android APK使用静态分析工具Androguard中的cg命令,生成Java层函数调用图;对程序分析模块中获得的SO文件,使用二进制分析工具Angr,生成Native层函数调用图;
对程序分析模块中获得的Smali文件,检索其所有的方法信息,提取从Java层代码调用Native层代码的进入方法;并从该进入方法开始跟踪Native函数调用提取退出方法;根据上述过程中提取到的进入方法和退出方法,将步骤2中生成的Java层函数调用图和Native层函数调用图连接起来,生成完整的函数调用图;
对上述过程中生成的完整函数调用图,基于敏感API进行简化,只保留敏感API节点以及敏感API节点的父节点和其他祖先节点,删除其他节点,生成简化函数调用图。
10.根据权利要求8所述的一种基于AST和跨层分析的安卓恶意软件检测系统,其特征在于,所述解析模块的具体实现为:
对于图构造模块中生成的简化函数调用图,针对其中的Java层非敏感API节点,从程序分析模块中得到的Smali文件中检索到其对应的Smali文件;使用代码解析工具Antlr对该Smali文件进行解析,生成对应的Java层非敏感节点抽象语法树AST;
对于上述过程中生成的Java层非敏感节点抽象语法树,以其拓扑结构和节点特征作为图特征,使用图嵌入生成其对应的代码特征向量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210544603.2A CN114817924B (zh) | 2022-05-19 | 2022-05-19 | 基于ast和跨层分析的安卓恶意软件检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210544603.2A CN114817924B (zh) | 2022-05-19 | 2022-05-19 | 基于ast和跨层分析的安卓恶意软件检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114817924A true CN114817924A (zh) | 2022-07-29 |
CN114817924B CN114817924B (zh) | 2023-04-07 |
Family
ID=82515809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210544603.2A Active CN114817924B (zh) | 2022-05-19 | 2022-05-19 | 基于ast和跨层分析的安卓恶意软件检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114817924B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
CN117574370A (zh) * | 2023-11-28 | 2024-02-20 | 中华人民共和国新疆出入境边防检查总站(新疆维吾尔自治区公安厅边境管理总队) | 一种恶意代码检测系统 |
CN117574370B (zh) * | 2023-11-28 | 2024-05-31 | 中华人民共和国新疆出入境边防检查总站(新疆维吾尔自治区公安厅边境管理总队) | 一种恶意代码检测系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
CN107301347A (zh) * | 2017-07-26 | 2017-10-27 | 南京邮电大学 | 一种基于静态分析获取Hbuilder App调用图的方法 |
CN111538989A (zh) * | 2020-04-22 | 2020-08-14 | 四川大学 | 基于图卷积网络和主题模型的恶意代码同源性分析方法 |
US20210264029A1 (en) * | 2020-02-25 | 2021-08-26 | Agency For Defense Development | Method and apparatus for analyzing malicious code |
CN113360912A (zh) * | 2021-08-09 | 2021-09-07 | 四川大学 | 恶意软件检测方法、装置、设备及存储介质 |
CN113626810A (zh) * | 2021-07-11 | 2021-11-09 | 南京理工大学 | 基于敏感子图的安卓恶意软件检测方法及系统 |
-
2022
- 2022-05-19 CN CN202210544603.2A patent/CN114817924B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
CN107301347A (zh) * | 2017-07-26 | 2017-10-27 | 南京邮电大学 | 一种基于静态分析获取Hbuilder App调用图的方法 |
US20210264029A1 (en) * | 2020-02-25 | 2021-08-26 | Agency For Defense Development | Method and apparatus for analyzing malicious code |
CN111538989A (zh) * | 2020-04-22 | 2020-08-14 | 四川大学 | 基于图卷积网络和主题模型的恶意代码同源性分析方法 |
CN113626810A (zh) * | 2021-07-11 | 2021-11-09 | 南京理工大学 | 基于敏感子图的安卓恶意软件检测方法及系统 |
CN113360912A (zh) * | 2021-08-09 | 2021-09-07 | 四川大学 | 恶意软件检测方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
JOCOB CURTIS等: "Advancing static code analysis with language-component identification", 《IEEE ACCESS》 * |
王婷等: "JavaScript混淆恶意代码检测方法", 《 计算机仿真》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117034273A (zh) * | 2023-08-28 | 2023-11-10 | 山东省计算中心(国家超级计算济南中心) | 基于图卷积网络的安卓恶意软件检测方法及系统 |
CN117574370A (zh) * | 2023-11-28 | 2024-02-20 | 中华人民共和国新疆出入境边防检查总站(新疆维吾尔自治区公安厅边境管理总队) | 一种恶意代码检测系统 |
CN117574370B (zh) * | 2023-11-28 | 2024-05-31 | 中华人民共和国新疆出入境边防检查总站(新疆维吾尔自治区公安厅边境管理总队) | 一种恶意代码检测系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114817924B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753800B (zh) | 融合频繁项集与随机森林算法的Android恶意应用检测方法及系统 | |
CN110837550B (zh) | 基于知识图谱的问答方法、装置、电子设备及存储介质 | |
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
US20200151201A1 (en) | Automated Extraction, Inference and Normalization of Structured Attributes for Product Data | |
US10740678B2 (en) | Concept hierarchies | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
US20190026376A1 (en) | Analyzing Concepts Over Time | |
CN110069252B (zh) | 一种源代码文件多业务标签自动化分类方法 | |
US11017301B2 (en) | Obtaining and using a distributed representation of concepts as vectors | |
US20170132288A1 (en) | Extracting and Denoising Concept Mentions Using Distributed Representations of Concepts | |
TW202020691A (zh) | 特徵詞的確定方法、裝置和伺服器 | |
CN112307473A (zh) | 一种基于Bi-LSTM网络和注意力机制的恶意JavaScript代码检测模型 | |
CN113076538B (zh) | 一种移动应用apk文件内嵌隐私政策提取方法 | |
WO2019242442A1 (zh) | 基于多模型特征的恶意软件识别方法、系统及相关装置 | |
CN113434858A (zh) | 基于反汇编代码结构和语义特征的恶意软件家族分类方法 | |
CN114817924B (zh) | 基于ast和跨层分析的安卓恶意软件检测方法及系统 | |
Zhang et al. | Malicious code detection based on code semantic features | |
CN114706966A (zh) | 基于人工智能的语音交互方法、装置、设备及存储介质 | |
Wang et al. | Explainable apt attribution for malware using nlp techniques | |
CN116842515A (zh) | 一种源代码分类模型鲁棒性增强方法、系统及处理器 | |
CN111858878A (zh) | 从自然语言文本中自动提取答案的方法、系统及存储介质 | |
CN106650450A (zh) | 基于代码指纹识别的恶意脚本启发式检测方法及系统 | |
CN110941828B (zh) | 基于AndroGRU的安卓恶意软件静态检测方法 | |
CN116702160B (zh) | 一种基于数据依赖增强程序切片的源代码漏洞检测方法 | |
CN114817925B (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 |