iw00tr00t/ios-ipa-extractor
GitHub: iw00tr00t/ios-ipa-extractor
一款免越狱的 iOS 应用 IPA 提取工具,通过 Frida 枚举设备已安装应用并从苹果 CDN 下载原始安装包,三步即可完成。
Stars: 0 | Forks: 0
# 📦 iOS IPA 提取器




## ✨ 功能介绍
通过 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, 逆向工具, 逆向工程, 非越狱