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抓取, 云资产清单, 函数属性分析, 可扩展分析框架, 可配置连接, 抽象解释, 控制流图, 架构无关, 漏洞数据库, 程序分析, 编译器技术, 跳表分析, 软件安全, 边界分析, 逆向工程, 静态二进制分析