Skip to content

Reverse-engineered MRP protobuf definitions from Apple shared libraries#2834

Open
JarekToro wants to merge 1 commit intopostlund:masterfrom
JarekToro:master
Open

Reverse-engineered MRP protobuf definitions from Apple shared libraries#2834
JarekToro wants to merge 1 commit intopostlund:masterfrom
JarekToro:master

Conversation

@JarekToro
Copy link
Copy Markdown
Contributor

@JarekToro JarekToro commented Mar 17, 2026

Context

While reverse-engineering Apple's shared frameworks (MediaRemote.framework
and related libraries on macOS/iOS) via Ghidra, I reconstructed a much
larger set of MRP protobuf schemas than what currently exists in pyatv.
The RE work was done as part of building bunatv.

pyatv's thorough work and documentation were invaluable to me, so I wanted to share everything I found back with the
project. This PR isn't meant to be merged as-is, these definitions are
yours to use however makes sense, whether that's cherry-picking specific
messages, using them as reference, or adapting the structure.

While I can attest that within the latest apple shared libs every proto message here has specific read and write functions for converting to and from protobuf and native classes, I don't know how various messages are meant to be used, and if they are all meant for apple Tvs, and if they are supported by all devices.

If this proves useful, I've also started applying the same RE approach to the Companion protocol,
though it's slower going, the relevant code is spread across significantly
more shared libraries than MRP. Happy to share those findings too
as they come together.

AI tools were used during the decompilation process. I've cleaned up the
output, but there may be a few residual comments from that process that
are specific to the decompilation context rather than generally useful.

…ssages used in apple various shared libraries on mac and ios. They are 1:1 with the various read and write proto functions within the shared libs. Not all are understood some even seem like they arent used yet. A few things are new from exisiing messages and i made comments in a handful of spots.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant