Adnan0322/Malware-Analysis-Using-Deep-learning
GitHub: Adnan0322/Malware-Analysis-Using-Deep-learning
该项目利用深度学习将恶意软件二进制文件转换为灰度图像进行家族分类,在 ResNet-50 迁移学习上达到99.30%验证准确率。
Stars: 0 | Forks: 0
# 使用深度学习进行恶意软件分析
此仓库包含一个深度学习流水线,旨在通过将二进制可执行文件转换为视觉表示(灰度图像),并训练卷积神经网络来识别其家族类别,从而对恶意软件家族进行分类。
我们实现了两种不同的架构:
1. **自定义 CNN**(基于 TensorFlow/Keras 构建)
2. **ResNet-50 迁移学习**(基于 PyTorch 构建)
## 🚀 核心特性
* **基于视觉的分类**:利用映射为二维灰度图像的二进制可执行文件结构,识别特定恶意软件家族独有的模式。
* **高精度的 PyTorch 流水线**:在恶意软件分类任务上达到了 **99.30% 的验证准确率**。
* **稳健的预处理**:使用 ImageNet 统计数据对输入进行标准化,并通过序列化编码器动态处理标签映射,以防止在部署期间出现类索引不匹配的情况。
## 📁 项目结构
```
Malware_analysis/
├── evaluate_model.py # Standalone PyTorch evaluation script
├── feature_extraction.py # Extracts & preprocesses dataset images to [0, 1]
├── gpu_test.py # CUDA GPU verification test script
├── predict.py # Predicts malware family of raw binaries or images
├── train_model.py # Custom Keras CNN model training script
├── train_resnet_pytorch.py # PyTorch ResNet-50 fine-tuning training script
├── label_encoder.pkl # Saved label mapping class dictionary
├── .gitignore # Excludes heavy datasets and model checkpoints
├── README.md # Project documentation and guide
│
└── [Local-Only / Ignored Files]
├── mlimg.zip # Raw zipped dataset (1.17 GB)
├── mlimg/ # Extracted malware images structured directory
├── images.npy # Preprocessed image feature numpy array (1.87 GB)
├── lables.npy # Extracted text labels numpy array
├── malware_cnn_model.h5 # Trained Keras CNN model file
├── malware_resnet_model.pth # Trained PyTorch ResNet model checkpoint
└── myenv/ # Local Python virtual environment directory
```
## 🛠️ 环境配置与执行
### 1. 前置条件与虚拟环境
建议在虚拟环境中运行此项目。如果使用本地的 `myenv` 环境:
* **在 Windows 上激活环境:**
.\myenv\Scripts\activate
### 2. 训练 PyTorch ResNet 模型
运行以下命令以微调 ResNet-50 模型:
```
.\myenv\Scripts\python train_resnet_pytorch.py
```
此脚本将:
1. 加载 `images.npy` 和 `lables.npy`。
2. 标准化特征并将标签映射序列化到 `label_encoder.pkl`。
3. 训练网络并在每个 epoch 之后验证性能。
4. 将模型权重保存到 `malware_resnet_model.pth`。
### 3. 评估模型
要验证已保存模型权重的准确率:
```
.\myenv\Scripts\python evaluate_model.py
```
### 4. 对新文件运行预测
要扫描新文件(例如原始的 `.exe` 二进制文件或图像)并预测其恶意软件家族:
```
.\myenv\Scripts\python predict.py --file path/to/suspicious_file
```
*(这将打印出预测的恶意软件类别、模型的置信度,并将该文件的视觉表示保存到 `malware_visual_representation.png`)*
## 📊 结果与性能
我们的 PyTorch ResNet-50 分类器在 5 个 epoch 的微调后达到了以下性能指标:
| Epoch | 训练损失 | 验证损失 | 验证准确率 |
|:---:|:---:|:---:|:---:|
| 1 | 0.2396 | 0.0570 | 97.86% |
| 2 | 0.0407 | 0.0307 | 99.04% |
| 3 | 0.0270 | 0.0264 | 99.04% |
| 4 | 0.0163 | 0.0268 | 99.25% |
| **5** | **0.0141** | **0.0254** | **99.30%** |
最终的验证准确率达到了 **99.30%**,这反映了利用视觉表示特征进行恶意软件分类的高效性。
标签:DAST, PyTorch, TensorFlow, Vectored Exception Handling, 凭据扫描, 卷积神经网络, 图像分类, 恶意软件分析, 深度学习, 逆向工具