Pharos

用于二进制程序的自动静态分析工具。(Automated static analysis tools for binary programs.)

Github stars Tracking Chart

Pharos 静态二进制分析框架

Pharos 静态二进制分析框架是卡内基梅隆大学软件工程研究所的一个项目。该框架旨在促进二进制程序的自动化分析。它使用由 Lawrence Livermore 国家实验室开发的 ROSE 编译器基础设施进行拆卸、控制流分析、指令语义等。本软件是在 BSD 许可下发布的。

当前发行版是对以前版本的重大更新,并添加了各种特性,包括对 OOAnalyzer 工具的改进、实验路径分析代码、分区器改进、多线程和许多其他较小的特性。

Pharos 框架是一个研究项目,代码正在积极开发中。不保证适合任何目的。虽然这个版本提供了构建指令、单元测试和一些文档,但是还有很多工作要做。我们已经测试了一些选择的构建配置,但是还没有积极地测试源代码的可移植性。有关详细信息,请参阅安装说明

由于发布这段代码的主要目的是为我们的研究提供透明度,并刺激与其他二进制静态分析研究人员的对话,请随时与 Cory Cohen cfc@cert.org联系,了解您可能对这项工作的问题。我可能无法及时回复,但我会尽力而为。

Pharos 静态二进制分析工具

APIAnalyzer

ApiAnalyzer 是一个用于查找具有指定数据和控制关系的 API 调用序列的工具。此功能用于检测常见的操作系统交互范例,如打开文件、写入文件和关闭文件。

OOAnalyzer

OOAnalyzer 是一个用于分析和恢复面向对象结构的工具。该工具是在2018年 ACM 计算机与通信安全会议上发表的一篇题为《使用逻辑编程从编译的可执行文件中恢复 c++ 类和方法》的论文的主题。该工具通过跟踪程序中函数之间的对象指针来标识对象成员和方法。该工具以前的一个实现名为 Objdigger,但重新命名它是为了反映使用 Prolog 规则恢复对象属性的重大重新设计。

CallAnalyzer

CallAnalyzer 是一个向二进制程序中的 API 调用报告静态参数的工具。它在很大程度上展示了我们当前的调用约定、参数分析和类型检测功能,尽管它也提供了对程序中代码的有用分析。

FN2Yara

FN2Yara 是一个为匹配可执行程序中的函数生成 YARA 签名的工具。共享大量函数的程序很可能具有相同的行为。

FN2Hash

FN2Hash 是为可执行程序中的函数生成各种散列和其他描述性属性的工具。与 FN2Yara 类似,它可以用于支持二进制相似性分析,或者为机器学习算法提供特性。

DumpMASM

DumpMASM 是一个使用与其他工具相同风格的 Pharos 框架从可执行文件中转储拆卸清单的工具。它没有被积极地维护,你应该考虑使用 ROSE 的标准 recursiveDisassemble http://rosecompiler.org/ROSE_HTML_Reference/rosetools.html 来代替。

(First edition: vz edited at 2019.08.24)

Main metrics

Overview
Name With Ownercmu-sei/pharos
Primary LanguageC++
Program languageC++ (Language Count: 10)
PlatformDocker, Linux
License:Other
所有者活动
Created At2015-06-12 17:51:42
Pushed At2025-08-20 14:29:09
Last Commit At2025-07-10 08:36:57
Release Count0
用户参与
Stargazers Count1.6k
Watchers Count79
Fork Count199
Commits Count191
Has Issues Enabled
Issues Count229
Issue Open Count47
Pull Requests Count38
Pull Requests Open Count4
Pull Requests Close Count6
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Pharos Static Binary Analysis Framework

The Pharos static binary analysis framework is a project of the
Software Engineering Institute at Carnegie Mellon University. The
framework is designed to facilitate the automated analysis of binary
programs. It uses the ROSE compiler infrastructure developed by
Lawrence Livermore National Laboratory for disassembly, control flow
analysis, instruction semantics, and more. This software is released
under a BSD license.

The current distribution is a substantial update to the previous
version, and adds a variety of features including improvements to the
OOAnalyzer tool, experimental path analysis code, partitioner
improvements, multi-threading, and many other smaller features.

The Pharos framework is a research project, and the code is undergoing
active development. No warranties of fitness for any purpose are
provided. While this release provides build instructions, unit tests,
and some documentation, much work remains to be done. We've tested a
few select build configurations, but we have not actively tested the
portability of the source code. See the installation
instructions
for more details.

Since the primary objective for releasing this code is to provide
transparency into our research and stimulate conversation with other
binary static analysis researchers, please feel free to contact Cory
Cohen cfc@cert.org with questions you may have about this work. I
may be unable to respond in a timely manner, but I will do my best.

Pharos Static Binary Analysis Tools

APIAnalyzer

ApiAnalyzer is a tool for finding sequences of API calls with the
specified data and control relationships. This capability is intended
to be used to detect common operating system interaction paradigms
like opening a file, writing to it, and the closing it.

OOAnalyzer

OOAnalyzer is a tool for the analysis and recovery of object oriented
constructs. This tool was the subject of a paper titled "Using Logic
Programming to Recover C++ Classes and Methods from Compiled
Executables" which was published at the ACM Conference on Computer and
Communications Security in 2018. The tool identifies object members
and methods by tracking object pointers between functions in the
program. A previous implementation of this tool was named
"Objdigger", but it was renamed to reflect a substantial redesign
using Prolog rules to recover the object attributes.

CallAnalyzer

CallAnalyzer is a tool for reporting the static parameters to API
calls in a binary program. It is largely a demonstration of our
current calling convention, parameter analysis, and type detection
capabilities, although it also provides useful analysis of the code in
a program.

FN2Yara

FN2Yara is a tool to generate YARA signatures for matching functions
in an executable program. Programs that share significant numbers of
functions are are likely to have behavior in common.

FN2Hash

FN2Hash is tool for generating a variety of hashes and other
descriptive properties for functions in an executable program. Like
FN2Yara it can be used to support binary similarity analysis, or
provide features for machine learning algorithms.

DumpMASM

DumpMASM is a tool for dumping disassembly listings from an executable
using the Pharos framework in the same style as the other tools. It
has not been actively maintained, and you should consider using ROSE's
standard recursiveDisassemble instead
http://rosecompiler.org/ROSE_HTML_Reference/rosetools.html.