Kemosabe0x/ADB-APK-Puller

GitHub: Kemosabe0x/ADB-APK-Puller

这是一个交互式 CLI 工具,用于通过关键词搜索 Android 设备上的已安装应用,并提取基础 APK 文件到清晰命名的文件夹中,简化了 APK 提取流程。

Stars: 0 | Forks: 0

# ADB APK 提取工具 一个 Python 脚本,可让您使用 ADB 快速从 Android 设备提取**基础 APK**。 通过一个或多个关键词搜索已安装的包,选择要下载的项目,其 `base.apk` 文件将被保存在命名简洁的目录中。 ## 功能特性 - 🔍 **多关键词搜索** – 空格分隔的词语,不区分大小写 - 📱 **支持拆分 APK** – 自动从 `adb shell pm path` 输出中提取 `base.apk` 路径 - 📂 **智能目录命名** – 去除 `com.` 前缀,例如 `com.fitness22.workout` 变为 `fitness22.workout` - ❓ **交互式选择** – 通过编号、范围(如 `1‑3`)、逗号分隔列表或 `all` 来选择包 - 🔁 **无结果时重试** – 提示输入新关键词,而不是直接退出 - 🪟 **兼容 Windows, macOS, Linux** – 纯 Python,无需 `grep` 等特定于 shell 的工具 ## 系统要求 - [Python 3.8+](https://www.python.org/downloads/) - [Android 平台工具](https://developer.android.com/studio/releases/platform-tools) (ADB),且已添加到系统的 `PATH` 环境变量中 - Android 设备已启用 USB 调试 ## 安装说明 ``` # 克隆仓库 git clone https://github.com/YOUR_USERNAME/adb-apk-puller.git cd adb-apk-puller ``` 无需额外安装 Python 包 – 脚本仅使用标准库。 ## 使用方法 1. 通过 USB 连接您的 Android 设备,并确保已授权进行调试。 2. 运行脚本: ``` python pull_apk.py ``` 3. 在提示时输入一个或多个搜索关键词(例如 `fitness workout`)。 4. 脚本将列出所有匹配的包。 5. 通过输入数字(例如 `1,3`、`1-3` 或 `all`)选择您需要的包。 6. 每个所选应用的基础 APK 将被拉取到一个以包名命名的文件夹中(如果存在 `com.` 前缀则会被去除)。 ### 示例会话 ``` 🔑 Enter search keywords (space‑separated, or 'exit' to quit): fitness workout 🔍 Searching for packages matching: fitness, workout ... 📦 Matching packages: 1. homeworkout.fitness.app 2. com.fitness22.workout 3. com.fiftyworkouts.bodyweight.workoutapp Enter the numbers of the apps you want (e.g., 1,3 or 1-3), or 'all'. 👉 2-3 📁 Fetching APK paths for com.fitness22.workout... ⬇️ Pulling base.apk into fitness22.workout ... ✅ Successfully saved to fitness22.workout/base.apk 📁 Fetching APK paths for com.fiftyworkouts.bodyweight.workoutapp... ⬇️ Pulling base.apk into fiftyworkouts.bodyweight.workoutapp ... ✅ Successfully saved to fiftyworkouts.bodyweight.workoutapp/base.apk 🏁 Done. ``` 脚本运行完毕后,您将得到一个类似 `fitness22.workout/` 的文件夹,其中包含 `base.apk` 文件。 ## 工作原理 1. **列出包** – 运行 `adb shell pm list packages`,并筛选包含用户任意关键词的行。 2. **交互式选择** – 显示带编号的列表,解析用户输入以创建完整的包名列表。 3. **获取 APK 路径** – 对于每个选定的包,运行 `adb shell pm path `,并选取以 `/base.apk` 结尾的行。 4. **拉取并保存** – 去除 `package:` 前缀,运行 `adb pull /`,并根据修剪后的包名创建文件夹。 ## 配置 无需配置文件 – 所有设置都在运行时通过交互方式传递。 ## 故障排除 - **找不到 ADB** → 请确保已将 `platform-tools` 添加到系统的 `PATH` 环境变量中。 - **未连接设备** → 检查 USB 线缆,重新授权调试,或运行 `adb devices` 进行验证。 - **未找到 base.apk** → 一些较旧或单 APK 的应用可能不使用拆分 APK 结构。脚本会发出警告并跳过该包。 ## 许可证 本项目根据 MIT 许可证授权 – 详情请见 [LICENSE](LICENSE) 文件。
标签:ADB工具, Android开发, APK提取, 云资产清单, 交互式操作, 分块APK处理, 命令行界面, 安全测试, 应用备份, 应用搜索, 攻击性安全, 智能目录命名, 移动应用管理, 跨平台兼容, 逆向工具, 逆向工程