BinKit:二进制代码相似性分析(BCSA)基准库教程
BinKitBinary Code Similarity Analysis (BCSA) Benchmark项目地址:https://gitcode.com/gh_mirrors/bi/BinKit
项目介绍
BinKit 是一个用于二进制代码相似性分析(Binary Code Similarity Analysis, BCSA)的基准工具包。这个项目旨在提供一个全面的环境来测试和评估不同编译器选项下产生的二进制文件的相似性。BinKit v2.0 包含了基于8种架构、6个优化级别、以及23种编译器的1904个不同的编译选项组合,总计371928个二进制文件。该工具集支持最新的GCC和Clang版本,包括至11和13版,并引入了Ofast优化选项。此外,它提供了构建跨编译环境的脚本以及一系列详尽的编译选项。
项目快速启动
环境准备
确保你的系统已经安装了Git,随后通过以下命令克隆BinKit仓库:
git clone https://github.com/SoftSec-KAIST/BinKit.git
cd BinKit
编译环境搭建与数据集准备
按照仓库中的说明,可能需要设置特定的编译链或依赖项。以Linux为例,你可能需要安装必要的开发包和工具链。具体步骤请参考README.md
中的指南,执行提供的脚本来配置编译环境并生成数据集。
# 示例配置脚本路径可能在以下类似位置,请按实际情况调整
./scripts/gnu_compile_script.py
应用案例和最佳实践
在安全研究、逆向工程以及编译器行为分析中,BinKit可以作为一个强大的工具。例如,为了比较两个采用不同编译选项编译出的相同源码的二进制差异,你可以利用BinKit的数据集和脚本进行分析:
- 编译特征提取: 使用提供的脚本对选定的二进制文件执行特征提取。
- 相似性比较: 自定义脚本或利用已有的BCSA工具比较这些特征,以评估它们的相似度。
示例脚本使用
# 假设有一个特征提取脚本do_extract.sh
./do_extract.sh binary1 binary2
典型生态项目
BinKit不仅独立存在,它的数据集和分析结果广泛应用于学术界和工业界对于BCSA工具的评估。例如,结合如TikNib这类工具进行地真实标签创建,或者与其他二进制分析框架集成,来研究编译选项对软件指纹的影响。
确保在使用过程中引用其论文,以便给予原作者应有的学术认可:
Kim D., Kim E., Cha S.K., Son S., Kim Y.D. (2022) Revisiting Binary Code Similarity Analysis using Interpretable Feature Engineering and Lessons Learned. In: IEEE Transactions on Software Engineering.
请注意,实际操作时需详细查阅项目内的文档,因为环境设置、脚本调用的具体参数可能会随项目更新而有所变化。
BinKitBinary Code Similarity Analysis (BCSA) Benchmark项目地址:https://gitcode.com/gh_mirrors/bi/BinKit