/malware

Primary LanguageJupyter Notebook

malware项目介绍

该项目的主要实现功能是如何通过分析软件的二进制代码判断一个软件是否为一个病毒软件。

  • 模拟数据选择的是microsoft在kaggle上面的比赛:malware classfication
  • 采用的方法是将二进制文件都转化为图片,然后使用cnn网络提取二进制数据流中的局部特征,进行分类

二进制转化为图片

转化的过程就是将二进制中的每8个位置作为一个数来处理,转化为10进制后,然后统一归一化到512*512的大小。

转化流程

代码实现

建立cnn网络

  • 两层(conv+maxpool)
  • 一层全连接(nn)
  • softmax做输出层

数据处理代码 网络结构代码 主函数代码

结果

还在测试中,---

遇到的问题

1.log损失直爆炸,一直为nan。 可能的原因:

  • 参数初始化,weights和bias
  • 将图像转化为[0,1],也就是所有的像素值除以256
  • 学习率设置问题
  • relu和softmax连接会出现loss爆炸的问题(relu can produce large positive values)