nhuhuan/sba
GitHub: nhuhuan/sba
基于抽象解释的可扩展静态二进制分析框架,提供跨架构的高保真反汇编和多种程序分析能力。
Stars: 29 | Forks: 2
# SBA:可扩展二进制分析框架
## 公告
SBA 框架目前正在进行重大重构:
* **架构与健壮性**
- **反汇编器:** 开发一个健壮的、与架构无关的反汇编器,利用 *LLVM MC* 进行高保真二进制分析。
- **二进制加载:** 集成 *LLVMObject* 以可靠地跨平台支持 ELF、PE 和 Mach-O 可执行格式。
- **提升:** 实现高性能 C++ 提升器,以取代传统的 OCaml 流水线。
* **框架能力**
- 重新设计 *ControlFlowGraphAPI* 以支持多种图类型和构建策略。
- 重构 *AnalysisAPI* 以允许无缝集成自定义抽象域。
* **应用**
- 跳转表分析
- 改进边界分析
- 函数属性
- 被调用者保存寄存器保留
- 无效指针解引用
- 非返回调用分析
* **新颖分析技术**
- 待公布!
## 二进制分析框架应该做什么?
* 减少单独分析的实现工作量
- 在 C++ 中仅需 250 行代码 即实现用于验证函数属性的分析。
* 高度可配置
- 一个基于抽象解释的框架,允许用户定义抽象域并配置指令评估。
* 对栈内存的合理且精确的推理
- 字节级粒度的栈内存模型,以及对栈上不精确更新的合理且高效的近似。
* 架构中立
- 将分析与架构细节(如汇编语言和 ABI 规范)解耦。
## 快速开始
### 依赖项
SBA 需要 C++20 编译器 (GCC/Clang)、CMake 和 OCaml。
我们建议使用 **Opam** 来管理 OCaml 环境,因为它能确保不同 Linux 发行版之间的兼容性。
#### 1. 安装系统工具
```
# Fedora/RHEL
sudo dnf install clang make cmake ninja-build opam patch
# Ubuntu/Debian
sudo apt-get install clang make cmake ninja-build opam
```
#### 2. 配置 OCaml 环境
初始化 Opam 并为 OCaml 4.14 创建一个 switch(传统提升器需要):
```
opam init
opam switch create sba 4.14.2
eval $(opam env)
opam install camlp4 ocamlfind
```
### 构建 SBA
```
mkdir build && cd build
cmake .. -G Ninja -DCMAKE_CXX_COMPILER=clang++
ninja -j4
```
## 应用
### 跳转表分析
要分析二进制对象 `~/obj`,请使用以下命令:
```
./tools/jump_table x86_64.auto ~/obj
```
默认情况下,SBA 会在 `/tmp/sba/` 中创建临时文件并输出结果。可以使用 `-d` 和 `-o` 指定这些路径,如下所示:
```
./tools/jump_table -d /tmp/sba/ -o /tmp/sba/result x86_64.auto ~/obj
```
## 出版物
SBA 对以下工作的实现做出了重大贡献:
1. Scalable, Sound, and Accurate Jump Table Analysis. ISSTA 2024.
2. Accurate Disassembly of Complex Binaries Without Use of Compiler Metadata. ASPLOS 2023.
3. SAFER: Efficient and Error-Tolerant Binary Instrumentation. USENIX 2023.
4. Practical fine-grained binary code randomization. ACSAC 2020.
标签:Bash脚本, C++20, ELF/PE/Mach-O, LLVM MC, OCaml, TLS抓取, 云资产清单, 函数属性分析, 可扩展分析框架, 可配置连接, 抽象解释, 控制流图, 架构无关, 漏洞数据库, 程序分析, 编译器技术, 跳表分析, 软件安全, 边界分析, 逆向工程, 静态二进制分析