five

DecompileBench

收藏
arXiv2025-05-16 更新2025-05-20 收录
下载链接:
https://github.com/Jennieett/DecompileBench
下载链接
链接失效反馈
官方服务:
资源简介:
DecompileBench是一个用于评估反编译器在真实世界场景中的性能的全面框架,包含从130个真实世界程序中提取的23,400个函数。数据集由中国科学院信息工程研究所、清华大学和北京大学的研究人员创建,旨在解决当前反编译器评估方法的局限性,提供更真实、全面的评估结果。数据集通过运行时一致性验证和基于任务的指标,对反编译器的功能正确性和可读性进行评估。DecompileBench的发布将促进反编译器研究的发展,并帮助安全专家根据具体需求选择合适的工具。

DecompileBench is a comprehensive framework for evaluating decompiler performance in real-world scenarios, containing 23,400 functions extracted from 130 real-world programs. Developed by researchers from the Institute of Information Engineering of the Chinese Academy of Sciences, Tsinghua University, and Peking University, this dataset aims to address the limitations of current decompiler evaluation methods and deliver more authentic and comprehensive evaluation results. It assesses the functional correctness and readability of decompilers through runtime consistency verification and task-based metrics. The release of DecompileBench will advance decompiler-related research and help security experts select appropriate tools tailored to their specific needs.
提供机构:
清华大学、北京大学、中国科学院信息工程研究所
创建时间:
2025-05-16
原始信息汇总

DecompileBench 数据集概述

数据集简介

DecompileBench 是一个用于评估反编译工具性能的数据集,支持传统反编译器和大型语言模型(LLM)的评估。

依赖项

  • LLVM 18

数据准备

  1. 克隆 oss-fuzz 项目
  2. 修改 base-builder Dockerfile 以支持函数提取
  3. 构建 Docker 镜像
  4. 编译用于链接fuzzer的虚拟库

配置

  • 默认配置文件:config.yaml
    • oss_fuzz_path: oss-fuzz项目路径
    • decompilers: 待评估的反编译器列表
    • opts: 待评估的优化级别列表

函数提取

  • 执行fuzzers收集覆盖函数信息
  • 使用clangclang-extract提取函数
  • 可选参数:--worker-count指定工作线程数,--project指定特定项目

编译

  1. 设置环境变量:
    • LIBCLANG_PATH: libclang库文件路径
    • dataset_path: 数据集输出路径
  2. 执行编译脚本: shell python compile_ossfuzz.py --output $dataset_path
  • 输出结构:
    • $dataset_path/binary: 编译后的二进制文件
    • $dataset_path/compiled_ds: 包含元数据的数据集
    • $dataset_path/eval: 评估基准数据集

反编译

传统反编译器

  1. 设置反编译器服务
  2. 使用declient与服务交互
  3. 执行反编译命令示例: shell python decompile.py --base-dataset-path $dataset_path --output $dataset_path/decompiled_ds_hexrays --decompilers hexrays

LLM反编译器

  • 执行示例: shell python refine.py --dataset $dataset_path/decompiled_ds_hexrays --model gpt-4o-mini --output-file $dataset_path/gpt-4o-mini.jsonl --concurrency 30

数据集合并

  • 合并多个反编译结果: shell python merge.py --base-dataset-path $dataset_path/ --decompiled-datasets $dataset_path/gpt-4o-mini.jsonl $dataset_path/decompiled_ds_ghidra/ $dataset_path/decompiled_ds_hexrays/ --output $dataset_path/decompiled_ds

评估

  1. 成功率评估: shell python evaluate_rsr.py --decompiled-dataset $dataset_path/decompiled_ds --decompilers hexrays

  2. 覆盖率评估: shell python evaluate_cer.py --dataset $dataset_path/decompiled_ds

  3. 代码质量评估: shell python code_quality.py --run --model your_model --dataset ./decompiled_ds_all --output your_output_path

