dwmnds23/android-malware-analysis
GitHub: dwmnds23/android-malware-analysis
一套整合 jadx、apktool 和 Ghidra 的 Android 恶意软件静态分析系统,通过 REST API 自动化逆向 APK 并将结果持久化存储。
Stars: 0 | Forks: 0
<<<<<<< HEAD
# APK 逆向工程系统
利用 **jadx**、**apktool** 和 **Ghidra headless** 的自动化 Android APK 静态分析系统。
## 架构
```
┌─────────────────────────────────────────────┐
│ docker-compose │
│ │
│ ┌──────────────────────┐ ┌──────────────┐ │
│ │ api (port 8000) │ │ db │ │
│ │ │ │ PostgreSQL │ │
│ │ FastAPI │ │ (port 5432) │ │
│ │ ├─ apktool │◄─► │ │
│ │ ├─ jadx │ │ analyses │ │
│ │ └─ Ghidra headless │ │ table │ │
│ └──────────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────┘
```
### 每个 APK 的分析流程
```
POST /analyze (APK upload)
│
▼
1. apktool decode → AndroidManifest.xml + smali/
│
▼
2. jadx decompile → Java source files
│
▼
3. Ghidra headless → .so / .dex → functions + strings + imports (JSON)
│
▼
4. Heuristic scan → strings_of_interest[]
│
▼
PostgreSQL ← αποθήκευση όλων των αποτελεσμάτων
```
## 安装与启动
```
# 克隆 / 克隆文件夹
cd apk-analyzer
# 构建并启动(首次运行约 10 分钟,原因:Ghidra 下载)
docker compose up --build -d
# 查看日志
docker compose logs -f api
```
## API 端点
### `POST /analyze`
上传 APK 进行分析。
```
curl -X POST http://localhost:8000/analyze \
-F "file=@malware_sample.apk"
```
**响应:**
```
{
"analysis_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "pending"
}
```
### `GET /analysis/{id}`
获取某次分析的结果。
```
# 快速概览(无源代码)
curl http://localhost:8000/analysis/3fa85f64-...
# 带完整源代码
curl "http://localhost:8000/analysis/3fa85f64-...?include_sources=true"
```
**响应 (已完成):**
```
{
"id": "3fa85f64-...",
"filename": "malware.apk",
"sha256": "abc123...",
"status": "completed",
"package_name": "com.evil.app",
"app_version": "1.0",
"permissions": ["android.permission.INTERNET", "android.permission.READ_SMS"],
"activities": ["com.evil.app.MainActivity"],
"services": ["com.evil.app.SmsStealerService"],
"strings_of_interest": ["sendTextMessage", "SmsManager", "https://"],
"ghidra_report": { "libevil.so": { "functions": [...], "strings": [...] } }
}
```
### `GET /analyses`
列出所有分析记录。
```
curl "http://localhost:8000/analyses?limit=10&offset=0"
```
### `GET /health`
健康检查。
```
curl http://localhost:8000/health
```
### Swagger UI
自动可用地址: **http://localhost:8000/docs**
## 数据库
使用任意 PostgreSQL 客户端连接 (pgAdmin, DBeaver, psql):
```
Host: localhost
Port: 5432
Database: apkdb
User: analyst
Password: analyst
```
### 常用查询
```
-- Όλα τα samples με επικίνδυνα permissions
SELECT filename, package_name, permissions
FROM analyses
WHERE permissions @> '["android.permission.SEND_SMS"]'::jsonb;
-- Samples που χρησιμοποιούν SmsManager
SELECT id, filename, strings_of_interest
FROM analyses
WHERE 'SmsManager' = ANY(strings_of_interest);
-- Τελευταίες αναλύσεις
SELECT id, filename, status, submitted_at, package_name
FROM analyses
ORDER BY submitted_at DESC
LIMIT 20;
```
## 项目结构
```
apk-analyzer/
├── api/
│ ├── main.py # FastAPI app + analysis logic
│ └── requirements.txt
├── ghidra_scripts/
│ └── ExportAnalysis.py # Ghidra post-script (εξάγει JSON)
├── docker/
│ └── schema.sql # PostgreSQL schema (documentation)
├── Dockerfile
├── docker-compose.yml
└── README.md
```
## 毕业论文说明
- 本系统运行 **纯静态分析** — 不执行 APK
- Ghidra headless 通过 `analyzeHeadless` 脚本在无 GUI 模式下运行
- `.so` 文件 (native libraries) 由 Ghidra 完全分析
- `.dex` 文件主要由 jadx 分析 (Java 反编译)
- 生产环境建议: 为 API 添加身份认证和速率限制
## 扩展
如需添加新的分析步骤:
1. 在 `main.py` 中添加函数
2. 在 `analyze_apk()` 中调用该函数
3. 将输出保存到数据库 (如需要请添加列)
=======
# android-malware-analysis
Android 恶意软件静态分析系统,使用 Ghidra、jadx 和 apktool。通过 REST API 自动逆向分析 APK 并将结果存储在 PostgreSQL 数据库中。
标签:Amass, AMSI绕过, Android, Apktool, APK反编译, AV绕过, DAST, DEX分析, Docker, Docker Compose, DSL, FastAPI, Ghidra, Jadx, Manifest解析, PostgreSQL, REST API, Smali, SO文件分析, 云安全监控, 云资产清单, 反病毒, 启发式扫描, 威胁检测, 安全防御评估, 恶意软件分析, 测试用例, 目录枚举, 移动安全, 网络测绘, 自动化分析, 自定义DNS解析器, 请求拦截, 跨站脚本, 逆向工具, 逆向工程, 静态分析