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-server、kill-server、server 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;
.xctestrunv1/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
/jsondiscovery + 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-info、fetch-unlock-token、clear-passcode、clear-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