
【免费下载链接】darwin-vmRun iOS/ macOS in Qemu. Virtual iPhone 17, 16, 15, 14, 13, 12 and M5-M1 Apple Si Macs supported.项目地址https://gitcode.com/gh_mirrors/da/darwin-vm点击查看免费下载darwin-vm 是一个在 Qemu 中运行 iOS/macOSDarwin 系统的开源项目。它能在几秒内把虚拟 iPhone 17/16/15/14/13/12 或 M5–M1 的 Mac 直接启动到 root 命令行让你以 root 身份在虚拟机里编译、签名并运行自己的程序无需越狱、无需打内核补丁。本教程面向新手手把手带你完成环境准备直到你的第一个 iOS/macOS 程序在 darwin-vm 中跑起来。 一、认识 darwin-vm几秒进入 Darwin 系统的 root 命令行darwin-vm 的定位是一个轻量、可调试的 Darwin 系统实验台可以类比在 Qemu 里用-kernel-initrd引导 Linux busybox只不过对象换成了 iOS/macOS。它能做到⚡ 数秒内从内核启动到 root shell全程自动完成️ 以 root 身份编译、签名并运行自定义命令行程序 可调试/打补丁内核、SPTM、TXM、dyld、launchd 与用户态程序 支持模拟 A19–A14iOS与 M5–M1macOS芯片含 SPTM/MIE 新特性 在 Qemu 能跑的平台上即可运行不要求 ARM 主机⚠️ 它不是完整 iPhone/Mac 模拟器没有屏幕、Wi-Fi、蓝牙、图形界面和 springboard目标是让你进入 root shell 玩转命令行与 Darwin 底层。已测试的设备支持一览设备devname芯片iOS 27.0iPhone 17 (A19)iPhone18,3t8150✅iPhone 16 (A18)iPhone17,3t8140✅iPhone 15 (A16)iPhone15,4t8120✅iPhone 14 (A15)iPhone14,7t8110✅iPhone 13 (A15)iPhone14,5t8110✅iPhone 12 (A14)iPhone13,2t8101✅macOS 侧支持 M5 MacBook Air、M4 Mac Mini、M3 MacBook Air、M2/M1 Mac Mini✅ 均可启动。️ 二、编译 iOS/macOS 程序前的环境要求在 darwin-vm 中编译、签名、运行程序需要准备一台 Mac下载系统文件、codesign签名、挂载 ramdisk 都必须依赖 macOS 工具链Xcode提供xcrun交叉编译与codesign签名一台能编译运行 Qemu 的机器可以是上面那台 Mac也可以是另一台机器可选指定要使用的 IPSWiOS/macOS 恢复镜像URL不指定则使用项目内置的默认版本。安装依赖并克隆仓库brew install jq ipsw git clone https://gitcode.com/gh_mirrors/da/darwin-vm cd darwin-vm 三、一键安装系统文件下载、打补丁并自动签名get_files.sh 是整套流程的核心脚本它会从 IPSW 中自动下载并解包内核缓存bootkc、SPTM、TXM、设备树dtree和系统 ramdiskramdisk.dmg然后完成三件关键的事——注入 launchdaemons/com.jprx.bash.plist 让系统启动后直接拉起 bash root shell把预编译的 sysroot/ios_sysroot.tar.gzbash、coreutils 等工具解进 ramdisk 并自动签名所有二进制用 build_tc.py构建信任缓存trustcache让系统允许这些二进制运行。执行./get_files.sh ./fix_perms.sh firmware/ramdisk.dmg第二条命令 fix_perms.sh 会把 ramdisk 内文件的所有者修正为root:wheel——这是 Darwin 启动的硬性要求见后面常见问题。可选推荐用 silence_logs.py 屏蔽几条刷屏的内核日志./silence_logs.py firmware/bootkc⚙️ 四、编译启动虚拟机的 qemu-sptmdarwin-vm 基于 qemu-sptm/——一个为 Apple Silicon SPTM/TXM 定制了darwin机型的 Qemu 分支以子模块形式提供需要先编译它git submodule update --init cd qemu-sptm mkdir build cd build ../configure --target-listaarch64-softmmu --disable-pvg make -j cd ../..编译完成后Qemu 可执行文件位于qemu-sptm/build/qemu-system-aarch64。 注意--disable-pvg必须带上在 macOS 27.0 上paravirtualized graphicsPVG已无法编译。▶️ 五、第一次运行 darwin-vm 虚拟机一切就绪后用 run.sh 启动虚拟机——它会自动加载firmware/目录下的内核、设备树、SPTM/TXM 与 ramdisk并传入rdmd0 serial3 -v ...等启动参数./run.sh几秒后你就能看到内核日志滚过最终停在bash-3.2#的root shell提示符上bash-3.2# whoami root bash-3.2# uname -v Darwin Kernel Version 27.0.0: ... RELEASE_ARM64_T8142在终端按CtrlA再按x即可退出 Qemu。 六、编译你的第一个程序用 xcrun 交叉编译假设你想运行下面这段最简单的 C 程序保存为hello.c#include stdio.h int main() { printf(hello, xnu!\n); }用 Xcode 自带的xcrun交叉编译SDK 按目标系统选择iOS 虚拟机用iphoneosmacOS 虚拟机用macosxxcrun -sdk iphoneos clang hello.c -o hello一条命令即可生成 arm64 的目标可执行文件。✍️ 七、签名程序codesign 免证书 ad-hoc 签名Darwin 系统强制校验代码签名arm64e 指令集自带指针认证未签名或未被信任的二进制根本无法执行。darwin-vm 里用codesign做ad-hoc 签名即可-s -表示无证书自签不需要任何 Apple 开发者账号codesign -s - hello 八、把程序装进虚拟文件系统虚拟机用的是firmware/ramdisk.dmg这个磁盘镜像把程序拷贝进去即可。挂载它、复制、卸载mkdir mnt hdiutil attach -owners on -mountpoint mnt firmware/ramdisk.dmg sudo cp hello mnt/bin/hello hdiutil detach mnt rmdir mnt⚠️ 拷入的文件必须属于root:wheel否则 XNU/launchd 会直接拒绝加载。 九、构建 trustcache把你的程序加入信任名单最后一步是签名信任。Darwin 只运行信任缓存trustcache中列出 CDHash代码签名哈希的二进制。先取出hello的 CDHash 追加到哈希清单再重建 trustcache 文件codesign -d -vvv hello 21 | grep -i cdhash | cut -d -f2- firmware/all_hashes ./build_tc.py firmware/all_hashes firmware/ramdisk.tcbuild_tc.py 会把哈希清单打包成 Darwin 内核认可的 TrustCache 二进制结构对应内核头文件中的TrustCacheModule1_t见 build_tc.py 中的结构定义供 run.sh 通过-tc firmware/ramdisk.tc参数加载。✅ 十、重启验证运行你的第一个 iOS/macOS 程序重新启动虚拟机并执行hellobash-3.2# hello hello, xnu!看到输出即代表你已完整走通 darwin-vm 自定义程序的编译 → 签名 → 注入 → 信任 → 运行全流程 十一、常见问题快速排查1. 系统启动了但没有 shell日志报Path had bad ownership/permissions说明 ramdisk 权限没修好。重新执行并重启 VM./fix_perms.sh firmware/ramdisk.dmg2. 编译 qemu-sptm 报error: PGTask_t is unavailable: obsoleted in macOS 27.0你用了 macOS 27.0 却没有禁用 PVG。重新configure时加上--disable-pvg再make。3. 为什么没有图形界面这是设计定位而非缺陷——darwin-vm 目标是裸机级命令行与内核调试环境。想远程登录可启用 SSH/TCP 隧道见 TCP_TUNNELING_SSH.md。 十二、下一步进阶方向SSH 进虚拟机通过 UART 隧道在 VM 内跑 SSH 服务器参见 TCP_TUNNELING_SSH.md调试内核在 run.sh 的args中加-s暴露 GDB 服务端口用lldb设置断点、检查内存修改整个文件系统挂载 ramdisk 后把 launchd 守护进程放进System/Library/LaunchDaemons、把工具装进bin记得更新 trustcache运行开发版内核用kmutil组合 KDK 内核与系统 kext构建可调试的 kernelcache 附darwin-vm 关键文件速查文件作用get_files.sh下载 IPSW、解包固件、签名二进制、构建 trustcachefix_perms.sh修正 ramdisk 文件权限为 root:wheelrun.sh组装参数并启动 Qemu 虚拟机build_tc.py将 CDHash 清单打包成 trustcache 二进制silence_logs.py打补丁屏蔽冗余内核日志dt_fixup.py修补设备树并注入 NVRAM 数据launchdaemons/com.jprx.bash.plist开机自动拉起 bash 的 launchd 配置TCP_TUNNELING_SSH.mdSSH 与 TCP 隧道完整指南掌握编译 签名 trustcache这条主线后darwin-vm 就是一台随叫随到的 Darwin 沙盒改文件系统、调试内核、跑自研工具都只需几分钟循环。赞分享【免费下载链接】darwin-vmRun iOS/ macOS in Qemu. Virtual iPhone 17, 16, 15, 14, 13, 12 and M5-M1 Apple Si Macs supported.项目地址https://gitcode.com/gh_mirrors/da/darwin-vm点击查看免费下载相关推荐从 YouTube 字幕到新 GPT 创意拆解 Transcript BO$$ 定制指令与 GPT 指令工程实践从 YouTube 字幕到新 GPT 创意拆解 Transcript BO$$ 定制指令与 GPT 指令工程实践 导读 本篇文章以 TheBigPromptL提示工程AI 安全治理新手必备如何用SASM快速编写并运行你的第一个汇编程序新手必备如何用SASM快速编写并运行你的第一个汇编程序 SASM是一款简单易用的跨平台汇编语言IDE支持NASM、MASM、GAS和FASM等多种汇编语言。开发工具IDE代码编辑器Python-100-Days 第2天编写并运行你的第一个 Python 程序Python 100 Days 第2天编写并运行你的第一个 Python 程序 本篇是《 Python 100天从新手到大师 https://link.git文档教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考