Whitehat987/apkshield-pt
GitHub: Whitehat987/apkshield-pt
一款自动化的 Android 渗透测试工具,能够反编译 APK 后检测 Root 检测和 SSL Pinning 实现,并自动生成针对性的 Frida 绕过脚本和可视化报告。
Stars: 31 | Forks: 2
```
█████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗██╗███████╗██╗ ██████╗
██╔══██╗██╔══██╗██║ ██╔╝██╔════╝██║ ██║██║██╔════╝██║ ██╔══██╗
███████║██████╔╝█████╔╝ ███████╗███████║██║█████╗ ██║ ██║ ██║
██╔══██║██╔═══╝ ██╔═██╗ ╚════██║██╔══██║██║██╔══╝ ██║ ██║ ██║
██║ ██║██║ ██║ ██╗███████║██║ ██║██║███████╗███████╗██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═════╝
```
**AI 驱动的 Android 渗透测试工具**




## 什么是 APKShield-PT?
APKShield-PT 是一款自动化的 Android 渗透测试工具,它可以:
1. 使用 `apktool`(smali + 资源)和 `jadx`(Java 源码)**反编译** APK
2. 跨 14 个类别**检测** Root 检测技术
3. 跨 15 个类别**检测** SSL/TLS 证书锁定
4. 针对检测结果**生成**可立即使用的 Frida 绕过脚本
5. **生成**完整的 HTML + JSON 报告
无需手动阅读代码。放入 APK,即可获得可用的 Frida 脚本。
## 功能
| 功能 | 详情 |
|---|---|
| 自动反编译 | apktool + jadx,若已反编译则跳过 |
| Root 检测引擎 | 14 个类别 — RootBeer, SafetyNet, Play Integrity, Magisk, su 二进制文件, build 属性, Frida/Xposed 自身检测, 签名校验, 模拟器检测 |
| SSL Pinning 引擎 | 15 个类别 — OkHttp, TrustManager, HostnameVerifier, NSC XML, TrustKit, WebView, gRPC, Conscrypt, Cronet, 证书透明度, 原生层 pinning |
| Frida 脚本生成器 | 自动生成针对性脚本 — 拒绝千篇一律的通用 hooks |
| AI 分析 (可选) | 深度代码分析,查找混淆/自定义检查 |
| 报告 | HTML 报告 (暗黑主题) + JSON 报告 |
| 兼容 Frida 17.x | 正确指定所有 overloads,启动时不崩溃 |
## 安装说明
### 前置条件
- Kali Linux (推荐) 或任何基于 Debian 的发行版
- Python 3.10+
- 运行了 frida-server 的 Android 设备
### 一键安装
```
git clone https://github.com/Whitehat987/apkshield-pt
cd apkshield-pt
bash setup.sh
```
安装脚本将安装:`apktool`, `jadx`, `adb`, `frida-tools`, `objection` 以及所有 Python 依赖。
### 手动安装
```
sudo apt install apktool jadx adb -y
pip3 install frida-tools objection rich anthropic --break-system-packages
```
## 使用方法
```
# 基本用法 — 无 AI(完全离线)
python3 apkshield.py App.apk --no-ai
# 自定义输出目录
python3 apkshield.py App.apk --no-ai -o /root/results
# 使用 AI 分析(需要 API key)
export ANTHROPIC_API_KEY=your_key_here
python3 apkshield.py App.apk
# 详细输出
python3 apkshield.py App.apk --no-ai -v
# 检查所有 dependencies
python3 apkshield.py --check-deps
```
## 输出结构
```
apkshield_output/
└── AppName/
├── apktool_out/ # Smali + resources
├── jadx_out/ # Decompiled Java source
├── frida/
│ ├── master_bypass.js ← Start here (all-in-one)
│ ├── root_bypass.js
│ ├── ssl_bypass.js
│ ├── safetynet_bypass.js
│ ├── frida_detection_bypass.js
│ └── custom_bypass.js ← AI-identified hooks (if AI used)
├── report.html ← Visual report (open in browser)
└── report.json ← Machine-readable report
```
## 使用 Frida 脚本
### 首先在设备上配置 frida-server
```
# 下载与你的 frida-tools 版本匹配的 frida-server
# https://github.com/frida/frida/releases
adb push frida-server /data/local/tmp/
adb shell chmod +x /data/local/tmp/frida-server
adb shell /data/local/tmp/frida-server &
```
### 运行绕过脚本
```
# 使用 master bypass 启动 app(推荐 — 从这里开始)
frida -U -f com.target.app -l frida/master_bypass.js --no-pause
# 附加到已运行的 app
frida -U com.target.app -l frida/master_bypass.js
# 仅绕过 SSL
frida -U -f com.target.app -l frida/ssl_bypass.js --no-pause
# 通过 objection(交互式 shell)
objection -g com.target.app explore
```
## Root 检测覆盖范围
| ID | 类别 | 绕过函数 |
|---|---|---|
| RD-001 | su 二进制文件路径检查 | `bypass_file_checks()` |
| RD-002 | busybox 二进制文件 | `bypass_file_checks()` |
| RD-003 | Root 管理应用 (Magisk, SuperSU) | `bypass_package_manager()` |
| RD-004 | Build.TAGS test-keys | `bypass_build_props()` |
| RD-005 | ro.secure / ro.debuggable 属性 | `bypass_build_props()` |
| RD-006 | RootBeer 库 | `bypass_rootbeer()` |
| RD-007 | RootTools 库 | `bypass_rootbeer()` |
| RD-008 | SafetyNet Attestation API | `bypass_safetynet()` |
| RD-009 | Play Integrity API | `bypass_safetynet()` |
| RD-010 | Native JNI root 检查 | 手动 / Magisk Hide |
| RD-011 | 可写路径检查 | `bypass_file_checks()` |
| RD-012 | Frida / Xposed 自身检测 | `bypass_frida_detection()` |
| RD-013 | 模拟器检测 | `bypass_build_props()` |
| RD-014 | APK 签名 / 篡改检查 | `bypass_package_manager()` |
## SSL Pinning 覆盖范围
| ID | 类别 | 绕过函数 |
|---|---|---|
| SSL-001 | OkHttp3 CertificatePinner | `bypass_okhttp()` |
| SSL-002 | 自定义 X509TrustManager | `bypass_trust_manager()` |
| SSL-003 | 自定义 HostnameVerifier | `bypass_hostname_verifier()` |
| SSL-004 | Network Security Config XML | `bypass_nsc()` |
| SSL-005 | Conscrypt / Cronet | `bypass_trust_manager()` |
| SSL-006 | HttpsURLConnection | `bypass_hostname_verifier()` |
| SSL-007 | Appcelerator Titanium | `bypass_trust_manager()` |
| SSL-008 | Volley HurlStack | `bypass_trust_manager()` |
| SSL-009 | gRPC TLS 凭证 | `bypass_trust_manager()` |
| SSL-010 | Native JNI SSL pinning | 手动修补 native 层 |
| SSL-011 | Firebase / GMS TLS | `bypass_trust_manager()` |
| SSL-012 | 证书透明度 | `bypass_trust_manager()` |
| SSL-013 | 公钥锁定 | `bypass_trust_manager()` |
| SSL-014 | WebView SSL 处理 | `bypass_webview_ssl()` |
| SSL-015 | TrustKit 框架 | `bypass_trustkit()` |
## 项目结构
```
apkshield-pt/
├── apkshield.py # Main entry point
├── setup.sh # Installer for Kali Linux
├── README.md
└── core/
├── __init__.py
├── decompiler.py # apktool + jadx wrapper
├── root_detector.py # Root detection pattern engine
├── ssl_detector.py # SSL pinning pattern engine
├── frida_gen.py # Frida script generator
├── ai_analyzer.py # Optional AI deep analysis
└── reporter.py # HTML + JSON report generator
```
## 故障排除
**`No module named 'core'`**
```
# 确保从项目文件夹内部运行
cd apkshield-pt
python3 apkshield.py App.apk --no-ai
```
**`pip install` 在 Kali 上失败**
```
pip3 install rich anthropic --break-system-packages
```
**`apktool not found`**
```
sudo apt install apktool -y
```
**`jadx not found`**
```
sudo apt install jadx -y
```
**Frida 崩溃:`has more than one overload`**
此问题在当前版本中已修复。请确保下载了最新的 `master_bypass.js`。
**绕过后应用仍检测到 Root**
- 应用可能使用了原生 (C/C++) Root 检测 — 请查看报告中的 `native_root` 说明
- 尝试在运行 Frida 脚本的同时启用 Magisk Hide / Shamiko
- 使用 `--verbose` 并检查哪些特定的 hooks 记录了输出
## 法律声明
本工具仅用于授权的安全测试。作者不对任何滥用行为负责。在测试之前,请务必获得应用程序所有者的明确书面许可。
## 许可证
MIT 许可证 — 详情请参见 [LICENSE](LICENSE)。标签:Android, Apktool, APK反编译, APK安全, App安全评估, Docker支持, DSL, Frida, Frida脚本生成, Hook, Jadx, Python, Root检测绕过, Smali, SSL Pinning绕过, 云资产清单, 安全报告生成, 无后门, 目录枚举, 移动安全, 网络安全, 逆向工具, 逆向工程, 隐私保护, 黑盒测试