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), 逆向工程