(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202210544603.2
(22)申请日 2022.05.19
(71)申请人 电子科技大 学
地址 611731 四川省成 都市高新区 (西区)
西源大道 2006号
(72)发明人 牛伟纳 巩嘉诚 张小松 段治秦
刘星宇 朱宇坤
(74)专利代理 机构 成都正煜知识产权代理事务
所(普通合伙) 51312
专利代理师 袁宇霞
(51)Int.Cl.
G06F 21/56(2013.01)
G06F 8/53(2018.01)
G06F 8/75(2018.01)
G06F 16/35(2019.01)G06F 40/30(2020.01)
G06F 40/253(2020.01)
G06K 9/62(2022.01)
G06N 3/04(2006.01)
G06N 3/08(2006.01)
(54)发明名称
基于AST和跨层分析的安卓恶意软件检测方
法及系统
(57)摘要
本发明提出了一种基于AST和跨层分析的安
卓恶意软件检测方法及系统, 属于恶意代码分析
技术领域, 主要解决现有基于函数调用图中忽视
敏感节点祖先节点代码语义信息以及函数调用
图生成忽略Native层部分等问题。 主要方案包括
对待测AndroidAPK文件进行静态反编译以获取
其Java层代码与Native层代码并生成函数调用
图FCG; 根据Java层代码中对Native层函数的调
用将两部分FCG合成完整的FCG; 基于敏感API对
FCG进行简化, 从而得到简化FCG; 对非敏 感API节
点进行代码分析, 生成对应的抽象语法树; 使用
图神经网络对融合了代码语义的简化FCG信息进
行学习; 将训练好的检测模型用于对Android恶
意软件进行检测与识别。
权利要求书3页 说明书6页 附图1页
CN 114817924 A
2022.07.29
CN 114817924 A
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的具体步骤为:权 利 要 求 书 1/3 页
2
CN 114817924 A
2对于步骤4中生成的简化函数调用图, 首先找到所有的Java层非敏感API节点; 根据
Java层非敏感API节点对应的方法名, 检索到该节点对应的Smali文件; 使用代码解析工具
Antlr对该Smal i文件进行解析, 生成对应的Java层非敏感节点抽象语法树AST。
6.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法, 其特征在
于, 所述步骤6的具体步骤为:
对于步骤5中生成的Java层非敏感节点抽象语法树, 以其拓扑结构和节点特征作为图
特征, 使用图嵌入中n ode2vec算法生成其对应的代码特 征向量。
7.根据权利要求1所述的一种基于AST和跨层分析的安卓恶意软件检测方法, 其特征在
于, 所述步骤7的具体步骤为:
对于步骤4中生成的简化函数调用图, 将其与步骤6中生成的代码特征向量相融合, 具
体来说,
简化函数调用图中包含Java层敏感节点、 Java层非敏感节点以及N ative层节点三类节
点;
用长度为 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文件进行解析, 生成其对应的抽象
语法树, 并使用图嵌入方法得到抽象语法树对应节点的代码特 征向量;
分类模块: 用于将图构造模块生成的简化函数调用图和解析模块生成的代码语义进行
融合, 然后使用图神经网络对融合代码 语义的简化函数调用图FC G进行学习, 得到训练好的
智能分类 器, 从而对Andro id恶意软件进行检测与识别, 输出分类结果。
9.根据权利要求8所述的一种基于AST和跨层分析的安卓恶意软件检测系统, 其特征在
于, 所述图构造模块的具体实现为:
对Android APK使用静态分析工具Androguard中 的cg命令, 生成Java层函数调用图; 对
程序分析模块中获得的SO文件, 使用二进制分析工具Angr, 生成Native层函数调用图;权 利 要 求 书 2/3 页
3
CN 114817924 A
3
专利 基于AST和跨层分析的安卓恶意软件检测方法及系统
文档预览
中文文档
11 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 14:11:04上传分享