binaryai/bindiffmatch

GitHub: binaryai/bindiffmatch

BinaryAI BindiffMatch 实现了一种基于深度学习嵌入的二进制函数级差异比对算法,用于在不同版本或编译条件下匹配函数对应关系并评估匹配精度。

Stars: 96 | Forks: 11

# BinaryAI BindiffMatch 算法 此仓库包含 [BinaryAI]( https://www.binaryai.cn/ ) 文件对比算法的实现,以及数据集和指标脚本。 ## 项目 `binaryai_bindiffmatch` 目录是 BinaryAI BindiffMatch 算法,不包含 BAI-2.0 模型和 embedding 实现。 `data` 目录包含指标数据集。(你可以从 [发布资产]( https://github.com/binaryai/bindiffmatch/releases ) 下载) `data/files` 包含未 stripped 的文件和已 stripped 的文件。 我们使用来自 `coreutils`、`diffutils` 和 `findutils` 库的二进制文件作为测试用例。这些二进制文件是 [DeepBinDiff]( https://github.com/yueduan/DeepBinDiff/tree/master/experiment_data ) 项目中的实验数据,请前往原项目获取这些二进制文件。 我们手动构建了部分版本的 `openssl` 项目,并选择了两个文件作为示例用例。以下是源码 [openssl-1.1.1u]( https://www.openssl.org/source/openssl-1.1.1u.tar.gz ) [openssl-3.1.1]( https://www.openssl.org/source/openssl-3.1.1.tar.gz ) `data/labeleds` 包含每个二进制文件中函数的预生成信息。basicinfo、pseudocode、callees 和 name 由 [Ghidra]( https://github.com/NationalSecurityAgency/ghidra ) 提供支持,而特征 embedding 向量由 BinaryAI BAI-2.0 模型提供支持。生成这些文件的脚本未包含在此项目中。 `data/matchresults` 包含基于 BinaryAI BindiffMatch 算法和 [Diaphora]( https://github.com/joxeankoret/diaphora/tree/3.0 ) 在测试用例和示例上预生成的匹配结果,以及 groundtruth 结果。 BinaryAI BindiffMatch 的结果可以在每对文件上通过执行 `python -m binaryai_bindiffmatch -o ` 来生成。 Diaphora 的结果首先是通过在此 [commit]( https://github.com/joxeankoret/diaphora/tree/3.0 ) 上应用 [patch]( scripts/diaphora-3.0-b91a9e7abe03de45bf47d4619eda7f8b3f0357bb.patch ),然后使用 IDA 无头模式导出 `.sqlite` 数据库来生成的。之后,运行离线 Diaphora 脚本生成 `.diaphora` 结果(将 `relaxed_ratio` 设置为 True,其他选项保持默认),最后将其转换为与 BinaryAI 结果相同的 JSON 格式。执行这些操作的脚本未包含在此项目中。 ## 安装 要求 Python >= 3.10 运行 `pip install .[lowmem]` 以安装此包及其依赖项 ## 指标 `python scripts/metrics.py testcases binaryai`:获取由 BinaryAI BindiffMatch 算法支持的完整测试用例的指标结果 `python scripts/metrics.py testcases diaphora`:获取由 Diaphora 支持的完整测试用例的指标结果 `python scripts/metrics.py example binaryai`:获取由 BinaryAI BindiffMatch 算法支持的[示例]( https://www.binaryai.cn/compare/eyJzaGEyNTYiOiJiNDQzYjRjMmNiMzlkYWNmMTkwNzA3NTI1NGE3MWJkYTg1ZjU2OTczNDk3YjgxNmUyZWRjNTNlZGQ2OTE4MTllIiwidGFyZ2V0Ijp7ImJpbmRpZmYiOnsic2hhMjU2IjoiZTMwZWRjOGQ2YjYyN2U5YmRjMTRmNWQyMTViNzZiYTUxYzFjMTNhODZjOWNjYzEzYzY1YmEyNGIzZTdmODRiMCJ9fX0= )用例的指标结果 `python scripts/metrics.py example diaphora`:获取由 Diaphora 支持的[示例]( https://www.binaryai.cn/compare/eyJzaGEyNTYiOiJiNDQzYjRjMmNiMzlkYWNmMTkwNzA3NTI1NGE3MWJkYTg1ZjU2OTczNDk3YjgxNmUyZWRjNTNlZGQ2OTE4MTllIiwidGFyZ2V0Ijp7ImJpbmRpZmYiOnsic2hhMjU2IjoiZTMwZWRjOGQ2YjYyN2U5YmRjMTRmNWQyMTViNzZiYTUxYzFjMTNhODZjOWNjYzEzYzY1YmEyNGIzZTdmODRiMCJ9fX0= )用例的指标结果
标签:Apex, Python, 二进制分析, 二进制比对, 云安全运维, 云资产清单, 无后门, 机器学习, 算法实现, 逆向工具, 逆向工程