codefuse-ai/CodeFuse-DeBench
GitHub: codefuse-ai/CodeFuse-DeBench
一个用于系统评估二进制反编译器输出质量(可读性、可重编译性、功能正确性)的自动化基准测试框架。
Stars: 2 | Forks: 0
# CodeFuse-DeBench
CodeFuse-DeBench 是一个自动化基准测试框架,用于在以下三个阶段评估反编译的二进制文件:
1. 步骤 1:可读性
2. 步骤 2:语法正确性 / 重新编译
3. 步骤 3:功能性 / 语义保真度
为了确保可复现性和进行二次分析,本仓库保留了核心实现、基准测试源码、构建产物、反编译器输出以及三个主要的结果树。已移除论文源码、内部维护工具、交接说明和非必要的分析脚本。
为了向后兼容,操作标识符(如 `bindebench/`、`binbench-*.yaml` 和 `BINBENCH_*`)在路径、命令和环境变量中被特意保留。
## 基准测试快照
下表提供了五个受评估的反编译器在三个维度上的快照。
| 反编译器 | 可读性 | 可重新编译性 | 功能性 |
| ---------- | ----------- | --------------- | ------------- |
| IDA | 5.73 (#1) | 64.8% (#2) | 29.7% (#1) |
| Ghidra | 5.50 (#2) | 65.5% (#1) | 22.8% (#2) |
| BinaryAI | 4.99 (#3) | 47.2% (#4) | 14.8% (#3) |
| RetDec | 4.51 (#4) | 50.2% (#3) | 1.5% (#5) |
| Angr | 4.36 (#5) | 38.0% (#5) | 9.2% (#4) |
可读性 = L1-L5 概览得分的平均值;可重新编译性 = 完全成功 (FS) 率;功能性 = 程序级别的完全标准输出加上部分匹配率。
## 仓库概述
```
bindebench/
├── src/ # benchmark source corpus
├── build/ # original binaries and successful_builds.json
├── decompiled/ # outputs from each decompiler
├── evaluator/ # Step1 / Step2 / Step3 implementations
├── scripts/ # build, single-task, batch, and support scripts
├── config/ # LLM configuration templates with env-based keys
├── prompt/ # Step1 prompt assets
├── results_glm_v4_full/ # GLM results tree
├── results_qwen_v4_full/ # Qwen results tree
├── results_minimax_v4_full/ # MiniMax results tree
├── docs/ # core documentation
├── binbench-*.yaml # Lima/VM configuration
└── README.md
```
有关更详细的结构概述,请参阅 [docs/PROJECT_STRUCTURE.md](docs/PROJECT_STRUCTURE.md)。有关脚本的特定指南,请参阅 [scripts/README.md](scripts/README.md)。
## 快速开始
### 1. 配置 LLM 凭证
本仓库不包含真实的 API key。请导出所需的环境变量,然后根据需要调整 [config/llm_config.json](config/llm_config.json) 和 [config/llm_key_inventory.json](config/llm_key_inventory.json)。
示例:
```
export BINBENCH_GLM_API_KEY=...
export BINBENCH_DASHSCOPE_API_KEY=...
export BINBENCH_MINIMAX_API_KEY=...
```
详情请参阅 [docs/LLM_CONFIGURATION_GUIDE.md](docs/LLM_CONFIGURATION_GUIDE.md)。
### 2. 构建原始二进制文件
```
podman build -t cross-compiler -f scripts/Dockerfile .
podman run --platform linux/amd64 --rm -v "$(pwd):/work" cross-compiler \
python3 scripts/build_in_docker.py
```
### 3. 运行单个任务的完整 Pipeline
```
python3 scripts/run_single_task.py \
src/7.c \
decompiled/retdec_out/arm32/7/7_gcc_O2_no_g.c \
--arch arm32 \
--original-bin build/arm32/7/7_gcc_O2_no_g \
--llm-profile qwen3.5-plus \
--results-dir runs/qwen_demo
```
此命令在宿主机上运行步骤 1,然后进入匹配的 Lima 实例以执行步骤 2 和步骤 3。
### 4. 批量评估
推荐的批量执行入口是启动器:
```
python3 scripts/launch_auto_eval.py \
--llm-profile glm_official \
--arch arm64 \
--results-dir results_glm_v4_full \
--retry
```
调用链:
```
launch_auto_eval.py
-> auto_eval.py
-> host orchestration helpers (scripts/pipeline_host.py)
-> host Step1 (evaluator/readability/eval_readability.py)
-> guest Step2/3 (scripts/run_pipeline_in_docker.py)
```
### 5. 批量命令示例
```
python3 scripts/auto_eval.py \
--arch arm32 \
--src 7 \
--bin-name 7_gcc_O2_no_g \
--decompiler retdec \
--llm-profile qwen3.5-plus \
--results-dir runs/qwen_batch
```
```
python3 scripts/auto_eval.py \
--arch arm32 \
--src 7 \
--bin-name 7_gcc_O2_no_g \
--decompiler retdec \
--llm-profile minimax \
--results-dir runs/minimax_batch
```
注意事项:
- `scripts/pipeline_host.py` 是一个内部共享助手,而不是面向用户的 CLI。`run_single_task.py` 和 `auto_eval.py` 都使用它来执行宿主机的步骤 1、客户机的预检查,以及从宿主机到客户机的环境转发。
- 带有过滤条件的 `auto_eval.py` 调用非常适合在扩大范围之前验证单个任务。对于较大规模的运行,建议使用 `launch_auto_eval.py` 或配合 `--retry` 的 `auto_eval.py`。
## 结果布局
- `results_{llm}_v4_full/` 是主要的结果树。步骤 1、步骤 2 和步骤 3 共享同一个按任务划分的目录。
- 历史的仅步骤 1 输出已经合并到三个主要结果树的 `readability/` 子目录中。
- 这三个结果树体积庞大,并且 `decompiled/` 还包含了完整的反编译器输出。本仓库旨在提供可复现性和可审计性,而不是作为一个轻量级的演示。
## 文档索引
- [docs/PROJECT_STRUCTURE.md](docs/PROJECT_STRUCTURE.md):仓库布局和结果树结构
- [docs/PIPELINE_USAGE.md](docs/PIPELINE_USAGE.md):单任务 Pipeline 用法
- [docs/AUTO_EVAL_IMPLEMENTATION.md](docs/AUTO_EVAL_IMPLEMENTATION.md):批量编排入口
- [docs/LLM_CONFIGURATION_GUIDE.md](docs/LLM_CONFIGURATION_GUIDE.md):配置模板与密钥注入
- [docs/READABILITY_EVALUATION.md](docs/READABILITY_EVALUATION.md):步骤 1 指标与输出
- [docs/STEP2_METRICS.md](docs/STEP2_METRICS.md):步骤 2 指标与输出
- [docs/SEMANTIC_EVALUATION_DETAILS.md](docs/SEMANTIC_EVALUATION_DETAILS.md):步骤 3 实现细节与产物
## 引用
```
@misc{liu2026codefusedebenchempiricalstudyreadability,
title={CODEFUSE-DEBENCH: An Empirical Study on Readability, Recompilability, and Functionality},
author={Puzhuo Liu and Yuhan Huang and Jianlei Chi and Peng Di and Yu Jiang},
year={2026},
eprint={2605.29490},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2605.29490},
}
```
## 许可证
CodeFuse-DeBench 采用 [Apache License 2.0](./LICENSE) 授权。
标签:URL提取, 二进制分析, 云安全监控, 云安全运维, 反编译, 客户端加密, 自动化评估, 请求拦截, 逆向工具, 静态分析