Muka Rust iOS 是本站 Muka Rust 系列工具之一:Rust 实现的 iOS 设备操作工具,是 go-ios 的 Rust 重构。项目只产出一个 ios 可执行文件,普通调用是短生命周期的 client,同一文件的隐藏 server nodaemon 模式是本机常驻 server,持有所有持续资源——forward、userspace/kernel tunnel、dproxy、syslog、ostrace 和 pcap 均由 server 托管,并在 server 重启后按 desired state 自动恢复,不再需要为每项能力保留一个 CLI 进程。当前首版开发快照(0.1.0),Windows 为已完成完整进程测试的首要平台,macOS/Linux 结构边界已建立。工具链要求 Rust 1.96+,edition 2024。

架构概述

Workspace 分为四个 crate,依赖方向严格单向:

  • rust-ios-protocol:IPC 协议定义,不依赖其他 workspace crate 或设备库。
  • rust-ios-core:全部设备协议与 backend(idevice / mock / replay / recording)。
  • rust-ios-server:常驻 server、task manager、desired-state 恢复。
  • rust-ios-cli:命令行入口,不直接调用 idevice

已可用能力

  • ADB 风格自动启动、start-serverkill-serverserver status 和前台调试模式。
  • token 认证、protocol 1.20 握手、16 MiB 帧限制、UUID request ID 和结构化错误。
  • 原子 desired-state、独占 server lock、损坏 state 隔离、优雅关闭和强杀后恢复。
  • server 托管 forward、userspace CoreDevice tunnel、Windows Wintun kernel tunnel、RSD registry、syslog、ostrace、pcap、DVT notifications/sysmontap/device condition、Accessibility inspector、MJPEG screenshot stream、WebInspector CDP、WDA session、WDA/DeviceKit UI runner 与 UI HTTP stream capture;iOS 17+ 的 DVT/WebInspector 命令和 stream 复用同设备 server-owned tunnel。
  • server 托管 USB CoreDevice 与 RemotePairing TCP 两类 userspace tunnel;RemotePairing identity 由 server home 管理,manual consent 为一次性请求。
  • server 托管 dproxy 显式 usbmuxd endpoint:双向 raw dump、初始 usbmuxd plist NDJSON、连接统计、stop/restart/恢复。
  • server-owned WDA/XCTest runner、NDJSON event/result capture;.xctestrun v1/v2 parser、unit XCTest/test filters 和有限测试任务的 completed/failed 恢复语义;iOS 17+ 复用 shared RSD,不再创建第二套 CoreDeviceProxy。
  • WDA/DeviceKit 一次性 UI HTTP/RPC client:status、raw API、tap/swipe/longpress/type/button、screenshot/source/size/orientation 和 app control。
  • host-only UI artifact 下载与纯 Rust .app/.ipa 重签名;ui install 签名后通过真实 backend 调用 installation_proxy。
  • host-only App Store Connect ES256 JWT/JSON:API、iOS Development certificate/P12 和 per-device provisioning profile workflow;profile reuse 模式不创建或 revoke certificate。
  • list/listen/readpair/buid/pair/info/lockdown/apps/fsync/install/uninstall 等基础设备命令;file 同时支持 AFC/HouseArrest 和 iOS 17+ shared-RSD FileService 的 app/app-group/temp/crash domain。
  • AFC diskspace、AMFI devmode、image mounter、DVT process control、诊断、定位、截图和 SpringBoard 读取/布局命令;iOS 17+ personalized image 可从本地 Xcode DDI cache 按设备 identity 自动选择(含 iOS 26 build 选择修正)。
  • WebInspector page list、Remote Automation launch、JavaScript eval 和 server-owned CDP endpoint(Chrome /json discovery + page WebSocket,支持 stop/server restart);已通过 iOS 26 真机闭环。
  • Lockdown language/locale、AssistiveTouch、VoiceOver、Zoom 和 12/24 小时时制读写(写操作需在真机清单中单独授权)。
  • Accessibility ax audit 支持 API v20/v21+ selector、issue/rect/platform element/label 解析。
  • MCInstall profile、Wi-Fi、global HTTP proxy、prepare/cloud config,以及纯 Rust supervision identity 生成和 PKCS#12/CMS silent install。
  • iOS 17+ pasteboard 读写(com.apple.coredevice.pasteboardservice)与 supervised MDM 管理(mdm security-infofetch-unlock-tokenclear-passcodeclear-screen-time-password),与 go-ios v1.2.1 对齐;pasteboard 已通过 iOS 26 真机闭环。
  • 协议加固已同步 go-ios v1.2.1:usbmuxd/AFC/XPC 长度与下界校验、NSKeyedArchiver 深度上限、unmount UnknownCommand 容错、TSS RestoreRequestRules、TLS 验证、mount/unmount 回复校验、zip-slip 防护。
  • idevice、mock、replay、recording 四类 backend;PairRecord 录制强制脱敏;无设备单元/集成测试与隔离 home/随机端口的 Windows 子进程、并发和恢复测试。

未完成入口一律返回 not_implemented 结构化错误,不会伪造成功。精确到 flag 的完成度见仓库 docs/feature-matrix.md 功能矩阵。

已知限制

项目尚未达到 go-ios 全功能等价:

  • dproxy 的显式 usbmuxd endpoint 已实现并完成离线生命周期测试;系统级 socket 替换、utun 与 DTX decode 仍未实现。
  • Windows kernel tunnel 已完成 Wintun 数据泵、server 生命周期和离线测试,真实 adapter/CoreDevice 数据面仍需提权真机复验。
  • debug <app_path>、WebInspector js-shell、supervised pairing、unit XCTest 与 test filters 已接入,其中 app debug 与 unit/filter 完整真机运行仍需设备测试。
  • mdm 四子命令已完成实现和 mock/离线测试,完整真机验证需要 supervision identity 资产与监督设备(未监督设备拒绝路径已真机验证)。
  • RemotePairing 真机数据面仍被设备未广告 _remoted._tcp 阻塞(网络层已排除);App Store Connect 需真实 Apple 账号。

构建

cargo build --release

默认成员为 crates/rust-ios-cli,产出单一 ios 可执行文件。

开源协议

MIT License