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_*`)在路径、命令和环境变量中被特意保留。 work ## 基准测试快照 下表提供了五个受评估的反编译器在三个维度上的快照。 | 反编译器 | 可读性 | 可重新编译性 | 功能性 | | ---------- | ----------- | --------------- | ------------- | | 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提取, 二进制分析, 云安全监控, 云安全运维, 反编译, 客户端加密, 自动化评估, 请求拦截, 逆向工具, 静态分析