emrezdemir/apk-decompiler

GitHub: emrezdemir/apk-decompiler

一个纯 Python 实现的跨平台 APK 反编译与安全检查 CLI 工具,无需 Java 即可完成核心分析,需要时自动集成 jadx/apktool 进行完整反编译。

Stars: 0 | Forks: 0

# apkdec [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/eaa46049e2122100.svg)](https://github.com/emrezdemir/apk-decompiler/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) `apkdec` 从命令行检查并反编译 Android `.apk` 文件。 它的 **核心是纯 Python,零第三方依赖且无需 JVM** —— 它 解码二进制 `AndroidManifest.xml`,总结 APK,检查 DEX 字节码,并在任何支持 Python 3.8+ 的地方提取内容。要获得完整的 **Java 源代码** 或 **smali** 反编译,它会透明地下载并驱动业界顶级的 JVM 工具([jadx](https://github.com/skylot/jadx) 和 [apktool](https://github.com/iBotPeaches/Apktool))。

apkdec terminal: 'apkdec info' showing package metadata and 'apkdec scan' showing colour-coded security findings

## 功能 | 命令 | 功能说明 | 需要 Java? | | --- | --- | --- | | `info` | 包名、版本、SDK 级别、权限、组件、原生库、签名方案 | ❌ | | `scan` | **安全审查**:manifest 加固、暴露的攻击面、危险权限、弱签名、硬编码的机密信息 | ❌ | | `manifest` | 解码二进制 `AndroidManifest.xml` → 可读的文本 XML | ❌ | | `extract` | 解压 APK 并在旁边输出解码后的 manifest | ❌ | | `dex` | DEX 统计信息,可选列出所有类名 | ❌ | | `strings` | 从所有 DEX 文件中导出字符串 | ❌ | | `decompile` | 完整的 **Java 源代码** (jadx) 或 **smali + 资源** (apktool) | ✅ | | `wizard` | 交互式引导菜单 —— 无需记住任何命令参数 | ❌ | | `setup` | 下载 JVM 引擎并检查 Java 运行时 | — | | `doctor` | 报告您的环境和已安装的工具 | — | 前六行中的所有操作都**开箱即用** —— 无需 Java,无需 `pip` 依赖,无需网络。 ## 快速开始 —— 一条命令,无需安装 使用内置启动器克隆并运行。**无需 `pip install`,无需设置** —— 仅需 Python 3.8+。 ``` git clone https://github.com/emrezdemir/apk-decompiler.git cd apk-decompiler # macOS / Linux ./apkdec info app.apk # Windows (PowerShell) .\apkdec.ps1 info app.apk # Windows (cmd,或者直接双击 apkdec.bat) apkdec.bat info app.apk ``` ### 交互模式(最简单) **不带任何参数**运行启动器(或在 Windows 上双击 `apkdec.bat`) 即可打开引导菜单 —— 选择您的 APK(支持拖放)并选择一个操作。 无需记住参数: ``` ====================================================== apkdec 0.1.0 - interactive mode ====================================================== APK path (or drag & drop the file here): app.apk File: app.apk 1) Show APK info 2) Security scan 3) Decode AndroidManifest.xml 4) Extract APK contents 5) DEX statistics 6) List all classes 7) Dump DEX strings 8) Decompile to Java source (jadx, needs Java) 9) Decompile to smali (apktool, needs Java) 10) Environment check (doctor) c) Choose a different APK q) Quit Select: ``` 您也可以显式地使用 `apkdec wizard` 启动它。 ## 安装(可选) —— 将 `apkdec` 设为全局命令 如果您想在任何地方直接输入 `apkdec`(而不是使用内置启动器), 请运行适合您平台的 **首次运行安装程序**。它会检查您的 Python,安装 该命令,并运行健康检查。 ``` # macOS / Linux sh scripts/install.sh # Windows (PowerShell) powershell -ExecutionPolicy Bypass -File scripts\install.ps1 # Windows — 或者直接双击 scripts\install.bat ``` 在 Windows 上,安装程序还提供了一个**桌面快捷方式**,双击即可打开 交互式向导(传递 `-NoShortcut` 可跳过)。 想手动操作?`pip install .` 也可以,您也可以随时通过 `python -m apkdec --help` 将其作为模块运行。 系统要求: - 核心功能需要 **Python 3.8+**。 - 仅当您使用 `apkdec decompile` 时才需要 **JDK(推荐 17+)**。`apkdec doctor` 会告诉您它能否找到 JDK,如果找不到,`apkdec decompile` 会打印 特定操作系统的安装说明。 ## 使用方法 ``` # 检查 APK(无需 Java) apkdec info app.apk apkdec info app.apk --json # machine-readable # 静态安全审查(无需 Java) apkdec scan app.apk # manifest issues, attack surface, secrets apkdec scan app.apk --json # machine-readable # 恢复可读的 AndroidManifest.xml apkdec manifest app.apk apkdec manifest app.apk -o AndroidManifest.xml # 解包所有内容 + 解码 manifest apkdec extract app.apk -o app_unpacked # 查看 bytecode apkdec dex app.apk # per-dex stats apkdec dex app.apk --classes # list every class apkdec strings app.apk --min-len 6 # interesting strings only # 完整反编译(首次使用时下载 jadx/apktool) apkdec decompile app.apk -o app_src # Java source via jadx apkdec decompile app.apk -e apktool -o app_dec # smali + resources via apktool # 环境与工具 apkdec doctor apkdec setup --tool all ``` ### 反编译的工作原理 `apkdec decompile` 将繁重的工作保留在它最合适的地方 —— 那些成熟、 维护良好的 JVM 反编译器中: 1. 它会检查 Java 运行时(`JAVA_HOME` 或 `PATH` 中的 `java`)。 2. 首次使用时,它将选择的引擎下载到用户级缓存目录中 (`~/.apkdec/`,可通过 `APKDEC_HOME` 环境变量覆盖), 锁定最新的 GitHub 发布版本并提供离线备选方案。 3. 它运行引擎并流式传输其输出。 这为您提供了单一跨平台 CLI 的便利性,而无需 重新实现一个 Java 反编译器。 ### 安全审查 (`scan`) `apkdec scan` 提供快速、无依赖的初步筛查 —— 这是审查者在 深入分析之前进行的第一步。它会报告以下内容(带有严重级别): - **Manifest 加固** —— `debuggable`、`allowBackup`、明文流量、 缺少 network-security-config、`testOnly`。 - **攻击面** —— 没有保护性权限的 exported activities/services/receivers/providers (可被其他应用访问)。 - **权限** —— 应用请求的敏感/危险权限。 - **签名** —— 缺少签名或仅使用旧版 v1 签名(Janus, CVE-2017-13156)。 - **硬编码的机密信息** —— 在字节码中发现的 API 密钥、token、私钥块和 endpoint (打印时已脱敏)。 ``` apkdec scan app.apk ``` 检查结果是**供人工审查的线索,而非已确认的漏洞**, 没有检查结果也不能证明是安全的。当发现高危问题时,`scan` 会以非零状态退出, 因此它可以轻松接入 CI。 ## 为什么要开发另一个 APK 工具? - **真正的跨平台且便携** —— 只需一次 `pip install`,即可在 macOS、Windows 和 Linux 上使用完全相同的命令。 - 在执行最常见的任务(检查 manifest、 读取元数据、列出类)时**无需 Java** 即可工作。无需为了读取一个包 名而安装 200 MB 的工具链。 - **零第三方 Python 依赖** —— 仅使用标准库,因此 易于审计且可轻松集成到 CI 中。 - 当您需要时,可**扩展** 以输出真实的 Java/smali。 ## 项目结构 ``` apkdec, apkdec.bat, apkdec.ps1 # zero-install launchers (macOS/Linux, cmd, PowerShell) scripts/ install.sh # first-run installer (macOS/Linux) install.ps1, install.bat # first-run installer (Windows) + desktop shortcut docs/ screenshot.svg # terminal screenshot used in this README src/apkdec/ axml.py # binary AndroidManifest.xml (AXML) decoder — pure Python dex.py # Dalvik .dex header / table reader — pure Python apk.py # high-level APK info, extraction, summaries — pure Python security.py # static security analysis (scan) — pure Python tools.py # Java detection + jadx/apktool management decompile.py # orchestration of the JVM engines cli.py # argparse command-line interface tests/ # synthesized binary fixtures + unit tests (no real APK shipped) ``` ## 开发 ``` pip install -e ".[dev]" pytest ``` 测试套件在内存中合成有效的 AXML、DEX 和 APK 字节流,因此它 运行速度快,且不包含任何受版权保护的二进制文件。 ## 法律与道德使用 `apkdec` 专为**教育、互操作性、安全研究、 恶意软件分析以及调试您自己的应用程序**而设计。请仅反编译您拥有或 被明确授权分析的软件。请尊重您检查的任何应用的 许可证和条款,并遵守您所在司法管辖区的法律。 **本软件按“原样”提供,不提供任何担保。您需对您的 使用行为及其任何后果承担全部责任。作者不承担任何责任。** 这 是使用的条件 —— 在使用该工具之前,请阅读完整的 **[DISCLAIMER.md](DISCLAIMER.md)** (使用条款、可接受使用和责任限制)。 发现了 **apkdec 本身**的漏洞?请参阅 **[SECURITY.md](SECURITY.md)**。 ## 许可证 [MIT](LICENSE) ### 土耳其语摘要 `apkdec`, komut satırından çalışan, **macOS / Windows / Linux** uyumlu bir APK inceleme ve decompile aracıdır. Çekirdek özellikler (manifest çözme, paket bilgisi, DEX inceleme, içerik çıkarma) **saf Python ile, Java veya ek bağımlılık gerektirmeden** çalışır. Tam **Java kaynak kodu** veya **smali** çıktısı için `jadx` ve `apktool` araçlarını otomatik indirir (bunun için Java gerekir). **Kurulum gerektirmeden tek komutla** çalıştırabilirsiniz (sadece Python 3.8+ yeterli). Argümansız çalıştırınca (Windows'ta `apkdec.bat`'a çift tıklayınca) **interaktif menü** açılır — APK'yı sürükle-bırak yapıp işlemi seçmeniz yeterli. ``` ./apkdec # interaktif sihirbaz (macOS/Linux) .\apkdec.ps1 # interaktif sihirbaz (Windows PowerShell) ./apkdec info uygulama.apk # paket adı, sürüm, izinler (Java gerekmez) ./apkdec scan uygulama.apk # güvenlik taraması (Java gerekmez) ./apkdec manifest uygulama.apk # AndroidManifest.xml'i okunur hale getirir ./apkdec decompile uygulama.apk # jadx ile Java kaynak koduna çevirir ``` `apkdec`'i her yerden çağrılabilen global komut yapmak ve (Windows'ta) masaüstü kısayolu oluşturmak için ilk kurulum scriptini çalıştırın: ``` sh scripts/install.sh # macOS/Linux powershell -ExecutionPolicy Bypass -File scripts\install.ps1 # Windows # 或者在 Windows 上双击 scripts\install.bat 文件 ```
标签:Android安全, APK反编译, Python, 云安全监控, 云资产清单, 操作系统探测, 无后门, 移动开发, 逆向工具, 逆向工程, 静态分析