PhASAR: 基于 LLVM 的静态分析框架
PhASAR 是什么?
PhASAR 是一个基于 LLVM 的静态分析框架,使用 C++ 编写。它允许用户指定任意数据流问题,然后在指定的 LLVM IR 目标代码上以完全自动化的方式进行解决。通过框架来计算指向信息、调用图等,因此您可以专注于重要的内容。
- IFDS/IDE 解析器:基于 IFDS/IDE 算法的跨过程数据流解析器
- WPDS 解析器(实验版):基于加权推下系统的数据流解析器。可解决任何 IFDS/IDE 问题
- MonoIFDS 解析器:用于 自底向上 IFDS 分析的高性能数据流解析器
- 稀疏分析:SparseIFDS/SparseIDE/SparseWPDS,提高性能
- 调用图构建:多种算法(CHA、RTA、VTA、基于别名)
- 类层次结构构建:从 LLVM IR 中提取高级 C++ 类信息
- 指向/别名基础架构:针对 LLVM IR 的高性能别名分析。支持从 SVF 获取先进的别名/指向信息,并与之集成
- 跨过程控制流图(ICFG):将控制流与调用图信息相连接
- 路径跟踪:通过重构具体数据流路径来改进 IFDS/IDE 结果的报告
- 单调解析器:基于单调框架的简单的内部过程分析引擎
- 污染分析:用于污染配置和基于 IFDS/IDE 的污染分析的基础架构
- 现代 C++20 API:模块化、易于使用的接口,适用于非 C++ 专家
如何开始使用 PhASAR? 我们在 Wiki 中提供了关于 PhASAR 的一些文档。您可能会先阅读本 README。 请也查看 PhASAR 的项目目录,特别是 examples 目录和自定义工具 tools/example-tool/myphasartool.cpp。 您可以在 这里 找到 PhASAR 的 API 参考。