moonkick64/BSim-foundry

GitHub: moonkick64/BSim-foundry

为 29 个常见 C/C++ 开源库预构建的 Ghidra BSim 二进制相似度签名数据库,帮助在未知二进制中识别和标记第三方库函数。

Stars: 13 | Forks: 1

# BSim-foundry 一项为常见 OSS C/C++ 库构建二进制相似度签名的实验,使用 [Quarkslab/SightHouse](https://github.com/quarkslab/sighthouse) 和 Ghidra 的 **BSim(二进制相似度)** 引擎。 库基于 [SCA-Benchmark](https://github.com/moonkick64/SCA-Benchmark) 构建,并通过 SightHouse 的分析器流水线导入到 Ghidra BSim 数据库中。 输出结果是一个带有标签的签名数据库及其 XML 转储(通过 GitHub Releases 分发)。 ## 数据集 | | | | ----------------------------- | ------------------------------------------------ | | 库 | 29 (zlib, openssl, mbedtls, sqlite, libcurl, …) | | 架构 | x86_64, arm64 | | 优化 | `-O0`, `-O2` | | BSim 可执行文件(`.o` 单元) | 10,832 | | 已签名函数 | 257,724 | 每个函数都被标记为 `@-[-O]` —— 例如, `zlib@1.3.1-x86_64` 或 `openssl@3.6.0-arm64-O2`。 ## 快速开始 ``` # 1. 启动 BSim 数据库 ./scripts/bootstrap.sh # 2. 从 Release 获取签名并加载它们 gh release download v1.0.0 --pattern 'signatures-*.tar.gz' tar xzf signatures-v1.0.0.tar.gz ./scripts/restore-signatures.sh ``` 此时 `bsim_postgres` 已填充完毕。要在未知二进制文件中检测库函数,你有三种选择 —— 无头脚本、Ghidra GUI,或者 SightHouse 插件: ``` # Headless:识别 embedded libraries,或就地重命名函数。 export GHIDRA_INSTALL_DIR=/opt/ghidra ./scripts/identify.sh ./suspect.bin # read-only report MODE=rename ./scripts/identify.sh ./suspect.bin # auto-rename + evidence comments ``` 关于这三种途径、阈值调整以及如何解读结果,请参阅 **[USAGE.md](USAGE.md)**。 ## 构建 / 扩展签名 要添加库、架构或优化级别 —— 或者从头重新构建 —— 请参阅 [BUILDING.md](BUILDING.md)。 ## 许可证 MIT —— 请参阅 [LICENSE](LICENSE)。依赖项保留其各自的许可证: - Quarkslab/SightHouse —— MIT - Ghidra —— Apache 2.0 - 库本身 —— 请参阅 SCA-Benchmark/`libraries.json`。
标签:C/C++库, Cutter, Ghidra, 二进制相似度分析, 云资产清单, 域名枚举, 测试用例, 特征数据库, 软件成分分析(SCA), 逆向工程