0

xpc をサポートする osx マシンで実行されている一連の起動デーモンとエージェントがあります。それらが IPC over xpc をサポートしているかどうかを確認するために、xpc 関数、特に xpc_connection_create を探します。私の理解では、これらのプロセスと対話するには、xpc API を介して辞書を作成する必要があり、それが宣伝されている com.* サービスに渡されます。ランダムなものを渡す代わりに、辞書の引数がプロセスごとにどうあるべきかを確認する方法はありますか?

上記のロジックのいずれかが間違っている場合は、お気軽に修正してください。アドバイスやコメントは役に立ちます、ありがとう。

4

2 に答える 2

1

XPC 接続は、XPC サービスとの接続を作成するため、または mach サービスをアドバタイズする別のプロセスで IPC を行うために使用されます。

「xpc_connection_create」は、接続の他のピアにメッセージを送信するために使用する接続を作成します。通信のプロトコルを定義する必要があるため、通常、2 つのピアは同じ当事者によって所有されます。

つまり、これらのデーモン/エージェントを所有しておらず、それとの通信のプロトコルに関する公開ドキュメントがない場合 (XPC 経由であるかどうかに関係なく)。これらのプロセスで IPC を実行することはほとんど不可能です。

于 2012-08-28T09:15:25.667 に答える
0

上記の答えは、せいぜい間違っており、最悪の場合は間違っています。

2 つのピアが同じ当事者によって所有されるべきであることは事実ですが、そうではありません。Apple のデーモンのホストは XPC を介して通信しますが、唯一の問題は、サンドボックスの境界からアクセスできるかどうかです。驚くべき数字です。「ほとんど不可能」ではありません - 非常に可能であり、Apple のドキュメントを超えたデバッグや微調整に非常に役立ちます。

プロトコルを取得するには、xpc_connection_send_message_[with_reply/syc] を挿入するライブラリを作成し、DYLD_INSERT_LIBRARIES を使用します。この方法で、辞書の完全なダンプを取得できます。

于 2016-07-02T13:23:05.010 に答える