iw00tr00t/ios-ipa-extractor

GitHub: iw00tr00t/ios-ipa-extractor

一款免越狱的 iOS 应用 IPA 提取工具,通过 Frida 枚举设备已安装应用并从苹果 CDN 下载原始安装包,三步即可完成。

Stars: 0 | Forks: 0

# 📦 iOS IPA 提取器 ![平台](https://img.shields.io/badge/platform-macOS-lightgrey?logo=apple) ![iOS](https://img.shields.io/badge/iOS-16%2B-blue?logo=apple) ![许可](https://img.shields.io/badge/license-MIT-green) ![Python](https://img.shields.io/badge/python-3.8%2B-yellow?logo=python) ## ✨ 功能介绍 通过 USB 连接你的 iPhone/iPad,将任何已安装的 App Store 应用提取为标准的 `.ipa` 文件——可直接安装到其他设备、进行审查或归档。 **适用于:** - 任何未越狱的 iOS 16+ 设备 - 所有 App Store 应用(免费或付费,只要你的 Apple ID 有权获取) - macOS 12 Monterey 及更高版本(Apple Silicon 和 Intel 芯片) ## 🛠 工作原理 在未越狱的 iOS 设备上,设备上的应用二进制文件受到沙盒保护,即使通过 USB 连接,macOS 也无法读取。因此,我们不再从设备中直接提取,而是采用以下方式: 1. 使用 [Frida](https://frida.re) **检测**已连接的设备,并枚举已安装的应用 2. 从运行中的设备上**识别**出应用的 Bundle ID 3. 使用 [ipatool](https://github.com/majd/ipatool) 并通过你的 Apple ID 认证,直接从 Apple CDN **下载**原版 IPA 生成的 IPA 与 Apple 分发的文件完全相同,并带有 FairPlay 加密。它可以在任何使用同一 Apple ID 授权的设备上安装。 ``` iPhone (USB) macOS Apple CDN │ │ │ │── enumerate apps ─────────▶│ │ │◀─ bundle ID: com.x.y ─────│ │ │ │── download IPA ──────────▶│ │ │◀─ MyApp.ipa (encrypted) ──│ │ │ │ │◀──────── install ─────────│ │ ``` ## ⚡ 快速开始(3 步) ### 前置条件 - macOS 12+ - iPhone/iPad 通过 USB 连接,并已同意**“信任此电脑”** - 你的 **Apple ID**(已在设备上安装了目标应用的账号) ### 第 1 步 — 克隆并配置 ``` git clone https://github.com/iw00tr00t/ios-ipa-extractor.git cd ios-ipa-extractor chmod +x extract_ipa.sh ``` ### 第 2 步 — 安装依赖 ``` # 安装 Homebrew(如果尚未安装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 安装 ipatool 和 Python deps brew install ipatool pip3 install -r requirements.txt ``` ### 第 3 步 — 运行 ``` ./extract_ipa.sh ``` 脚本将会: - 检测已连接的 iPhone/iPad - 显示所有已安装的应用及其 Bundle ID - 要求输入你的 Apple ID 进行认证 - 将 IPA 下载到当前目录 ## 🎯 使用方法 ### 交互模式(首次使用推荐) ``` ./extract_ipa.sh ``` ### 直接指定应用 ``` ./extract_ipa.sh -b com.example.myapp ``` ### 完整选项 ``` ./extract_ipa.sh -b com.example.myapp -o ~/Downloads/MyApp.ipa -e me@icloud.com ``` | 参数 | 说明 | |---|---| | `-b`, `--bundle-id` | 应用的 Bundle identifier | | `-o`, `--output` | `.ipa` 文件的输出路径 | | `-e`, `--email` | Apple ID 邮箱 | | `-p`, `--password` | Apple ID 密码(可选,如未填写将会提示输入) | | `-c`, `--2fa-code` | 2FA 验证码(可选,如需要将会提示输入) | ### 仅列出设备上的应用 ``` python3 find_apps.py # List all 3rd-party apps python3 find_apps.py "spotify" # Search by name or bundle ID python3 find_apps.py --all # Include system apps ``` ## 📋 逐步操作(手动) 如果你倾向于自己执行每一个步骤: **1. 查找应用的 Bundle ID** ``` python3 find_apps.py ``` ``` [+] Connected to: iPhone PID Name Bundle ID -------------------------------------------------------------------------------- - Instagram com.burbn.instagram - Netflix com.netflix.Netflix - Spotify com.spotify.client - MyApp com.bundle.app ``` **2. 使用 Apple ID 进行认证** ``` ipatool auth login -e your@icloud.com # 在提示时输入密码 # 在提示时输入 2FA 代码 ``` **3. 下载 IPA** ``` ipatool download -b com.bundle.app -o MyApp.ipa --purchase ``` **4. 验证 IPA** ``` unzip -l MyApp.ipa | grep "Payload/" ``` ``` 0 Payload/MyApp.app/ 58787824 Payload/MyApp.app/MyApp 10276 Payload/MyApp.app/Info.plist ``` ## 📲 在另一台设备上安装 IPA ### 相同 Apple ID(最简单) 在目标设备上登录同一个 Apple ID,然后: ``` # 获取目标设备 UDID xcrun devicectl list devices # 安装 xcrun devicectl device install --device MyApp.ipa ``` 或者将 `.ipa` 文件拖拽到 **Xcode → Window → Devices and Simulators** 中。 ### 不同 Apple ID(需要重新签名) 你需要一个 Apple Developer 账号。使用 [iOS App Signer](https://dantheman827.github.io/ios-app-signer/) 或者: ``` # 安装 ios-deploy brew install ios-deploy # 使用你的 certificate 重新签名(需要 Xcode + provisioning profile) # 参见:https://developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices ``` ## 🔧 故障排除 | 问题 | 解决方案 | |---|---| | `No iOS device detected` | 解锁设备 → 点击**信任此电脑** → 重试 | | `Failed to get account` | 先运行 `ipatool auth login -e you@icloud.com` | | `License required` | 添加 `--purchase` 参数(对免费应用同样有效) | | `Frida not found` | `pip3 install frida frida-tools` | | `ipatool not found` | `brew install ipatool` | | 下载卡住 / 速度慢 | 正常现象——大型应用可能会超过 500MB,请耐心等待 | | 2FA 提示循环 | 使用 `--auth-code` 参数并输入设备上的验证码 | ## 🔐 安全与隐私 - 你的 Apple ID 凭据**仅保存在你本地的 macOS Keychain** 中(由 ipatool 管理)——除了 Apple 服务器外,绝不会发送到其他任何地方 - 下载的 IPA 使用 **FairPlay DRM** 加密——二进制文件无法在 PC 上运行或读取,只能在已授权的 iOS 设备上使用 - 本工具不会修改、破解或解密任何应用二进制文件 ## 📚 致谢 - [Frida](https://frida.re) — 用于应用枚举的动态插桩工具包 - [ipatool](https://github.com/majd/ipatool) — 用于与 Apple App Store 交互的 CLI 工具 - [pymobiledevice3](https://github.com/doronz88/pymobiledevice3) — 纯 Python 实现的 iOS 设备通信库 ## 📄 许可证 MIT — 详见 [LICENSE](LICENSE) ## 🤝 参与贡献 欢迎提交 PR!如果你遇到问题或希望添加对企业版/TestFlight 应用的支持,请提交一个 Issue。
标签:AppStore下载, App安全分析, Docker支持, FairPlay, Frida, iOS16, iOS取证, ipatool, IPA提取, macOS工具, Python, USB通信, 云资产清单, 应用备份, 应用安全, 应用抓包, 数字取证, 无后门, 无线安全, 目录枚举, 移动安全, 网络安全审计, 自动化脚本, 苹果CDN, 逆向工具, 逆向工程, 非越狱