0

xpc를 지원하는 osx 시스템에서 실행중인 실행 데몬과 에이전트가 많이 있습니다. IPC over IPC 지원 여부를 확인하기 위해 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

도움 주셔서 감사합니다. deserialized 문자열에 대한 비교를 찾는 서버 코드를 분석하려고하면 – daybreak

0

위의 대답은 기껏해야 올바르지 않으며 최악의 경우 잘못되었습니다.

두 명의 동료가 동일한 당사자가 소유해야하는 것은 사실이지만, 그렇지 않습니다. Apple의 데몬 호스트는 XPC를 통해 통신하며, 유일한 문제는 샌드 박스의 경계에서 도달 할 수 있는지 여부입니다. 놀라운 숫자입니다. 거의 불가능하며 거의 불가능합니다. Apple 문서 이외의 디버깅 및 조정에 매우 유용하며 매우 유용합니다.

프로토콜을 얻으려면 xpc_connection_send_message_ [with_reply/syc]를 삽입하고 DYLD_INSERT_LIBRARIES를 (를) 사용하는 라이브러리를 만들 수 있습니다. 이 방법으로 사전을 완전히 덤프 할 수 있습니다.