Alok8018/Hybridshield-Malware-detection
GitHub: Alok8018/Hybridshield-Malware-detection
HybridShield 是一个基于深度学习和机器学习的恶意软件检测系统,通过 CNN、DNN 与 LightGBM 的集成模型实现智能威胁分析。
Stars: 0 | Forks: 0
# 🛡️ HybridShield V10 — VS Code 实现指南
## 项目结构
```
hybridshield/
│
├── config.py ← Edit paths here before anything else
├── requirements.txt ← pip install -r requirements.txt
│
├── train_cnn.py ← Step 2: train EfficientNetB0 CNN
├── train_ember.py ← Step 3: train DNN + LightGBM
├── app.py ← Step 4: launch Gradio web UI
│
├── src/
│ ├── data_utils.py ← MalNet extraction, scanning, tf.data pipelines
│ ├── ember_utils.py ← EMBER download, patch, vectorize, load
│ └── models.py ← CNN, DNN, WarmupCosineDecay definitions
│
├── data/
│ ├── malnet-images-tiny.tar.gz ← PUT YOUR MALNET FILE HERE
│ ├── malnet_data/ ← auto-created during training
│ └── ember_data/ ← auto-created during training
│
├── models/ ← saved model files (auto-created)
│ ├── cnn_best.keras
│ ├── cnn_final.keras
│ ├── cnn_results.json
│ ├── dnn_best.keras
│ ├── dnn_final.keras
│ ├── lgb_model.txt
│ ├── ember_meta.pkl
│ └── ensemble_cfg.json
│
└── results/ ← plots and dashboards (auto-created)
├── cnn_curves.png
├── cnn_confusion.png
└── roc_curves.png
```
## 步骤 0 — 前置条件
### 系统要求
- Python 3.10 或 3.11(3.12 与部分 ember 依赖项存在兼容性问题)
- 具有 CUDA 11.8+ 的 NVIDIA GPU(用于快速 CNN 训练)
- 至少 16 GB RAM(加载 EMBER 约需 6 GB)
- 30 GB 可用磁盘空间(MalNet + EMBER + models)
### 需要安装的 VS Code 扩展
- Python (Microsoft)
- Pylance
- Jupyter(可选 — 用于 notebook 风格的调试)
## 步骤 1 — 设置
### 1a. 克隆 / 复制项目
```
# 将所有文件复制到一个文件夹中,然后在 VS Code 中打开
code hybridshield/
```
### 1b. 创建虚拟环境
```
# 在 VS Code 终端 (Ctrl+`) 中
python -m venv .venv
# 激活
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activate
```
### 1c. 安装依赖项
```
pip install -r requirements.txt
```
### 1d. 放置你的 MalNet 文件
将 `malnet-images-tiny.tar.gz` 复制到 `data/` 文件夹中:
```
data/malnet-images-tiny.tar.gz ← required
```
该文件大小应约为 800 MB。如果位于其他位置,
请更新 `config.py` 中的 `MALNET_SRC`。
## 步骤 2 — 训练 CNN
```
python train_cnn.py
```
**它的功能:**
1. 将 MalNet tar.gz 解压到 `data/malnet_data/` 中
2. 扫描类型级别的 train/val/test 划分(21 个类别)
3. 构建平衡的 tf.data pipeline
4. 阶段 1(25 个 epochs):仅训练 head,backbone 冻结
5. 阶段 2(50 个 epochs):解冻顶部 40 层 backbone
6. 保存 `models/cnn_best.keras` 和 `models/cnn_final.keras`
7. 保存 `results/cnn_curves.png` 和 `results/cnn_confusion.png`
**预计训练时间:**
- 使用 GPU:约 6–8 分钟/epoch × 实际 40 个 epochs ≈ 4–5 小时
- 不使用 GPU(仅 CPU):不推荐
**预期准确率:**
- Top-1:65–80%
- Top-3:85–93%
**VS Code 提示:** 打开终端并观察 epoch 输出。
训练曲线 PNG 将在训练完成后更新。
## 步骤 3 — 训练 DNN + LightGBM
```
python train_ember.py
```
**它的功能:**
1. 从 elastic.co 下载 EMBER2018(约 1.1 GB)
2. 修补 ember 以兼容 sklearn
3. 将 jsonl 向量化为 .dat 文件(约 30 分钟,一次性操作)
4. 通过分块 partial_fit 拟合 RobustScaler(内存安全)
5. 训练 DNN(60 个 epochs,cosine LR)
6. 训练 LightGBM(3000 轮,early stop)
7. 根据 val AUC 分数计算 ensemble 权重
8. 保存 `models/dnn_final.keras`、`lgb_model.txt`、`ensemble_cfg.json`
**预计时间:**
- EMBER 下载 + 向量化:约 45 分钟(仅限一次)
- DNN 训练:约 20–30 分钟
- LightGBM 训练:约 15–25 分钟
**预期准确率:**
- DNN:96–97%
- LightGBM:97–98%
- Ensemble:97–98%
## 步骤 4 — 启动 Web 界面
```
python app.py
```
在浏览器中打开:**http://localhost:7860**
**你可以执行的操作:**
- 上传任何 `.exe`、`.dll`、`.apk`、`.bin`、`.sys` 文件
- 查看字节可视化(inferno colormap)
- 查看每个模型的置信度条(CNN / DNN / LGB / Ensemble)
- 查看风险仪表盘(speedometer)
- 阅读包含文件信息和 Top-3 恶意软件类型的判定卡片
**公开共享(ngrok 隧道):**
在 `app.py` 中修改:
```
demo.launch(share=True) # generates a gradio.live URL
```
## GPU 设置(Windows)
如果 `tf.config.list_physical_devices('GPU')` 返回 `[]`:
1. 安装 CUDA 11.8:https://developer.nvidia.com/cuda-11-8-0-download-archive
2. 安装 cuDNN 8.6:https://developer.nvidia.com/cudnn
3. 安装带有 GPU 支持的 TF:
```
pip install tensorflow[and-cuda]
```
## 无 GPU 运行(仅 CPU)
CNN 训练将非常缓慢(约 60 分钟/epoch)。
请在 `config.py` 中减少相关参数:
```
PHASE1_EPOCHS = 5
PHASE2_EPOCHS = 10
STEPS_PER_EPOCH = 100 # override in train_cnn.py
```
DNN 和 LightGBM 在 CPU 上运行良好。
## 文件说明
| 文件 | 用途 |
|---|---|
| `config.py` | 所有路径和超参数集中在一处 |
| `src/data_utils.py` | MalNet 解压、类型级扫描、tf.data |
| `src/ember_utils.py` | EMBER 下载、修补、向量化、内存安全加载 |
| `src/models.py` | EfficientNetB0、DNN、WarmupCosineDecay 定义 |
| `train_cnn.py` | 完整的 CNN 训练 pipeline — 首先运行此文件 |
| `train_ember.py` | DNN + LightGBM 训练 — 第二步运行此文件 |
| `app.py` | Gradio Web UI — 在两个训练均完成后运行 |
## 常见错误
**`找不到 MALNET_SRC`**
→ 将 `malnet-images-tiny.tar.gz` 放入 `data/` 文件夹,并检查 `config.py`
**`找不到 train/val/test`**
→ tar.gz 解压到了不同的目录深度。`find_split_root()` 函数
会自动搜索,但如果失败,请检查 `data/malnet_data/` 内部的内容,
并在 `train_cnn.py` 中手动设置 `SPLIT_ROOT`。
**`训练前检查时 Loss = 80`**
→ 这是正常且安全的。来自 ImageNet 的 EfficientNet BN 统计信息与
恶意软件图像不匹配,导致了较高的初始 loss。它会在 epoch 2 时自动恢复正常。
**`找不到 ember 模块`**
→ 运行:`pip install git+https://github.com/elastic/ember.git`
**在 train_ember.py 中出现 `找不到 cnn_results.json`**
→ 请先运行 `train_cnn.py`,以便保存 CNN 开放集阈值。
**加载 EMBER 期间内存不足**
→ 将 `ember_utils.py load_ember()` 中的 `chunk` 参数从 50_000 减小到 20_000。
## 预期最终结果
| 模型 | 准确率 | AUC | F1 |
|---|---|---|---|
| CNN (Top-1) | 65–80% | — | — |
| CNN (Top-3) | 85–93% | — | — |
| DNN | 96–97% | 0.995+ | 0.96+ |
| LightGBM | 97–98% | 0.997+ | 0.97+ |
| **Ensemble** | **97–98%** | **0.997+** | **0.97+** |
标签:Apex, Python, TensorFlow, 人工智能, 无后门, 机器学习, 深度学习, 用户模式Hook绕过, 网络安全, 自定义DNS解析器, 逆向工具, 隐私保护