工具
Pyrrha 固件测绘工具
Quarkslab 的固件“测绘”工具,将已提取的固件文件系统编入数据库,再用 NumbatUI(Quarkslab 基于 Sourcetrail 代码浏览器的分支)浏览。fs 映射器借助 LIEF 映射 ELF 和 PE 文件、其导入与导出,以及指向这些文件的符号链接;fs-cg 用 IDA Pro 或 Ghidra 反汇编每个可执行文件,并把各二进制的调用图跨文件连接起来;decomp 则为单个可执行文件的反编译函数建立索引并附调用交叉引用。JSON 导出可用 Python 进一步处理,例如比较两个固件版本的差异。
使用条件与局限
- 审阅时最新版本为 v2.0.3,于 2026-09-21 发布到 GitHub,并以 pyrrha-mapper 名称发布到 PyPI;所审阅的 main 提交设定的也是该版本。v2.0.0(2026-07-07)新增 Ghidra 后端,并移除了原先对 Quokka 的依赖。pyproject.toml 将该软件包标为 Beta,并列出 Linux 和 Windows。
- 输入为使用者已提取或挂载的固件根文件系统;decomp 的输入则是单个可执行文件。Pyrrha 本身不解包固件镜像。fs 的快速入门示例使用从 OpenWrt 项目下载的 OpenWrt x86-64 根文件系统。
- pyproject.toml 要求 Python 3.11+,而安装页面写的是 3.10。fs 不需要反汇编器,但 fs-cg 和 decomp 需要本地安装 IDA Pro 9.1+ 或 Ghidra 12.0+,可放在 PATH 中,或通过 IDADIR 或 GHIDRA_INSTALL_DIR 指定位置;GitHub 镜像仓库提供基于 Ghidra 的 Docker 镜像,而用于 CI 的 IDA 镜像须以使用者自己的 Hex-Rays 安装程序和许可证构建。结果可在 NumbatUI 中查看,也可用 Sourcetrail 2021.4.19 查看,但无法使用节点重命名等新功能。
- GitLab CI 配置运行 pytest 单元测试以及各映射器的命令行测试,其中 fs-cg 和 decomp 使用 IDA 与 Ghidra 镜像;GitHub 工作流只构建文档和发布版本。tests/test_fw 是一个小型 32 位 ARM Linux 测试样例,包含以 Buildroot 构建的 OpenSSL 1.1.1n 可执行文件和 glibc 库。
- 采用 Apache-2.0 许可;NumbatUI 是采用 GPL-3.0 的独立项目,IDA Pro 是商业软件。README 列出了作者在 SSTIC、Hack.lu、Pass The SALT 和 RE//verse 的演讲。所审来源未提及 REA 的使用,本收录未对任何固件进行测绘。
关于此条目
- 类型
- 工具
- 类别
- 固件工具
- 关联
- 基础工具
- 目标
- 二进制 · 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/installation.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/index.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/mappers/index.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/mappers/fs.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/mappers/fs-cg.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/mappers/exe-decomp.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- docs/.snippets/diffing_pyrrha_exports.py GitHub · quarkslab/pyrrha · 修订 54cfe78
- pyproject.toml GitHub · quarkslab/pyrrha · 修订 54cfe78
- CHANGELOG.md GitHub · quarkslab/pyrrha · 修订 54cfe78
- .gitlab-ci.yml GitHub · quarkslab/pyrrha · 修订 54cfe78
- ci/ida/Dockerfile GitHub · quarkslab/pyrrha · 修订 54cfe78
- tests/test_fw GitHub · quarkslab/pyrrha · 修订 54cfe78
- LICENSE GitHub · quarkslab/pyrrha · 修订 54cfe78
- https://github.com/quarkslab/pyrrha/releases/tag/v2.0.3
- https://pypi.org/project/pyrrha-mapper/2.0.3/