現在市面上基於 usbmuxd 協議軟件已經有很多,比如通過三方軟件讀取ios設備相冊,安裝、卸載軟件,peertalk等,大部分通信協議為plist。流程為:
mac <-> usbmuxd <-> ios <-> lockdownd <-> service
ios-webkit-debug-proxy 作為較為人熟知的框架也是通過這種方式,比較特殊的是通信協議變為了二進制的plist,也就是bplist,可以使用 plistutil 實現和xml互轉。
再進壹步呢?
比如騰訊的wetest開發的PerfDog, 實現跨平臺獲取非越獄設備的性能數據,實現和xcode中開發功能通信,方便自動化獲取instrument數據。
本文借助 ios-webkit-debug-proxy 源碼來了解mac 和 ios 指定服務通信原理。
定位到 ios-webkit-debug-proxy -> webinspector
int wi_connect(const char *device_id, char **to_device_id, char **to_device_name, int *to_device_os_version, void **to_ssl_session, int recv_timeout)
本人初衷是為了破解XCTest 通信協議,但是在實現過程中發現並不能通過 lockdownd_start_service 直接把手機指定服務啟動成功。看來如果想要破解XCTest協議,還需要多壹步,先了解xcode通信的內容。
啟動失敗:
啟動成功(安裝ipa服務):
到現在為止,並未成功模擬xcode啟動xctest流程,不知道哪裏的問題,忘有看到此文章的大佬不吝指教。