返回

文章详情

通过苹果的虚拟化框架启动虚拟iPhone

Hacker News2026年8月28日 23:02

通过苹果的虚拟化框架使用PCC研究的虚拟机基础设施启动虚拟iPhone。前提条件:主机:Apple Silicon macOS 15+(Sequoia),Xcode + iOS SDK(用于交叉编译来宾守护进程),SIP/AMFI放宽允许未签名二进制文件的私有PV=3权限。依赖性:brew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd。安装:brew install zqxwce/tap/vphone-cli。构建:git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git ./scripts/setup_tools.sh # 安装依赖,构建工具链子模块,创建Python虚拟环境。./scripts/build.sh # 构建 + 签名vphone-cli,捆绑.app,交叉编译vphoned。cd .build/vphone-cli.app/Contents/MacOS/ vphone-cli --help。快速启动:一个命令创建一个完整的虚拟机(下载 → 修补 → DFU恢复 → CFW安装 → 第一次启动):vphone-cli vm create myphone -V jb # -V / --variant vphone-cli vm launch myphone。命令:vphone-cli vm create运行整个流程;下面的各个步骤让您手动操作或重新运行某个阶段。管理:vphone-cli vm list # 列出虚拟机(--json用于脚本),vphone-cli vm info myphone # 显示一个虚拟机,vphone-cli vm new myphone # 创建一个空捆绑(cpu/mem/disk选项),vphone-cli vm config myphone --cpu 8 --memory 8192,vphone-cli vm clone myphone myphone-2 # 快速APFS克隆,新的设备身份,vphone-cli vm export myphone --out myphone.tzst # 默认使用zstd压缩(--max = xz -9);--out可以是目录(自动命名<vm>.tzst/.txz);跳过恢复目录和临时文件,vphone-cli vm import myphone.tzst --name restored,vphone-cli vm rename myphone iphone16,vphone-cli vm delete iphone16。手动构建虚拟机(vm create自动化的过程):vphone-cli vm new myphone # 1. 空捆绑,vphone-cli fw prepare myphone --iphone-version 26.1 # 2. 下载 + 合并IPSW,vphone-cli fw patch myphone --variant jb # 3. 修补启动链,vphone-cli vm launch myphone --dfu & # 4. 在DFU模式下启动(后台),vphone-cli restore myphone --get-shsh # 获取SHSH,vphone-cli restore myphone # DFU恢复,vphone-cli vm stop myphone # 停止DFU启动,vphone-cli cfw install myphone --variant jb # 5. 安装CFW(主机挂载;需要sudo),vphone-cli vm launch myphone # 6. 第一次启动。通过指向IPSW更新到更新的iOS: --iphone-source /path/to.ipsw --cloudos-source /path/to.ipsw。固件变体:五种修补变体,具有逐渐增加的安全绕过—将一个传递给--variant:变体 启动链 CFW 注释较少 4 个补丁 2 个阶段 无补丁—保留iOS缓解措施启用 常规 42 个补丁 10 个阶段 AMFI/SSV/Img4/TXM绕过 开发 53 个补丁 12 个阶段 + TXM权限/调试绕过 越狱 113 个补丁 14 个阶段 + 完整越狱(Sileo,TrollStore在第一次启动时自动安装) 实验 141 个补丁 18 个阶段 JB超集 + 反虚拟机检测研究补丁。有关每个组件的详细分解,请查看research/0_binary_patch_comparison.md。运行和连接:SSH(越狱):ssh -p 22222 mobile@<vm-ip>(密码 alpine),SSH(常规/开发):ssh -p 22222 root@<vm-ip>,VNC:vnc://<vm-ip>:5901。位置:vphone-cli创建的所有内容位于~/.vphone/下——保持在repo和.app之外,以便签名的捆绑保持可移植。使用$VPHONE_ROOT重定向整个树:路径 内容 ~/.vphone/ 每个用户数据根—可以使用$VPHONE_ROOT覆盖整个位置。~/.vphone/VMs/ 虚拟机捆绑—每个虚拟机一个目录。这是库;可以使用$VPHONE_LIBRARY_ROOT覆盖。~/.vphone/ipsws/ 下载的iPhone + cloudOS IPSWs,缓存并在虚拟机之间重用。~/.vphone/tools/ 在fw prepare过程中获取的缓存APFS密封卷工件(apfs_sealvolume_<version>)。~/.vphone/debs/ jb / exp CFW安装放入来宾的缓存.deb包(Sileo,apt等)。~/.vphone/venv/ 自动配置的Python环境(参见Python运行时;使用$VPHONE_VENV_DIR重写)。优先级:每个项目的覆盖($VPHONE_LIBRARY_ROOT,$VPHONE_VENV_DIR)优先于$VPHONE_ROOT,后者优先于~/.vphone默认。ipsws/,tools/和debs/缓存始终位于活动根的直接下方。SIP/AMFI放宽选项A——完全禁用SIP,然后通过引导参数禁用AMFI(最宽松)。在恢复模式下(长按电源→终端):csrutil disable csrutil allow-research-guests enable 然后重启进入macOS并设置AMFI引导参数(需要完全关闭SIP才能生效):sudo nvram boot-args= "amfi_get_out_of_my_way=1 -v" # 重启后选项B——保持SIP开启(仅调试放宽),然后使用amfidont允许列表二进制文件(让AMFI在全系统中启用)。在恢复模式下:csrutil enable --without debug csrutil allow-research-guests enable 然后重启进入macOS并:vphone-amfidont # .build/vphone-cli.app/Contents/Resources/vphone-amfidont用于本地构建。测试环境:主机 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,8 26.5.1 17,3_26.0.1_23A355 26.1-23B85 Mac16,12 26.3 17,3_26.1_23B85 26.1-23B85 Mac16,12 26.3 17,3_26.3_23D12

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