笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
Boot a Virtual iPhone via Apple's Virtualization.framework
{"category":"编程开发","title_cn":"用 Apple Virtualization.framework 启动虚拟 iPhone:vphone-cli 深度解析","content":"> 通过 Apple 官方虚拟化框架与 PCC 研究 VM 基础设施,在 Apple Silicon Mac 上完整启动虚拟 iPhone 系统。
引言
在 Apple 生态中,iOS 模拟器(Simulator)与真正的 iPhone 系统有着本质区别——模拟器运行的是 x86_64 或 arm64 的 macOS 衍生内核,而非 iOS 的 XNU 内核与用户态。长期以来,安全研究人员和逆向工程师只能通过越狱真机或昂贵的硬件设备来研究 iOS 系统。vphone-cli 项目的出现改变了这一局面:它利用 Apple 官方提供的 Virtualization.framework,结合从 PCC(Private Cloud Compute)研究项目中逆向出的虚拟机基础设施,实现了在 Apple Silicon Mac 上直接启动一个完整的、未经阉割的 iOS 系统。
项目概览
vphone-cli 是一个开源命令行工具,托管于 GitHub(Lakr233/vphone-cli),目前拥有 8.9k Star 和 1.3k Fork。它的核心思路是:将 iOS 的 IPSW 固件下载后,通过一系列二进制补丁(patch)绕过 Apple 的启动链验证,然后借助 Apple Virtualization.framework 的虚拟机能力,在 macOS 上直接引导 iOS 内核。
技术原理
1. Virtualization.framework 与 PCC 研究
Apple 在 macOS 15 Sequoia 中增强了 Virtualization.framework,使其能够支持更高级的虚拟化场景。而 PCC(Private Cloud Compute)是 Apple 为 Apple Intelligence 打造的云端计算环境,其底层运行着特殊的 iOS 变体。安全研究人员在分析 PCC 的 VM 镜像时,发现了 Apple 内部用于虚拟化 iOS 的完整基础设施——包括特殊的启动参数、设备树配置以及虚拟硬件抽象层。vphone-cli 正是复用了这套基础设施。
2. iOS 启动链与补丁机制
iOS 的启动链(Boot Chain)包含多层签名验证:从 iBoot 到内核,再到根文件系统的 SSV(Signed System Volume)和 IMG4 镜像验证。vphone-cli 通过二进制补丁的方式,在固件层面修改这些组件,使其跳过或绕过验证逻辑。
项目提供了五种补丁变体(Variant),安全级别递增:
| 变体 | 启动链补丁数 | 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 超集 + 反虚拟机检测研究补丁 |
每个变体对应不同的安全绕过级别,用户可以根据研究需求选择。例如,仅需分析系统行为可选择 less,需要安装第三方应用则选择 jb。
3. 固件准备与恢复流程
完整的 VM 创建流程包括:
- 下载 IPSW:通过
fw prepare命令下载对应 iPhone 型号的 IPSW 固件(包括 iPhone 系统和 CloudOS 系统) - 合并与补丁:将 IPSW 解包,应用所选变体的补丁集合
- DFU 恢复:启动 VM 进入 DFU(Device Firmware Update)模式,执行恢复操作
- CFW 安装:安装自定义固件(Custom Firmware),包括越狱组件
- 首次启动:完成 iOS 设置向导,进入系统
项目还支持 SHSH(Signature HaSH)获取,这是 iOS 恢复过程中的签名验证凭证。
环境要求与安装
硬件与系统要求
- 主机:Apple Silicon Mac(M1/M2/M3/M4 系列)
- 系统:macOS 15+(Sequoia 或更高版本)
- 开发工具:Xcode + iOS SDK(用于交叉编译 guest 守护进程)
- 特殊权限:需要放宽 SIP/AMFI 限制,以允许私有 PV=3 entitlements 与未签名二进制
依赖安装
brew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd
安装与构建
# 通过 Homebrew 安装
brew install zqxwce/tap/vphone-cli
# 或从源码构建
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
./scripts/setup_tools.sh # 安装依赖、构建工具链子模块、创建 Python venv
./scripts/build.sh # 构建 + 签名 vphone-cli,打包 .app,交叉编译 vphoned
快速上手
一条命令创建并启动 VM
# 创建 VM(自动完成下载 → 补丁 → DFU 恢复 → CFW 安装 → 首次启动)
vphone-cli vm create myphone -V jb
# 启动 VM
vphone-cli vm launch myphone
手动分步操作
# 1. 创建空 VM bundle
vphone-cli vm new myphone
# 2. 下载并合并 IPSW(指定 iOS 版本)
vphone-cli fw prepare myphone --iphone-version 26.1
# 3. 对启动链应用补丁
vphone-cli fw patch myphone --variant jb
# 4. 以 DFU 模式启动
vphone-cli vm launch myphone --dfu &
# 5. 获取 SHSH 并执行恢复
vphone-cli restore myphone --get-shsh
vphone-cli restore myphone
# 6. 停止 DFU 启动
vphone-cli vm stop myphone
# 7. 安装 CFW(需要 sudo)
vphone-cli cfw install myphone --variant jb
# 8. 首次正常启动
vphone-cli vm launch myphone
VM 管理命令
vphone-cli vm list # 列出所有 VM
vphone-cli vm info myphone # 查看单个 VM 详情
vphone-cli vm config myphone --cpu 8 --memory 8192 # 调整 CPU/内存
vphone-cli vm clone myphone myphone-2 # 快速 APFS 克隆(新设备身份)
vphone-cli vm export myphone --out myphone.tzst # 导出(zstd 快速压缩)
vphone-cli vm import myphone.tzst --name restored # 导入
vphone-cli vm rename myphone iphone16 # 重命名
vphone-cli vm delete iphone16 # 删除
连接与使用
SSH 连接
- 越狱模式(jb/exp):
ssh -p 22222 mobile@<vm-ip>,密码alpine - 普通/开发模式(regular/dev):
ssh -p 22222 root@<vm-ip>
VNC 图形界面
通过 VNC 客户端连接 vnc://<vm-ip>:5901 即可看到 iOS 图形界面。如果卡在 "Press home to continue" 界面,可以通过 VNC 右键(双指点击)模拟 Home 按钮。
安装应用
通过运行中 VM 的 Install 菜单,可以拖拽或选择 .ipa / .tipa 文件进行安装。
目录结构与数据管理
所有 vphone-cli 产生的数据默认存放在 ~/.vphone/ 目录下,保持仓库和 .app 的干净与可移植性:
| 路径 | 内容 |
|---|---|
~/.vphone/VMs/ |
VM bundle(每个 VM 一个目录) |
~/.vphone/ipsws/ |
下载的 iPhone + CloudOS IPSW 缓存 |
~/.vphone/tools/ |
APFS seal-volume 工具缓存 |
~/.vphone/debs/ |
越狱 CFW 所需的 .deb 包 |
~/.vphone/venv/ |
Python 虚拟环境 |
可以通过环境变量覆盖默认位置:$VPHONE_ROOT 覆盖整个数据根目录,$VPHONE_LIBRARY_ROOT 和 $VPHONE_VENV_DIR 分别覆盖 VM 库和 Python 环境目录。优先级为:单项覆盖 > $VPHONE_ROOT > 默认路径。
SIP/AMFI 权限配置
由于需要加载未签名的私有 entitlements 二进制,必须放宽 macOS 的安全策略。提供两种方案:
方案 A:完全禁用 SIP + AMFI(最宽松)
在 macOS 恢复模式(长按电源键 → 终端)中执行:
csrutil disable
csrutil allow-research-guests enable
重启进入 macOS 后设置 AMFI boot-arg(需要 SIP 完全关闭才生效):
sudo nvram boot-args=\"amfi_get_out_of_my_way=1 -v\"
# 再次重启
方案 B:保留 SIP(仅放宽 debug)+ 二进制白名单
在恢复模式中执行:
csrutil enable --without debug
csrutil allow-research-guests enable
重启后运行:
vphone-amfidont
此方案保持 AMFI 系统级启用,仅对特定二进制放行,安全性更高。
测试兼容性矩阵
项目已在多种 Mac 型号上验证,以下为部分测试数据:
| 主机型号 | 主机系统 | iPhone 型号 | iPhone 系统 | CloudOS |
|---|---|---|---|---|
| Mac16,11 | 27.0b2 | 17,3 | 18.6.2 (22G100) | 26.1 (23B85) |
| Mac16,8 | 26.5.1 | 17,3 | 26.0 (23A341) | 26.1 (23B85) |
| Mac16,12 | 26.3 | 17,3 | 26.1 (23B85) | 26.1 (23B85) |
| Mac16,12 | 26.3 | 17,3 | 26.3 (23D127) | 26.3 (23D128) |
| Mac16,11 | 26.2 | 17,3 | 26.4 (23E246) | 26.4 (23E5207q) |
| Mac16,6 | 26.4.1 | 17,3 | 26.6 (23G71) | 26.4 (23E5207q) |
| Mac16,6 | 26.6.1 | 17,3 | 27.0 (24A5408d) | 26.4 (23E5207q) |
可以看出,项目支持从 iOS 18.6 到 iOS 27 beta 的广泛版本范围。
常见问题与解决方案
1. zsh: killed ./vphone-cli
原因:AMFI/调试限制未被绕过。解决:确保已按照前置要求设置 amfi_get_out_of_my_way=1 或使用 amfidont。
2. Virtualization is not available on this hardware
原因:当前 Mac 本身运行在虚拟机中(嵌套虚拟化不支持 PV=3 guest)。解决:使用非嵌套的 macOS 15+ 物理机。
3. 卡在 "Press home to continue"
解决:通过 VNC 连接,右键(双指点击)模拟 Home 按钮。
4. 系统应用无法安装
原因:在 iOS 设置向导中选择了日本或欧盟作为地区,这些地区有额外的监管检查,VM 无法满足。解决:选择美国等其他地区。
5. 应用启动崩溃:EXC_GUARD / GUARD_TYPE_MACH_PORT
原因:iOS 18 及以上版本的 exc_guard 保护机制。解决:使用 vphone-cli fw patch <name> --variant <v> --force-exc-guard 重新打补丁,然后重新恢复/安装。
6. cfw install 在重签系统二进制时挂起,内存无限增长
原因:这是 ldid-procursus 2.1.5 及之前版本的一个已知 bug。bytes(uint64_t) 函数调用 __builtin_clzll(0) 时没有零值保护,导致未定义行为,在特定构建中解析为 0 长度,使无符号循环计数器下溢,ldid 陷入逐字节写入无限循环。触发条件是 entitlements plist 中包含特定结构。
安全与法律注意事项
vphone-cli 涉及绕过 Apple 的安全机制,包括 SIP、AMFI、签名验证等。使用者应当注意:
- 该工具仅用于安全研究和教育目的
- 不要在涉及生产环境或敏感数据的 Mac 上使用
- 绕过安全机制可能违反 Apple 的服务条款
- 发布的 VM 镜像可能包含未签名的第三方组件
总结与展望
vphone-cli 是 iOS 安全研究领域的一个里程碑式工具。它首次将完整的 iOS 系统虚拟化带到普通开发者手中,无需越狱真机即可进行:
- iOS 系统行为分析
- 恶意软件研究
- 越狱插件开发
- 系统调用追踪
- 内核调试
随着 Apple 不断更新 Virtualization.framework 和 PCC 基础设施,vphone-cli 的维护者也在持续跟进。对于 iOS 安全研究人员和逆向工程师来说,这无疑是一个值得深入研究的开源项目。