aparnna-c/malware-detection
GitHub: aparnna-c/malware-detection
基于图神经网络与随机森林集成模型,通过静态调用图分析实现 Android 恶意应用分类检测,并配备交互式 Streamlit 仪表板。
Stars: 0 | Forks: 0
# 🛡️ MalDetect — Android 恶意软件检测





## 📸 界面展示
该应用在浏览器中运行,采用深色主题仪表板。你可以浏览数据集,上传 `.edgelist` 图文件,或上传真实的 `.apk` 文件进行实时分析。
## 🧠 工作原理
Android 应用会被转换为**调用图**(call graphs)——这是一种展示应用内部函数如何相互调用的映射图。与安全的应用相比,恶意软件通常具有不同的图结构模式。
MalDetect 使用两种不同的方法对这些图进行分类:
| 模型 | 方法 |
|---|---|
| **GIN** (Graph Isomorphism Network) | 深度学习 —— 直接从图中学习结构模式 |
| **Random Forest** | 传统机器学习 —— 使用手工设计的图特征(节点、边、度、密度) |
| **Ensemble** | 通过平均概率输出结合两者,以提供更强有力的判定结果 |
### 检测出的 5 种类别
`Addisplay` · `Adware` · `Benign` · `Downloader` · `Trojan`
## ✨ 功能特性
- **浏览数据集** —— 从测试/训练集中选择任意图文件并立即进行分析
- **上传 .edgelist** —— 拖放你自己的调用图文件
- **上传 APK** —— 上传真实的 Android APK;应用会使用 Androguard 提取调用图,并运行完整的集成分析
- **并排对比** —— GIN 和 Random Forest 的结果将与概率图表一同展示
- **模型评估** —— 在整个数据集上运行并计算准确率、精确率、召回率和 F1 分数
## 🗂️ 项目结构
```
malware-detection/
├── app.py # Main Streamlit app
├── main.py # Training entry point
├── rf_model.py # Random Forest training
├── apk_to_graph.py # APK → call graph (Androguard)
├── requirements.txt # Dependencies
├── models/
│ ├── best_gin_model.pth # Trained GIN model
│ ├── random_forest.pkl # Trained RF model
│ └── rf_scaler.pkl # Feature scaler
├── src/
│ ├── gin_model.py # GIN architecture
│ ├── data_loader.py # Dataset loading
│ ├── feature_extractor.py# Graph feature extraction
│ └── train.py # GIN training loop
├── dataset/ # MalNet-Tiny graph dataset
├── split_info/ # Train/test file lists
└── graphs/ # Processed graph files
```
## 🚀 本地运行
**1. 克隆仓库**
```
git clone https://github.com/aparnna-c/malware-detection.git
cd malware-detection
```
**2. 创建虚拟环境**
```
python -m venv venv
source venv/bin/activate
```
**3. 安装依赖**
```
pip install -r requirements.txt
```
**4. 运行应用**
```
streamlit run app.py
```
在浏览器中打开 `http://localhost:8501`。
## 🛠️ 技术栈
- **Python 3.10**
- **Streamlit** —— Web 应用框架
- **PyTorch + PyTorch Geometric** —— GIN 模型
- **scikit-learn** —— Random Forest 分类器
- **Androguard** —— APK 静态分析与调用图提取
- **Plotly** —— 交互式概率图表
- **MalNet-Tiny** —— Android 应用调用图数据集
## 📊 数据集
本项目使用 [MalNet-Tiny](https://mal-net.org/) 数据集 —— 这是一个涵盖了多种恶意软件家族的 Android 应用调用图集合。
## 👩💻 作者
**Aparnna C**
MCA 学生 —— Thrissur 政府工程学院
[LinkedIn](https://linkedin.com/in/aparnna-c) · [GitHub](https://github.com/aparnna-c)
## 📄 许可证
本项目基于 MIT 许可证授权。
标签:Android恶意软件检测, Apex, Kubernetes, Python, Streamlit, 人工智能, 凭据扫描, 图神经网络, 无后门, 机器学习, 用户模式Hook绕过, 访问控制, 逆向工具