jacklv-coder/OrchardProbe
GitHub: jacklv-coder/OrchardProbe
OrchardProbe 是一个规划中的本地优先 iOS 应用研究工具,旨在以可审计、可复现的方式为授权用户提供 Mach-O 解密与应用导出能力。
Stars: 0 | Forks: 0
# OrchardProbe
[简体中文](README.zh-CN.md)
OrchardProbe 旨在使经过授权的 iOS 二进制文件研究更加透明和可复现。计划中的工作流将检测设备能力、选择范围严格限定的导出 backend、独立验证每一个相关的 Mach-O,并以机器可读的 manifest 记录成功、失败或跳过的内容。
## 仅限授权使用
仅对您或您的组织拥有的应用,或者在所有者已给予您明确授权以执行拟议测试的情况下,才能使用 OrchardProbe。您有责任遵守适用的法律、平台条款、合同以及该授权的限制。
在参与之前,请阅读:
- [法律与授权声明](LEGAL.md)
- [可接受使用政策](ACCEPTABLE_USE.md)
- [安全政策](SECURITY.md)
## 项目愿景
目标不仅仅是生成一个归档。成功的导出应该是可解释且可独立验证的:
- `doctor` 报告宿主机、设备、权限和依赖是否合适。
- backend 选择由能力驱动并被记录,而不是仅从 iOS 版本推断。
- 主可执行文件、framework、动态库和扩展获得各自的结果。
- 输入和输出 hash、Mach-O metadata、签名状态、证据级别和失败原因出现在版本化的 manifest 中。
- 不支持的组合会明确失败;打包 ZIP 绝不会被视为每个二进制文件都被正确处理的证明。
## 计划范围
计划中的工具链将:
- 发现已显式连接的设备并枚举范围内的用户应用;
- 优先使用 USB 传输,仅将受限的 SSH 路径视为备选方案;
- 使用一个短生命周期的设备 helper,仅具有技术 spike 验证所需的最低必要权限和 entitlements;
- 仅流式传输所需的代码范围和选定 bundle 根目录下的文件,具有严格的路径和大小限制,且不暴露任意 shell、路径、PID 或内存访问;
- 在宿主机上安全地重建和验证 Mach-O 二进制文件;
- 创建一个**未重新签名、仅供分析**的 app bundle 或 IPA,以及一个单独的 `manifest.json`;嵌入的签名可能仍然存在但无效;
- 提供一个完全基于第一方生成 fixture 的无设备 demo。
初始兼容性将有意设置得较窄,并由具体的测试记录支持。有关当前的 MVP 边界,请参阅 [PROJECT_PLAN.md](PROJECT_PLAN.md)。
## 非目标
OrchardProbe 不会提供或促进:
- 搜索、下载、托管或共享未经授权的第三方已解密 IPA;
- Apple ID 登录、自动购买或批量 App Store 获取;
- 绕过购买、订阅、许可证、反作弊系统、账户限制或特定应用的保护;
- 提供或执行越狱、kernel 漏洞利用、PAC/PPL 绕过,或针对商业应用的定向绕过;
- 重新签名、安装、功能修改或一键分发;
- 提取 Keychain 项目或应用数据容器(如 Documents、cookie 或数据库);
- 基于云的导出服务。
添加这些能力的请求或贡献超出了项目范围。
## 计划的 CLI
以下命令层面是草案设计,并非可用接口:
```
oprobe doctor [--json]
oprobe devices
oprobe apps
oprobe export --output
oprobe verify [--json]
oprobe demo
```
目前特意还没有安装命令。只有在存在可复现的 alpha 版本后,才会添加安装文档。
## 架构概述
```
flowchart LR
CLI["Rust host CLI"] --> Policy["Authorization and scope policy"]
Policy --> Doctor["Doctor and capability probe"]
Doctor --> Router["Backend router"]
Router --> Helper["Minimum-necessary device helper"]
Helper --> Stream["Restricted code-range stream"]
Helper --> Bundle["Bundle-root constrained file stream"]
Stream --> Rebuild["Mach-O reconstruction"]
Bundle --> Package["Not re-signed analysis package"]
Rebuild --> Package
Package --> Verify["Per-binary evidence report and manifest"]
```
宿主机计划作为一个 Rust workspace。一个小型的 Objective-C/C helper 将仅执行所需的设备端操作。Sprint 0 将在选择 MVP backend 之前比较 suspended-spawn 和 mapped-file 候选方案;目前均未声称可运行。Backend adapter 将保持在版本化的能力握手之后隔离,允许项目添加第二种实现,而无需将 helper 扩展为通用的远程访问服务。
## 隐私与安全原则
- 本地优先:app bundle、报告、日志和设备详细信息保留在用户的机器上。
- 无遥测:项目不会收集使用情况、IPA、日志或设备数据。
- 最小收集:仅 `.app` bundle 在范围内;receipts、`SC_Info` 和数据容器在设计上被排除。
- 可审计的输出:结构化报告解释 backend 选择、每个文件的状态、hash、签名状态和证据级别。诸如 `cryptid == 0` 之类的 metadata 绝不会被单独视为正确明文的证明;没有明文 oracle 的结果将被标记为不确定。
- 诚实的兼容性:公开的支持声明需要有记录的真实设备结果。
- 安全的 fixture:仓库测试使用项目生成的 DemoLab artifact,绝不使用专有的第三方二进制文件。
## 路线图
OrchardProbe 目前处于 **Sprint 0 / 项目基础** 阶段。
1. **Sprint 0:** 冻结范围和威胁模型,定义 schema,构建 DemoLab fixture,并在拥有的测试应用上验证一个狭窄的技术 spike。
2. **v0.1 alpha:** 添加 Rust CLI 骨架、能力诊断、USB 传输、一个经过测试的 backend、重建、打包和验证。
3. **v0.3:** 扩展每个二进制文件的覆盖率,添加另一个 backend 或 fallback,并发布真实的兼容性矩阵。
4. **v0.6:** 强化可恢复性、结构化集成、fuzzing 和自托管设备测试。
5. **v1.0:** 仅在独立安全审查和可衡量的可靠性目标达标后,才稳定协议和 manifest。
此路线图描述的是方向,而不是保证的日期或兼容性。详细计划和发布门控位于 [PROJECT_PLAN.md](PROJECT_PLAN.md)。
## 许可证与独立性
仓库源代码在 [Apache License 2.0](LICENSE) 下提供。该许可证不授予对使用 OrchardProbe 分析的任何应用、设备、平台或内容的权利。OrchardProbe 是一个独立项目,不隶属于 Apple Inc.,也未获得其认可。
标签:CVE监控, 可视化界面