# Pharos 二进制静态分析框架

> 卡内基梅隆大学软件工程研究所（SEI）推出的二进制程序自动化静态分析工具框架，基于劳伦斯利弗莫尔国家实验室的 ROSE 编译器基础设施完成反汇编、控制流分析和指令语义建模。其中最知名的 OOAnalyzer 跟踪对象指针在函数之间的传递，再用 Prolog 规则从这些事实中恢复 C++ 类、方法等面向对象结构，适用于 Microsoft Visual C++ 编译的 32 位 x86 可执行文件，方法见 CCS 2018 论文；结果以 JSON 导出，可供仓库自带的 IDA 插件或独立的 Kaiju Ghidra 插件使用。其他工具可查找 API 调用序列（ApiAnalyzer）、报告 API 调用的静态参数（CallAnalyzer）、生成用于相似性分析的函数哈希和 YARA 签名（FN2Hash、FN2Yara），以及求出从一个地址到达另一地址所需的条件（PathAnalyzer）。

- 类型：工具
- 目标：二进制
- 类别：原生分析工具
- 关联：基础工具
- 来源复核于：2026-10-19
- 收录于：2026-10-31
- 原始资源：<https://github.com/cmu-sei/pharos>
- 一手来源：<https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/pharos/>
- 记录 JSON：<https://awesomerea.org/resources/pharos/record.json>
- 英文版：[English](https://awesomerea.org/resources/pharos/index.md)

## 使用条件与局限

- 项目没有打标签的发布版本；所审阅的 master 提交日期为 2026-08-03。README 称 Pharos 是仍在积极开发的研究项目，文档尚不完整，可移植性也未经主动测试；README 还说明 DumpMASM 已不再维护，建议改用 ROSE 自带的工具。
- 最简便的方式是使用预构建的 ghcr.io/cmu-sei/pharos Docker 镜像，GitHub 工作流会在每次推送时及每周为 amd64 和 arm64 构建该镜像。从源码构建负担较重：需要 C++14、CMake、Boost、yaml-cpp、SQLite、Z3、SWI-Prolog 和 ROSE，构建脚本固定使用 ROSE v2.6.0、Z3 4.8.7 和 SWI-Prolog 8.5.12。INSTALL.md 建议在 CPU 数量较少时每个构建 CPU 配约 4 GiB 内存，构建脚本仅支持最新版 Ubuntu，列出的手动测试配置则较旧，包括 RHEL 7、Ubuntu 19.04 和 openSUSE 15.1。
- 待分析的可执行文件需自行提供。OOAnalyzer 仅支持 32 位 MSVC 二进制，对 64 位可执行文件或其他编译器的测试很少；其 JSON 输出可供仓库中的 IDA 插件或独立的 Kaiju Ghidra 插件使用，分析非常大的可执行文件需要按 oorules 说明执行额外步骤。
- Dockerfile 包含一个测试阶段，会针对由 tests/ 中源码编译的测试程序运行 ctest，但 GitHub 工作流只构建发布镜像。
- LICENSE.md 是 SEI 的 BSD 风格许可（版权归卡内基梅隆大学所有，2021 年），并限制使用 CMU 和 SEI 名称，因此 GitHub 显示为 NOASSERTION。ROSE、SWI-Prolog、Z3、Boost、yaml-cpp 和 SQLite 各自适用其许可证。

## 一手来源

1. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/README.md>
2. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/INSTALL.md>
3. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/Dockerfile>
4. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/.github/workflows/docker.yml>
5. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/scripts/build_prereqs.bash>
6. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/CMakeLists.txt>
7. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/tools/ooanalyzer/ooanalyzer.pod>
8. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/tools/ooanalyzer/ida/README.md>
9. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/share/prolog/oorules/README.md>
10. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/tools/apianalyzer/apianalyzer.pod>
11. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/tools/pathanalyzer/pathanalyzer.pod>
12. <https://github.com/cmu-sei/pharos/blob/782492fe3b854c02f3b6257e9be3b6de87be1960/LICENSE.md>
13. <https://edmcman.github.io/papers/ccs18.pdf>
14. <https://github.com/cmu-sei/pharos/pkgs/container/pharos>

## 同分区更多条目：原生二进制

- [heimdall-rs EVM 字节码分析工具包](https://awesomerea.org/zh/resources/heimdall-rs/index.md) · 工具
- [PE-bear PE 文件分析工具](https://awesomerea.org/zh/resources/pe-bear/index.md) · 工具
- [PE-sieve 进程内存植入扫描工具](https://awesomerea.org/zh/resources/pe-sieve/index.md) · 工具
- [oletools Office 文档与 OLE 文件分析工具集](https://awesomerea.org/zh/resources/oletools/index.md) · 工具
- [MonkeyDev iOS 应用插桩开发工具包](https://awesomerea.org/zh/resources/monkeydev/index.md) · 工具
- [Hollows Hunter 进程内存植入扫描器](https://awesomerea.org/zh/resources/hollows-hunter/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
