预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN112464234A(43)申请公布日2021.03.09(21)申请号202011315603.2(22)申请日2020.11.21(71)申请人西北工业大学地址710072陕西省西安市友谊西路127号(72)发明人姚烨贾耀钱亮(74)专利代理机构西北工业大学专利中心61204代理人刘新琼(51)Int.Cl.G06F21/56(2013.01)G06N3/04(2006.01)G06N3/08(2006.01)权利要求书2页说明书7页附图4页(54)发明名称一种云平台上基于SVM的恶意软件检测方法(57)摘要本发明涉及一种云平台上基于SVM的恶意软件检测方法,属于信息安全领域。依次包括以下步骤:基于时序的API调用序列的提取、基于skip‑gram模型的API序列向量化、基于AutoEncoder模型的API向量降维、构建基于SVM的恶意软件检测模型、基于SVM的检测模型的训练。本发明选择的特征向量为软件的所有API调用序列,通过将序列进行压缩的操作尽最大可能地保留了序列特征,再将其输入到SVM模型中,不但有效提升检测效率,检测准确率也得到大幅提升。CN112464234ACN112464234A权利要求书1/2页1.一种云平台上基于SVM的恶意软件检测方法,其特征在于步骤如下:步骤1:基于时序的API调用序列的提取为APK文件创建一个dex对象,通过对dex对象的分析,提取出该APK文件的函数调用图,通过对函数调用图中边信息的分析,获得各类内的函数调用关系;在此调用关系的基础上使用深度优先遍历算法完善每条调用序列;此时获得多条完整的类内调用序列,依据序列头节点在内存中的地址信息进行排序;最后按照地址递增的顺序将所有类内调用序列拼接在一起,构建成一条完整的API调用序列;步骤2:基于skip-gram模型的API序列向量化获得API调用序列之后,需要将提取出来的API序列向量化:(1)首先对每个API函数用特定的整数表示,每个API序列构建成为一个one-hot向量;(2)然后利用构建的one-hot向量来训练skip-gram网络模型,所述的skip-gram网络模型:输入为构建的one-hot向量;隐藏层没有使用任何激活函数;输出层是一个softmax回归分类器;模型中还需要定义skip_windows的参数,它表示从当前inputword的一侧选取词的数量,另一个参数叫num_skips,它表示从整个窗口中选取多少个不同的词作为outputword;隐藏层的权值矩阵是最终的学习目标,因此权重矩阵每行的维度需要根据具体的训练情况进行设置;输出层的每个节点将会输出一个0-1之间的值,表示当前词是输入样本中outputword的概率大小,这些所有输出层神经元节点的概率之和为1;(3)训练完成后,取出模型中的Embedding矩阵,用API序列的one-hot向量与Embedding权重矩阵的乘积来表示该序列的Embedding向量;步骤3:基于AutoEncoder模型的API向量降维采用AutoEncoder模型对API序列进行压缩,所述的AutoEncoder模型包含以下十层:一个数据输入层、八个数据压缩层以及一个数据输出层;各层之间通过全连接的方式相连接;将输入样本压缩到隐藏层,然后在输出端重新构建样本,经过不断的训练,当输出端重新构建的样本与输入端输入的样本之间的误差在一定范围内时,认为样本的压缩有效,模型训练结束;步骤4:构建基于SVM的恶意软件检测模型首先将经过降维处理的API序列输入到检测模型中;然后检测模型中的参数会在样本集上进行迭代计算,最终使得测试集上误差低于设定阈值;最后完成训练后的模型用于未知软件的检测,检测结果为良性或恶意的二分类判断;但是经过降维处理的API序列仍然有较高维度,为了获得更好的分类效果,引入高斯核函数;通过核函数,将特征向量映射到一个比较高的维度,从而找到一个可以完全分离的超平面,进而完成分类;步骤5:基于SVM的检测模型的训练本发明将模型构建在云平台上,将模型的训练建立在Spark内核之上,加速模型的训练,Spark集群由Driver,ClusterManager,以及WorkerNode组成;对于每个Spark应用程序,WorkerNode上存在一个Executor进程,Executor进程中包括多个Task线程;Spark上的任务启动后,Driver向ClusterManager申请资源;ClusterManager向某些WorkNode发送征召信号;被征召的WorkNode启动Executor进程响应征召,并向Driver申请任务;Driver将任务的程序代码和不同的数据分片分发给WordNode