vphone-cli 如何选择正确变体:根据研究需求挑选 firmware variant 的完整方法论
【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-cli
vphone-cli是一款基于 Apple Virtualization.framework 启动「虚拟 iPhone」的开源命令行工具。它通过 PCC 研究 VM 基础设施,让你下载、打补丁并还原固件。其中**选择正确的 firmware variant(固件变体)**是整个流程里最关键的决策——less、regular、dev、jb、exp五种变体对应不同的安全绕过强度,选错会导致启动失败或功能缺失。本文给出一套可落地的选型方法论,帮你快速匹配研究需求。
一分钟看懂 5 种 firmware variant
vphone-cli 通过--variant(短参数-V)选择固件变体,安全绕过能力逐档递增。先看全景对照表:
| 变体 | 启动链补丁 | CFW 阶段 | 核心能力 | 适用场景 |
|---|---|---|---|---|
less | 4 个 | 2 阶段 | 无补丁——保留 iOS 全部安全缓解 | 需要最接近真机的基线环境 |
regular | 42 个 | 10 阶段 | AMFI / SSV / Img4 / TXM 绕过 | 常规研究、调试 |
dev | 53 个 | 12 阶段 | + TXM 权限 / 调试绕过 | 需要调试器、开发者模式 |
jb | 113 个 | 14 阶段 | + 完整越狱(Sileo、TrollStore) | 越狱生态研究 |
exp | 141 个 | 18 阶段 | JB 超集 + 反 VM 检测补丁 | 对抗虚拟机的深度实验 |
💡记忆口诀:
exp是jb的超集——JB 打过的补丁 EXP 全都有,额外只多一套「实验性反虚拟机检测」补丁,且不会污染其他变体。
决策树:三步锁定你的 variant
第一步:你的研究是否需要越狱?
- 不需要越狱→ 走
less或regular或dev - 需要越狱(装 tweak、用 Sileo、跑 TrollStore)→ 直接选
jb或exp
第二步:是否需要调试器 / 开发者模式?
- 需要 lldb 附加、开发者模式→ 至少
dev - 不需要→
regular即可,补丁更少、更接近原生行为
第三步:是否要做反虚拟机检测实验?
- 需要绕过「我是不是 VM」检测(如
kern.hv_vmm_present)→ 选exp - 不需要→ 停在
jb
各变体技术差异速查
less:最干净的基线
只打 4 个启动链补丁,不修改TXM / Kernel,保留 iOS 所有安全缓解。适合做「补丁前 / 补丁后」对比研究的对照组。
regular:日常研究的甜点区
42 个补丁覆盖 AMFI、SSV、Img4、TXM 绕过,能让固件正常启动并进入可用状态,是大多数人的默认选择(也是 CLI 的默认值)。
dev:加上调试能力
在regular基础上启用TXMDevPatcher,额外绕过 TXM 的 get-task-allow、调试器权限与开发者模式,方便 lldb 附加。
jb:完整越狱
113 个补丁,注入KernelJBPatcher+IBootJBPatcher,首次启动自动安装 Sileo 与 TrollStore,是绝大多数越狱研究的起点。
exp:反虚拟机检测实验
JB 超集 +KernelEXPPatcher(重命名hv_vmm_presentsysctl)+ DeviceTree 身份改写(伪装成 D47AP / iPhone17,3)。适合研究如何隐藏「这是虚拟机」这一事实。
如何传入 variant:两条命令路径
一键流程(推荐新手)
vphone-cli vm create myphone -V jbvm create会自动串起「下载 → 打补丁 → DFU 还原 → CFW 安装 → 首次启动」全流程,-V后面接变体名即可。
手动分步流程(需要精确控制时)
vphone-cli vm new myphone vphone-cli fw prepare myphone --iphone-version 26.1 vphone-cli fw patch myphone --variant jb # 在这里指定 variant变体选项定义在 VPhoneCLI.swift 中,枚举本身在 FirmwarePipeline.swift:
public enum Variant: String, Sendable { case less case regular case dev case jb case exp }变体如何影响补丁流水线
固件补丁按固定顺序执行:AVPBooter → iBSS → iBEC → LLB → TXM → Kernel → DeviceTree。变体在每一步都会切换不同的 Patcher 组合:
- TXM 步骤:
regular用基础TXMPatcher,dev/jb/exp换成TXMDevPatcher(增加权限 / 调试 / 开发者模式绕过) - Kernel 步骤:
jb先跑基础补丁再叠加 JB 扩展;exp在 JB 之上再叠加实验性补丁 - DeviceTree 步骤:仅
exp追加身份属性改写(dtIncludeIdentity = variant == .exp)
这套逻辑集中在 FirmwarePipeline.swift 的组件列表构建中。每个组件的逐条补丁对照,可在 research/0_binary_patch_comparison.md 查到,那里用表格列出了每个补丁在 Regular / Dev / JB 下的启用状态(Y / -)。
常见选型误区
| 误区 | 正确做法 |
|---|---|
| 「补丁越多越好,直接 exp」 | exp 的反检测补丁可能引入不稳定,按需选择,研究常规问题用 regular/jb |
| 「想调试却选了 regular」 | regular 不含调试绕过,需要 lldb 请至少用 dev |
| 「越狱失败怪固件」 | 先确认 SSH 账号:jb用mobile@(密码alpine),regular/dev用root@ |
| 「一次选错无法改」 | 用fw patch <name> --variant <v>重新打补丁即可切换 |
验证你的选择是否正确
启动后通过 SSH 进入验证:
- jb / exp:
ssh -p 22222 mobile@<vm-ip>(密码alpine) - regular / dev:
ssh -p 22222 root@<vm-ip> - 所有变体 VNC:
vnc://<vm-ip>:5901
能正常登录、系统不闪退、且具备你期望的调试 / 越狱能力,就说明变体选对了。更多环境版本兼容矩阵见 README.md 中的 Tested Environments 表格。
小结
- 要基线对比→
less - 要日常研究→
regular(默认) - 要调试器→
dev - 要完整越狱→
jb - 要反虚拟机检测实验→
exp
记住「补丁逐档递增、exp 是 jb 超集」这两点,配合三步决策树,你就能在 10 秒内为任意研究需求锁定正确的 firmware variant,避免反复试错浪费时间。
【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考