转自:https://www.jiqizhixin.com/articles/844355c4-0ff5-4eeb-ae83-391e70adfaf2
- 论文地址:http://dl.acm.org/citation.cfm=3029823
- 项目地址:https://github.com/niallmcl/Deep-Android-Malware-Detection
我们使用了一种卷积神经 络(CNN)来进行安卓恶意软件分类。这种恶意软件分类的执行方式是对安卓 APK 进行反汇编,然后对其原始操作码序列(raw opcode sequence)进行静态分析。其中,指示「恶意」的特征是从原始操作码序列中自动学习到,因此无需人工设计恶意特征。该 络运行在 GPU 上,可以快速扫描大量文件。

如果你使用此代码,请引用以下论文:
如何运行本代码
给定一个已有的数据集目录(详情见下),其中 run.sh 文件将会执行以下内容:
- 将数据集分割为训练集和留存的测试集
- 训练神经 络
- 在测试集上对训练后的 络进行测试
准备工作
数据集结构
数据集所需目录结构的例子可参看 ./dataset
本神经 络需要格式正确的操作码序列文件,并且数据集目录中需要包含恶意和良性的操作码序列文件的子目录。
在 ./dataset 中提供了一个数据目录示例。该数据集目录必须包含以下结构:
- 必须要有一个叫做「Benign」的目录,其中包含了非恶意的操作码序列文件。
- 其它目录可以随意命名,其中包含了恶意的操作码序列文件。
操作码序列文件(Opcode Sequence files)
操作码序列文件可以使用操作码序列创建工具从安卓 APK 中创建。该工具放在 ./opcodeseq_creator 下。请参阅该目录下的 README 文件了解更多。
设置
本神经 络的代码是使用 Torch 实现的。推荐使用 GPU 来实现测试和训练加速。有关 Torch 安装的更多详情,请参阅:http://torch.ch/
其中操作码序列创建工具需要 APKTool:https://ibotpeaches.github.io/Apktool/
论文:深度安卓恶意软件检测(Deep Android Malware Detection)
在这篇论文中,我们提出了一种使用深度卷积神经 络(CNN)的全新安卓恶意软件检测系统。恶意软件分类的执行是基于对反汇编的程序的原始操作码序列进行静态分析。指示恶意软件的特征是从原始操作码序列中自动学习到,因此无需人工设计恶意特征。我们提出的系统的训练流程比已有的基于 n-gram 的恶意软件检测方法要简单得多,因为该 络是端到端地训练来联合学习适当的特征并执行分类,因此无需在训练过程中明确枚举数百万 n-gram。该 络设计还允许使用特征这样的长 n-gram,而已有的方法却无法在计算上做到这一点。训练完成后,该 络可以在一个 GPU 上得到有效的执行,从而可以快速扫描大量文件。
文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树首页概览11544 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!