
vphone-cli EXP 变体反检测内核DSCwatchdogd 三层补丁如何协同【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-clivphone-cli 是一款在 Apple Silicon Mac 上用 Virtualization.framework 启动虚拟 iPhone的开源命令行工具。它的exp实验性固件变体是五个变体中能力最强的一档在越狱JB超集的基础上追加了 141 个启动链补丁和 18 个 CFW 安装阶段其中最具代表性的就是反虚拟机检测研究补丁——通过内核、DSCdyld 共享缓存、watchdogd 三层补丁的精密协同让虚拟 iPhone 在该像真机的场合骗过系统在必须保持虚拟机行为的场合又绝不撒谎。EXP 变体是什么五个档位中的研究顶配vphone-cli 提供 5 个补丁变体安全绕过能力逐级递增。exp的定位是JB 超集 反虚拟机检测研究补丁其他变体完全不受其影响这是刻意设计避免实验性改动波及稳定流程变体启动链补丁CFW 阶段定位less42保持 iOS 全部缓解措施regular4210AMFI/SSV/Img4/TXM 绕过dev5312 TXM 调试/签名绕过jb11314完整越狱Sileo 等exp14118JB 超集 反 VM 检测研究补丁每个补丁组件的逐项清单可以在 research/0_binary_patch_comparison.md 中查到包括 EXP 独有的 6 个内核方法、8 个 DeviceTree 身份属性和 5 个 CFW 专属步骤。第一层内核补丁——把是否虚拟机的开关改名一切反检测问题的根源是内核中的一个 sysctlkern.hv_vmm_present。它在 XNU 里定义真实值来自设备树的vmm-present键——真机上没有这个键读出来是0而由 Apple 虚拟化框架启动的虚拟机里它固定是1。全系统有 35 个正规读者通过它判断我是不是跑在虚拟机上完整的逐一分析见 research/hv_vmm_present_usermode_xrefs.md。最直接的想法是让内核直接返回0。但这会立刻弄坏系统——显示管线、AMFI 等内核内部组件同样消费这个标志内核侧一刀切会让显示通路走错分支、AMFI 在启动时直接 panicAMFI: No PMGR?。所以 EXP 方案选择了一个巧妙的改名策略实现在 KernelEXPPatchHvVmmRename.swiftPart AOID 改名只改 1 个字节把内核里这个 sysctl 的名称hv_vmm_present改成Xv_vmm_present。改完之后查旧名字返回不存在ENOENT查新名字仍返回真实值1。Part B内核内部调用方同步改名内核里硬编码旧名字的调用方共 5 处AMFI、IOCryptoAcceleratorFamily、sandbox 沙箱 profile 令牌、apfs 等逐一把字符串第 5 字节改掉让它们改查新名字、继续拿到真实的1。关键点改名而不是改值保证了所有必须知道自己是虚拟机的组件行为完全不变而所有查旧名字的用户态组件则自动得到查无此名的结果。第二层DSC 补丁——一份黑名单决定谁可以知道真相内核改名只是第一步。用户态有 35 个真实的读取方分属两类需要区别对待必须继续知道真相的图形与计算加速库CoreML、AppleNeuralEngine、IOSurfaceAccelerator、CoreVideo 等。它们是虚拟机快速通路的守门人骗它们不是虚拟机会引导它们去驱动并不存在的 ANE/AGX 真实硬件直接弄坏显示和计算通路。应该装傻的登录认证、设备指纹、反滥用相关的库AuthKit、DeviceCheck、FindMy、App Store/IAP、Apple Push 等约 15 个。它们在检测到虚拟机时会降级、拒绝或打上vm1标签正是反检测想要消除的。EXP 的 DSC 补丁cfw_patch_hv_vmm_dsc.py采用黑名单反转设计把第 2 类库放进DONT_PATCH_INSTALL_NAMES黑名单原样不动——它们继续查旧名字、得到 ENOENT、防御性地缓存成0不在虚拟机上黑名单之外的其余库则统一改写字节、改查新名字、拿到诚实的1。这里还有一道隐蔽的门槛改动 DSC 里的任何一个字节都会破坏该 16 KiB 页的代码签名页哈希。因此配套了 cfw_dsc_codesign.py 做逐页重新认证为每个被修改的页重算 SHA-256 槽位哈希TXM 的逐页完整性检查才会放行——这也是为什么补丁脚本只改 1 个字节、绝不改可执行指令改动面越小、可逆性越好。第三层watchdogd——两条指令的外科手术三层方案里最戏剧性的一个角色是/usr/libexec/watchdogd。它在启动时用sysctlbyname查询虚拟机标志并缓存结果。内核改名后它的查询返回 ENOENT缓存字节停留在初始值0——但它的逻辑是查不到就异常下游代码会跳进brk #1触发 SIGTRAP而 launchd 的_PanicOnCrash开关会把这个崩溃升级为内核 panic整机重启循环。所以 watchdogd 需要的是反向修复不是让它查不到而是强制它缓存1。补丁器 cfw_patch_watchdogd.py 通过指令形状匹配Capstone 锚定 Keystone 汇编不依赖任何固定偏移对缓存逻辑做 2 条指令的手术cbnz w0, skip查不到就跳过写入→nop不再跳过cset wN, ne按返回值写 0/1→mov wN, #1无条件写入1效果缓存字节恒为1watchdogd 走进它自带的检测到虚拟机环境、干净退出分支不触发 trap、不引发 panic。同样地改动的 4 KiB 页槽位哈希由 cfw_macho_codesign.py 原地重算刻意不用 ldid 重签名因为保留 Apple 原始签名标识是 launchd 启动任务身份校验的硬性要求cdhash 变化则已被 JB 内核层的 trustcache 放行补丁兜底。三层如何协同该诚实的诚实该伪装才伪装把三层拼起来就是一套分工清晰的反检测体系层补丁职责一句话内核KernelEXPPatchHvVmmRename.swift定义真相源旧名查无此名新名返回真值DSCcfw_patch_hv_vmm_dsc.py决定谁能看到真相黑名单反转图形库诚实登录/反滥用库装傻watchdogdcfw_patch_watchdogd.py兜底防崩溃强制缓存 1走干净退出不 panic设计哲学可以用项目里的原话概括VM-aware where it has to be, device-like where it can be——必须感知虚拟机的地方保持虚拟机行为显示、加速通路照常工作能够伪装的地方表现得像真机登录、iMessage、App Store 不再自我标记为 VM。安装流程全部收敛在 cfw_install_exp.sh先挂载 SystemOS Cryptex 完成 DSC 预补丁基础 CFW 装完后在[EXP-JB-3.5]步骤通过 SSH 对 watchdogd 做 scp 下来→打补丁→推回去的闭环最后还有可选的 EXP-JB-6还原后 DeviceTree 身份重写与 EXP-JB-7SPOOF_BUILD门控的构建号改写。JB/DEV 安装脚本完全不执行这些步骤。快速上手如何用一条命令启用 EXP 变体在 Apple Silicon MacmacOS 15并放宽 SIP/AMFI见 README.md 的 SIP/AMFI Relaxation 章节上git clone --recurse-submodules https://gitcode.com/GitHub_Trending/vp/vphone-cli ./scripts/setup_tools.sh ./scripts/build.sh然后一条命令完成下载 → 打补丁 → DFU 还原 → 装 CFW → 首次启动全流程vphone-cli vm create myphone -V exp vphone-cli vm launch myphone启动后即可通过 SSHssh -p 22222 rootvm-ip或 VNC 接入这台反检测研究虚拟 iPhone 。如果你只想体验完整越狱而不需要研究补丁把-V exp换成-V jb即可——这正是变体分层、互不污染设计带来的自由。【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考