Видите доступные словари в сервисном демоне XPC?

На машине OSX работает множество демонов и агентов запуска, которые поддерживают xpc. Чтобы узнать, поддерживают ли они IPC через xpc, я ищу любые функции xpc, особенно xpc_connection_create. Насколько я понимаю, для взаимодействия с этими процессами необходимо создать словарь через xpc api, который затем передается рекламируемой службе com.*. Вместо того, чтобы передавать случайные вещи, есть ли способ увидеть, какие аргументы словаря должны быть для каждого процесса?

Если у меня есть какие-либо из вышеперечисленных логических ошибок, пожалуйста, не стесняйтесь исправить это. Любой совет или комментарий полезен, спасибо.


person daybreak    schedule 27.08.2012    source источник


Ответы (2)


Соединения XPC используются для создания соединения со службой XPC или для выполнения IPC с другим процессом, который объявляет службу mach.

«xpc_connection_create» создает соединение, которое вы используете для отправки сообщений другому узлу соединения. Протокол связи должен быть определен, поэтому обычно два одноранговых узла принадлежат одной и той же стороне.

Другими словами, если у вас нет этих демонов/агентов, и если нет общедоступной документации о протоколе связи с ними (будь то через XPC или нет). Сделать IPC с этими процессами будет практически невозможно.

person Samir    schedule 28.08.2012
comment
Что касается строк, используемых в XPC-коммуникациях и словарях, сериализуются ли они во время компиляции или их можно извлечь из двоичного файла? - person daybreak; 28.08.2012
comment
Не уверен, что вы подразумеваете под сериализацией во время компиляции. Сообщение о соединении XPC всегда является объектом XPC, который представляет собой сериализацию сообщения XPC. Вы определяете протокол связи (во время компиляции), но сама сериализация происходит во время выполнения. - person Samir; 29.08.2012
comment
Спасибо вам за помощь. Кажется, что пытаться анализировать серверный код в поисках сравнений десериализованных строк было бы нецелесообразно для этого. - person daybreak; 29.08.2012

Приведенный выше ответ в лучшем случае неверен, а в худшем — неверен.

Хотя верно, что два одноранговых узла ДОЛЖНЫ принадлежать одной и той же стороне, это не так. Множество демонов Apple обмениваются данными через XPC, и единственный вопрос заключается в том, доступны ли они из-за пределов песочницы. Удивительное число. Вряд ли «почти невозможно» — вполне возможно и очень полезно для отладки и настройки помимо документации Apple.

Чтобы получить протокол, вы можете создать библиотеку, которая будет вставлять xpc_connection_send_message_[with_reply/syc], а затем использовать DYLD_INSERT_LIBRARIES. Таким образом вы получите полный дамп словаря.

person Technologeeks    schedule 02.07.2016