0

在OSX機器上運行的一系列啓動守護進程和代理都支持xpc。要查看他們是否支持IPC over xpc,我尋找任何xpc函數,特別是xpc_connection_create。我的理解是,爲了與這些過程交談,必須通過xpc api製作字典,然後將其傳遞給廣告的com。*服務。不是隨意傳遞東西,有沒有什麼方法可以查看字典的參數應該按照哪個過程?查看XPC服務守護程序中的可用字典?

如果我有任何上述邏輯錯誤,請隨時糾正它。任何建議或意見是有益的,謝謝。

回答

1

XPC連接用於創建與XPC服務的連接或與另一個廣告mach服務的進程建立IPC。

「xpc_connection_create」創建用於將消息發送到連接的其他對等方的連接。溝通的協議應該被定義,因此,通常這兩個同伴屬於同一方。換句話說,如果你不擁有這些守護進程/代理,並且沒有關於與它通信的協議的公共文檔(不管它是否通過XPC)。用這些過程來完成IPC幾乎是不可能的。

+0

就XPC通信和詞典中使用的字符串而言,它們是在編譯時序列化還是可以從二進制文件中抽出? – daybreak

+0

不知道在編譯時序列化是什麼意思。 XPC連接消息始終是XPC對象,它是消息的XPC序列化。您定義了通信協議(在編譯時),但是序列化本身發生在運行時。 – Samir

+0

謝謝你的幫助。似乎試圖分析查找反序列化字符串比較的服務器代碼對於此將是不切實際的 – daybreak

0

上面的答案充其量是不正確的,最壞的情況是錯誤的。

兩個同伴確實應該由同一方擁有,但事實並非如此。許多蘋果的守護進程通過XPC進行通信,唯一的問題是它們是否可以從沙箱的範圍內訪問。令人驚訝的數字是。幾乎「幾乎不可能」 - 非常可能,並且非常適用於除Apple文檔之外的調試和調整。

要獲得協議,可以創建一個將設置xpc_connection_send_message_ [with_reply/syc]的庫,然後使用DYLD_INSERT_LIBRARIES。您將以這種方式獲得字典的完整轉儲。

相關問題