Tool
xpcspy
Frida-powered command-line tool that observes XPC messages exchanged between processes on iOS and macOS in both directions, for understanding how Apple-platform apps and services talk over XPC. It can spawn or attach to a target over a USB or remote Frida connection, filter the trace by direction (incoming or outgoing) and by service name with wildcards, and optionally parse the binary-plist payloads carried in XPC dictionaries, with bplist00 and bplist16 described as officially supported and bplist15 and bplist17 as experimental. A Python CLI drives a TypeScript Frida agent that is compiled to JavaScript.
Requirements & limits
- Reviewed at tag v0.9.0 (the reviewed commit, last pushed 2026-05-11); the matching xpcspy 0.9.0 release was uploaded to PyPI the same day. requirements.txt pins frida ~=17.9.7 and frida-tools ~=14.8.2, so a compatible Frida must be present, and interception works only where that Frida can instrument the target: a local macOS process, or an iOS device reachable by a frida-server over USB (-U) or remotely (-R/-H).
- Install with pip3 install xpcspy for the CLI. Building from source uses the Makefile: the Frida agent under agent/ is a TypeScript project compiled with frida-compile (needs Node.js and npm), then python3 setup.py sdist packages the Python tool. The package metadata credits author hot3eed and points its homepage at github.com/hot3eed/xpcspy.
- The analyst chooses the process to inspect by name, PID, frontmost application or a spawned file; no sample files ship with the tool. It reads the XPC traffic of a running target for analysis and does not modify or inject messages. bplist parsing is partly experimental, and the README's TODO list notes recursive bplist deserialization and other unfinished work.
- Apache-2.0. The reviewed sources establish no REA connection, and nothing was installed or run in this review.
About this entry
- Type
- Tool
- Category
- Debugging and dynamic analysis
- Relationship
- Foundation tool
- Targets
- App · Protocol
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- setup.py GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- requirements.txt GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- Makefile GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- agent/package.json GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- xpcspy/__init__.py GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- LICENSE GitHub · ab-rizk/xpcspy · Revision 07c5a5b
- https://github.com/ab-rizk/xpcspy/releases/tag/v0.9.0
- https://pypi.org/project/xpcspy/0.9.0/
More in Native binaries
- de4py · Tool
- Dwarf · Tool
- bddisasm · Tool
- decompyle3 · Tool
- DownUnderCTF: masked-squares flag checker · Case study
- Show Your Work: a measured dissection of REA's evidence architecture · Case study