搜集汇总
数据集介绍
main_image_url
构建方式
DecompileBench数据集的构建采用了系统化的方法,以确保其在真实场景中的适用性和可靠性。首先,通过OSS-Fuzz平台从130个活跃维护的开源项目中提取了23,400个真实函数,这些项目经过Clang的覆盖检测器配置和编译,生成了可执行的模糊测试工具和初始种子输入。随后,利用clang-extract工具提取每个覆盖函数的实现及其依赖项,如调用的函数签名和使用的宏定义,将这些函数编译为独立的共享对象文件。最后,使用多种反编译器对这些二进制文件进行反编译,生成反编译代码以供后续评估。这一流程确保了数据集的高质量和多样性,涵盖了广泛的真实世界程序复杂性。
特点
DecompileBench数据集具有多方面的显著特点,使其成为评估反编译器的理想基准。首先,数据集基于真实世界的二进制代码,避免了传统合成微基准的局限性,能够全面反映反编译器在实际安全任务中的表现。其次,数据集引入了运行时感知验证机制,通过动态替换原始函数并检测全程序执行路径,确保反编译代码的功能正确性。此外,数据集还采用了基于LLM-as-Judge的自动化人本评估方法,从12个维度量化反编译代码的可读性和实用性,为安全分析人员提供了全面的工具选择依据。这些特点共同构成了一个多维度的评估框架,能够全面衡量反编译器的性能。
使用方法
DecompileBench数据集的使用方法设计科学且系统化,能够满足不同研究需求。研究人员可以通过数据集提供的三个主要评估维度来全面分析反编译器的性能:编译器方面报告衡量反编译代码的重新编译成功率;运行时方面报告通过分支覆盖一致性分析验证功能正确性;代码质量方面报告则利用LLM-as-Judge方法评估输出的可读性和实用性。使用过程中,研究人员可以灵活选择特定的优化级别(从-O0到-O3)进行测试,也可以针对不同类型的反编译器(传统工具、专用LLM模型或通用LLM)进行比较分析。数据集的开源特性还允许用户根据具体需求进行定制化评估,为反编译器研究提供了高度灵活性。
背景与挑战
背景概述
DecompileBench是由清华大学、北京大学和中国科学院信息工程研究所的研究团队于2025年提出的首个面向真实场景的全面反编译器评估基准。该数据集旨在解决安全分析领域长期存在的反编译器评估碎片化问题,通过从130个真实世界程序中提取的23,400个函数构建评估框架,创新性地结合了运行时行为验证和基于LLM的自动化人本评估。作为二进制逆向工程领域的重要基础设施,DecompileBench首次实现了对反编译器功能正确性、语义保真度和分析师可用性的多维度量化评估,为漏洞挖掘、恶意软件分析等安全关键任务提供了可靠的评估标准。
当前挑战
DecompileBench面临的挑战主要体现在两个层面:领域问题层面需解决传统评估方法对语义保真度和分析师可用性评估的不足,特别是针对现代编译器优化和复杂程序行为的验证难题;构建过程中需克服真实世界函数提取的技术障碍,包括处理多样化编译优化级别(-O0至-O3)的二进制代码、实现运行时行为验证的精确差分测试,以及建立基于LLM的自动化评估体系。此外,数据集还需平衡传统规则驱动反编译器与新兴LLM驱动方法在功能正确性(平均52.2%差距)和代码可理解性之间的评估标准。
常用场景
经典使用场景
在逆向工程领域,DecompileBench数据集通过提供来自130个真实世界程序的23,400个函数,为评估反编译工具在复杂环境下的表现提供了标准化的测试平台。该数据集特别适用于比较传统反编译工具与基于大型语言模型(LLM)的新型方法在语义保真度和代码可读性方面的差异。研究人员可利用其运行时感知验证机制,精确量化不同工具在控制流恢复、变量命名重建等关键指标上的性能表现。
实际应用
在网络安全实践中,DecompileBench被广泛应用于恶意软件分析和漏洞挖掘场景。安全团队通过该数据集的基准测试结果,可针对特定任务选择最优反编译工具——Hex-Rays等传统工具适用于需要严格语义保真的调试场景,而MLM等LLM增强工具则在快速理解恶意代码逻辑时展现优势。其开源的评估框架还能集成到持续集成管道中,用于监控反编译工具在代码库更新后的稳定性变化。
衍生相关工作
该数据集推动了多个重要研究方向的发展,包括LLM4Decompile等专用反编译模型的微调工作,以及D-Helix等基于符号差异的测试框架改进。其评估方法论被后续研究如DeGPT继承发展,形成了结合神经模型与规则系统的混合反编译范式。在更广泛的程序分析领域,其运行时行为验证机制为二进制代码相似性检测等任务提供了新的技术路线。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作