Python · 项目报告

jprx/darwin-vm

Run iOS/ macOS in Qemu. Virtual iPhone 17, 16, 15, 14, 13, 12 and M5-M1 Apple Si Macs supported.

已完成 打开 GitHub
J
495星标
39Fork
2Issue
MIT许可证

分析结果

项目分析

darwin-vm 是一个用于在 QEMU 中启动精简版 iOS/macOS Darwin 系统的工具集,主要面向 XNU/Darwin 内核研究、Apple Silicon 架构逆向、底层调试和命令行程序实验。它不是完整的 iPhone 或 Mac 模拟器,不提供 GUI、屏幕、Wi‑Fi、蓝牙、图形和 SpringBoard 等能力,而是类似“Linux 内核 + initrd + busybox”的开发环境:几秒内启动到 root shell,可运行自定义命令行程序、调试或修改内核、SPTM、TXM、dyld、launchd 及用户态程序。项目使用 Python/Shell 脚本自动从 IPSW 中提取并修补必要文件,并依赖其 qemu-sptm 子模块来支持 Apple Silicon 相关特性。

适用领域 iOS/macOS 内核研究 / Darwin/XNU 调试 / Apple Silicon 架构研究 / 移动安全研究 / 逆向工程 / 虚拟化与模拟器 / 固件分析 / 低层系统开发
配置难度 高。该项目需要熟悉 macOS 命令行、Homebrew、IPSW、QEMU 编译、Apple 平台代码签名、ramdisk 修改以及 Darwin/XNU 启动流程。普通应用开发者不适合直接使用;安全研究和内核方向开发者更容易上手。
商业价值 商业价值主要体现在安全研究、漏洞挖掘、移动设备攻防实验、内核调试平台和企业内部 Apple 平台安全能力建设。它可以降低真实设备和越狱环境依赖,提高 Darwin 内核实验的可重复性。但由于它不是完整设备模拟器,也不适合 App 兼容性测试、UI 自动化、普通 iOS/macOS 应用开发或消费级虚拟机产品,因此直接产品化价值有限,更适合作为安全实验室、研究团队或底层工具链中的基础设施。
01

技术亮点

  • 可以在 QEMU 中启动精简 iOS/macOS Darwin 环境,并直接进入 root shell
  • 不需要真实设备、越狱或内核补丁即可运行自定义命令行程序
  • 支持 A14-A19 iPhone 设备模型以及 M1-M5 Apple Silicon Mac 设备模型
  • 支持 SPTM based kernels、TXM 和带 MIE 的 CPU 场景,适合研究新一代 Apple 安全机制
  • 自动化脚本从 IPSW 中提取、修补和准备运行所需固件文件
  • 可调试 kernel、SPTM、TXM、dyld、launchd 和用户态程序,研究价值较高
  • 运行主机不要求是 ARM,只要 QEMU 可运行即可
  • MIT 许可证,便于研究和二次开发
02

目标用户

  • iOS/macOS 安全研究员
  • XNU/Darwin 内核开发与研究人员
  • Apple Silicon 逆向工程师
  • 漏洞研究人员
  • 需要可控 Darwin root shell 环境的系统开发者
  • 研究 SPTM/TXM/MIE 等 Apple 安全机制的开发者
  • 高校或实验室中的操作系统与移动安全研究人员
03

配置要求

  • 准备 IPSW 文件 URL;如果不指定,项目会使用已知可工作的默认版本
  • 文件准备和权限修复步骤必须在 Mac 上执行,因为依赖 hdiutil、APFS/DMG 挂载以及 Apple 平台工具链
  • 需要安装 python、jq、wget、ipsw
  • 构建并运行 qemu-sptm 的机器需要满足 QEMU 构建依赖,运行主机不一定必须是 ARM
  • 如果要编译自定义程序到 VM 中运行,需要 Mac 和 Xcode,并使用 xcrun 选择 iphoneos 或 macosx SDK
  • 自定义二进制需要 codesign 签名,并可能需要更新 trustcache 或相关信任信息
  • 需要从 Apple IPSW 中提取固件组件,因此网络访问和 IPSW 下载源可用性很重要
  • 目标设备需要匹配 devname、board name、chip name 和对应 IPSW,例如 iPhone17,3、Macmini9,1 等
  • 项目测试覆盖 iPhone 12-17 的 A14-A19,以及 M1-M5 部分 Mac 设备模型;不保证所有版本和设备组合稳定
04

适用场景

  • 在非真实设备环境中启动 iOS/macOS Darwin 到 root shell,用于内核行为观察
  • 调试或 patch XNU kernel、SPTM、TXM、dyld、launchd 和用户态程序
  • 构建并运行自定义命令行程序,无需越狱或真实设备内核补丁
  • 分析 IPSW 中的 kernelcache、DeviceTree、ramdisk、trustcache 等组件
  • 复现和研究 Apple Silicon 不同芯片代际,例如 A14-A19、M1-M5 的启动流程
  • 搭建可重复、可脚本化的 iOS/macOS 底层实验环境
  • 用于安全课程、漏洞研究或内核调试教学中的 Darwin 实验平台
05

部署与配置

  • 在 Mac 上安装依赖:brew install jq wget ipsw
  • 克隆仓库:git clone https://github.com/jprx/darwin-vm.git && cd darwin-vm
  • 在 Mac 上运行 ./get_files.sh,从默认或指定 IPSW URL 下载并提取 kernelcache、SPTM、TXM、DeviceTree、ramdisk 等文件
  • 如需指定设备和 IPSW,可使用:DEVNAME="iPhone17,3" URL="你的_ipsw_url" ./get_files.sh
  • 修复 ramdisk 文件权限:./fix_perms.sh firmware/ramdisk.dmg,该步骤会使用 sudo chown 将必要目录改为 root:wheel
  • 初始化并构建 qemu-sptm 子模块:git submodule update --init
  • 进入 qemu-sptm 构建目录并配置:cd qemu-sptm && mkdir build && cd build && ../configure --target-list=aarch64-softmmu
  • 编译 QEMU:make -j
  • 回到仓库根目录并启动虚拟机:cd ../.. && ./run.sh
  • 进入 root shell 后可运行命令;退出 QEMU 使用 Ctrl+A 然后按 x
06

风险与注意事项

  • 不是完整 iPhone/Mac 模拟器,不支持图形界面、屏幕、Wi‑Fi、蓝牙、GPU、SpringBoard 或普通 App 运行体验
  • 依赖 Apple IPSW、Mac 工具链、Xcode、hdiutil 和代码签名流程,对非 macOS 用户不友好
  • qemu-sptm 是 QEMU fork,可能与上游 QEMU 存在差异,维护和兼容性存在不确定性
  • 部分设备或系统版本可能启动不稳定,README 明确提到某些设备早期启动阶段可能随机 panic,需要重试
  • MIE 等特性模拟可能较慢,性能不适合重负载应用
  • 项目偏研究性质,缺乏生产级稳定性保证
  • 涉及 Apple 固件提取、修改和运行,使用者需要自行确认合规性、授权和法律风险
  • README 中测试版本包含较新的 beta 系统描述,实际可用性可能受 Apple 发布节奏、IPSW URL 有效性和工具兼容性影响
  • 对于不熟悉 iOS 启动链、APFS、trustcache、codesign、XNU 的开发者,上手成本较高

历史记录

热榜历史快照

2026-08-30 第18名 新收录 · github_search