工具
xpcspy XPC 消息拦截工具
基于 Frida 的命令行工具,可双向观察 iOS 和 macOS 上进程之间交换的 XPC 消息,用于理解 Apple 平台的应用与服务如何通过 XPC 通信。它可通过 USB 或远程 Frida 连接启动或附加到目标,按方向(传入或传出)和带通配符的服务名过滤跟踪,并可选解析 XPC 字典中携带的二进制 plist 负载,其中 bplist00 和 bplist16 被列为正式支持,bplist15 和 bplist17 为实验性。工具由 Python 命令行驱动一个编译为 JavaScript 的 TypeScript Frida 代理。
使用条件与局限
- 审阅版本为标签 v0.9.0(即所审阅的提交,最后推送于 2026-05-11);对应的 xpcspy 0.9.0 版当天上传至 PyPI。requirements.txt 固定 frida ~=17.9.7 和 frida-tools ~=14.8.2,因此需要存在兼容的 Frida,且拦截只能在该 Frida 能够插桩目标的场景下进行:本地 macOS 进程,或可通过 USB(-U)或远程(-R/-H)由 frida-server 访问的 iOS 设备。
- 通过 pip3 install xpcspy 安装命令行工具。从源码构建使用 Makefile:agent/ 下的 Frida 代理是用 frida-compile 编译的 TypeScript 项目(需要 Node.js 和 npm),随后用 python3 setup.py sdist 打包 Python 工具。包元数据标注作者为 hot3eed,并将主页指向 github.com/hot3eed/xpcspy。
- 分析者通过名称、PID、前台应用或启动的文件来选择要检查的进程;工具不附带任何样本文件。它读取运行中目标的 XPC 流量用于分析,不会修改或注入消息。bplist 解析部分仍属实验性,README 的 TODO 列表也提到递归 bplist 反序列化等尚未完成的工作。
- 采用 Apache-2.0 许可。所审来源未确立与 REA 的关联,本次审阅也未安装或运行任何内容。
关于此条目
- 类型
- 工具
- 类别
- 调试与动态分析
- 关联
- 基础工具
- 目标
- 应用 · 协议
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- setup.py GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- requirements.txt GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- Makefile GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- agent/package.json GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- xpcspy/__init__.py GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- LICENSE GitHub · ab-rizk/xpcspy · 修订 07c5a5b
- https://github.com/ab-rizk/xpcspy/releases/tag/v0.9.0
- https://pypi.org/project/xpcspy/0.9.0/