题目:Deep Android Malware Detection

作者:Niall McLaughlin, Jesus Martinez del Rincon, BooJoong Kang

年份:2017

会议:CODASPY

2.解决的问题

之前的方法需要对程序进行分析然后提取具有识别能力的特征用于恶意软件的分类。在本文中应用卷积神经网络来对恶意软件进行分类,该方法是受到基于n-gram的恶意软件检测的启发,但不同于基于n-gram的恶意软件检测,对于n个操作数作为卷积神经网络的输入,卷积神经网络会自动的识别恶意软件的特征。

3.研究点

如果构造用于恶意软件分类的卷积神经网络;如何提取卷积神经网络的输入;

4.研究假设

5.关键算法

在介绍算法之前需要了解一下什么是n-gram

n-gram是计算机语言学和概率论范畴内的概念,是指给定的一段文本或语音中N个项目(item)的序列。项目(item)可以是音节、字母、单词。通常n-gram取自文本或语料库。举例来说:将"informationretrieal"视为一段文本,它的5-grams的item依次为:

infor,nform,forma,ormat,rmati,matio,ation,tionr,onret,nretr,retri,etrie,triev,rieva,ieval

提取卷积网络的输入

将.apk文件反编译为.smali文件,然后提取操作符。由于在Dalvik中的字节码中定义的操作符有218个,因此将每个操作符映射成一个操作数。为了说明,这里假设提取到的应用的操作数序列为{1,2,3,4,5,6,7,8},N的大小的为4,根据n-gram的定义,输入有{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7},{5,6,7,8}共5组

将每一个操作数表示成one-hot形式(one-hot是一个218维的向量,对应的操作数上置为1,其他置为0)。之所以将操作数表示成one-hot的形式是因为这样可以将one-hot向量映射成一个k维的嵌入空间,这样可以表示不同操作数之间的关系。

构造卷积神经网络

卷积网络的整体结构如下,包括一个Embedding层,两个卷积层,一个池化层,一个全连接层,以及最后的softmax分类层。

用one-hot表示的操作数序列矩阵M(N*218)通过Embedding Layer映射成矩阵P(N*K)。每个卷积层有m个过滤器,每个过滤器为s1*k,这意味着每个过滤器可以检测是s1个序列的操作数,每个过滤器会输出n*1大小的向量,将这些向量叠在一起就得到了矩阵A1(n*m)(注意这里和传统的卷积有所不同),通过第二层卷积以及池化层池,化层的公式如下(注意这里和传统卷积池化层公式有所不同,目的是为了得到一维向量)

得到一个一维向量。得到的一维向量再作为传统神经网络进行分类的训练。

6.数据

7.优点

通过简单的操作数序列可以卷积神经网络可以自动的学习一些比较复杂的特征用于恶意软件的分类。克服了传统的基于n-gram的算法中n不能太大的限制。

8.不足之处

9.可能的后续改进点以及创新点

是否可以其他的深度学习模型用于恶意软件的检测。

 
 
 

Deep Android Malware Detection小结的更多相关文章

  1. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  2. 【论文笔记】DeepOrigin: End-to-End Deep Learning for Detection of New Malware Families

    DeepOrigin: End-to-End Deep Learning for Detection of New Malware Families 标签(空格分隔): 论文 论文基本信息 会议: I ...

  3. cdmc2016数据挖掘竞赛题目Android Malware Classification

    http://www.csmining.org/cdmc2016/ Data Mining Tasks Description Task 1: 2016 e-News categorisation F ...

  4. Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。

    源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机 ...

  5. 论文阅读计划2(Deep Joint Rain Detection and Removal from a Single Image)

    Deep Joint Rain Detection and Removal from a Single Image[1] 简介:多任务全卷积从单张图片中去除雨迹.本文在现有的模型上,开发了一种多任务深 ...

  6. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  7. Android:Sqlitedatabase学习小结

    今天刚刚学习完Sqlite数据库的基础知识,随即把学到的东西记录下来,以便随后查阅,以下是自己对Sqlite数据库的小结:1.Sqlite简介       Sqlite是一款轻型的数据库,它包含在一个 ...

  8. android: Android 权限管理小结

    一. 概述 感谢郭神,自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有 ...

  9. Android事件分发小结

      ******** ******** 第一部分: 介绍说明 ******** ********        个人感觉在做交互的时候, 对于Android的按键分发的理解还是比较重要的. 这些内容在 ...

随机推荐

  1. 51nod 1431 快乐排队

    题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 有一群人在排队,如果某个人想排到前面去,可以花一元钱给直接站在他前 ...

  2. windows7桌面小工具打不开的解决方案

    将任务管理器中的sidebar.exe结束任务: 将C:\Users\用户名\AppData\Local\Microsoft\Windows Sidebar下的settings.ini的文件名修改为任 ...

  3. Memcache使用基础

    Memcached的特点:     协议简单     基于libevent的事件处理     内置内存存储方式     memcached不互相通信的分布式   1.协议简单:     使用简单的基于 ...

  4. leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal,剑指offer 6 重建二叉树

    不用迭代器的代码 class Solution { public: TreeNode* reConstructBinaryTree(vector<int> pre,vector<in ...

  5. FTP服务器建立windows与Linux的文件共享与读写操作

    centos7搭建vsftpd  2018-11-15 我们有时想要windows与Linux互传文件,就要用到vsftpd了.它仅仅在windows上面操作,就可以实现与Linux的通信,详情如下: ...

  6. WinForm中Timer倒计时

    添加一个Timer控件: 在初始化代码中 public Form1() { InitializeComponent(); button_Read.Enabled = false; button_Sta ...

  7. 廖老师JavaScript教程高阶函数-sort用法

    先来学习一个新词:高阶函数 高阶函数英文叫Higher-order function.那么什么是高阶函数? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那 ...

  8. c++作业:求N的阶乘。

    N的阶乘就是n.(n-1)! 5的阶乘是什么?5*4*3*2*1 #include <iostream> using namespace std; int jiecheng(int num ...

  9. iOS中的数据存储方式_SQLite3

    优点: 1) SQLite是一款轻型的嵌入式数据库; 2) 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 3) 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还 ...

  10. k8s Pod的自动水平伸缩(HPA)

    我们知道,当访问量或资源需求过高时,使用:kubectl scale命令可以实现对pod的快速伸缩功能 但是我们平时工作中我们并不能提前预知访问量有多少,资源需求多少. 这就很麻烦了,总不能为了需求总 ...