cmu-sei/pharos

GitHub: cmu-sei/pharos

一个基于 ROSE 的静态二进制分析框架,旨在为研究人员提供自动化、可扩展的二进制程序分析能力。

Stars: 1685 | Forks: 210

# Pharos 静态二进制分析框架 Pharos 静态二进制分析框架是 卡内基梅隆大学软件工程研究所的一个项目。 该框架旨在促进二进制程序的自动化分析。 它使用劳伦斯利弗莫尔国家实验室开发的 ROSE 编译器基础设施进行反汇编、控制流分析、指令语义分析等。 本软件根据 BSD [许可证](LICENSE.md) 发布。 当前版本是对前一版本的重大更新,并增加了多种功能,包括对 OOAnalyzer 工具的改进、实验性路径分析代码、分区器改进、多线程支持以及许多其他较小功能。 Pharos 框架是一个研究项目,代码正处于积极开发中。 不提供任何适用性保证。虽然此版本提供了构建说明、单元测试和一些文档,但仍有许多工作有待完成。 我们已测试了一些选定的构建配置,但尚未积极测试源代码的可移植性。更多详细信息请参阅 [安装说明](INSTALL.md)。 由于发布此代码的主要目的是向其他二进制静态分析研究人员提供透明度并促进交流,欢迎您就本工作向 Cory Cohen 提问。 我可能无法及时回复,但会尽力而为。 # Pharos 静态二进制分析工具 ## [APIAnalyzer](tools/apianalyzer/apianalyzer.pod) ApiAnalyzer 是一个用于查找具有指定数据和控制关系的 API 调用序列的工具。 此功能旨在用于检测常见的操作系统交互模式,例如打开文件、写入文件并关闭文件。 ## [OOAnalyzer](tools/ooanalyzer/ooanalyzer.pod) OOAnalyzer 是一个用于分析和恢复面向对象构造的工具。 该工具曾是一篇题为 ["Using Logic Programming to Recover C++ Classes and Methods from Compiled Executables"](https://edmcman.github.io/papers/ccs18.pdf) 的论文的主题,该论文发表于 2018 年 ACM 计算机与通信安全会议。 该工具通过跟踪程序中函数间的对象指针来识别对象成员和方法。 此工具的早期实现名为 "Objdigger",后更名为 OOAnalyzer,以反映使用 Prolog 规则恢复对象属性的重大重新设计。 当前版本仅支持由 Microsoft Visual C++ 编译的 32 位 x86 可执行文件的分析。 有关如何在大型可执行文件上运行 OOAnalyzer 的详细说明,请参阅这些 [说明](share/prolog/oorules/README.md)。 Pharos 发行版曾包含一个插件,可将 OOAnalyzer 导出的 OO 信息导入 [Ghidra](https://ghidra-sre.org/) 逆向工程工具集。 现在及未来要获取该功能,请安装 [Kaiju](https://github.com/CERTCC/kaiju) Ghidra 插件,该插件包含了原本由 OOAnalayzer 插件提供的功能。 ## [CallAnalyzer](tools/callanalyzer/callanalyzer.pod) CallAnalyzer 是一个用于报告二进制程序中 API 调用的静态参数的工具。 它在很大程度上展示了我们当前的调用约定、参数分析和类型检测能力,同时也提供了对程序代码的有用分析。 ## [FN2Yara](tools/fn2yara/fn2yara.pod) FN2Yara 是一个用于为可执行程序中的函数生成 YARA 签名的工具。 共享大量函数的程序很可能具有共同的行为。 ## [FN2Hash](tools/fn2hash/fn2hash.pod) FN2Hash 是一个用于为可执行程序中的函数生成多种哈希值和其他描述性属性的工具。 与 FN2Yara 类似,它可用于支持二进制相似性分析,或为机器学习算法提供特征。 ## [DumpMASM](tools/dumpmasm/dumpmasm.pod) DumpMASM 是一个用于使用 Pharos 框架以与其他工具相同风格转储可执行文件反汇编列表的工具。 它尚未得到积极维护,建议使用 ROSE 的 `recursiveDisassemble` 替代。
标签:API序列分析, BSD许可, Findomain, ROSE编译器, SEI, Wayback Machine, 二进制分析, 二进制程序分析, 二进制静态分析工具, 云安全监控, 云安全运维, 云资产清单, 代码分析工具, 分区分析, 卡内基梅隆大学, 反汇编, 可移植性, 实验性代码, 开源, 指令语义, 控制流分析, 操作系统交互, 数据管道, 浏览器安全, 源码分析, 研究项目, 编译器基础设施, 自动化分析, 跨站脚本, 路径分析, 软件工程, 逆向工具, 逆向工程, 静态分析