2022 · 会议论文
ExeBench:机器学习规模的可执行 C 函数数据集
ExeBench: an ML-scale dataset of executable C functions
ExeBench 是数据集,而非反编译器。它从 GitHub 与 AnghaBench 中提取 C 函数,通过查找真实的头文件与定义或注入合成定义使其可编译,再依据函数签名生成输入/输出样例,并以 C++ 包装器运行每个函数。精确去重后,作者报告共有 4,485,817 个可编译函数和 687,843 个可执行函数,其中 124,612 个带有常量或恒等实现无法通过的丰富 IO;论文还说明每行数据附有 O0、Os 与 Ofast 下的 x86 和 ARM 汇编。SLaDe、LLM4Decompile 等反编译研究随后用它检验反编译函数能否正确重新执行。
研究范围与局限
IO 依据函数签名生成,不考虑程序上下文:每个函数 10 对(合成定义使用三个随机种子,共 30 对),数组默认长度为 32;含指针与整数互转的函数生成成功率低于 5%,含 goto、标签及复杂控制流的函数成功率也较低,因此可执行函数整体比可编译函数更简单。合成 IO 基于注入的替代定义,而非函数的真实依赖生成;带有真实定义且具备丰富 IO 的函数仅有 4,464 个。有限的 IO 对只检验采样输入上的行为,并不证明语义等价;去重也只删除分词后完全相同的函数。运行带真实依赖的函数意味着执行不受信任的代码,作者使用了权限受限的容器。论文所用的 v1.00 原始数据仅可申请获取,公开的 v1.01 版本调整了数据划分(例如真实测试函数为 2,134 个,而非 2,232 个)。每个函数保留其来源仓库的许可证,ExeBench 新增内容采用 MIT 许可。
与本合集的关联
补充本节多篇反编译论文所依赖的可执行 C 函数基准,便于读者直接核查其构建方式、IO 局限与版本差异。
发表与复核详情
- 发表载体
- ACM SIGPLAN MAPS 2022
- 发表状态
- 会议论文
- 出版/提交日期
- 2022 年 6 月 13 日
- 日期依据
- ACM 文章页面与 ACM 提交的 Crossref 元数据均将出版日期列为 2022-06-13,这一天也是 MAPS ’22 研讨会的举办日。本条目采用出版方标明的出版日期,而非依据会议日程推定。
- DOI
- 10.1145/3520312.3534867
Crossref 与文章页面中的 ACM 元数据给出句首大写形式的标题,以及 Proceedings of the 6th ACM SIGPLAN International Symposium on Machine Programming 第 50–59 页;10 页的 PDF 将标题写作“ExeBench: An ML-Scale Dataset of Executable C Functions”。未找到 arXiv 版本。ACM 实时页面对普通 HTTP 客户端显示浏览器验证,本次通过浏览器会话阅读;文章页面将全文标记为公开可读,但 PDF 中的 2022 年声明将出版权授予 ACM,因此本条不认定论文采用开放内容许可。所审阅的 2022-09-15 仓库提交没有 LICENSE 文件;其 README 说明每个 C 函数沿用来源仓库的许可证,IO 样例与包装器以 MIT 发布。仓库辅助代码使用 g++ -O0 将函数汇编与 C++ 包装器一同编译,并作为宿主机子进程直接运行,本身不提供沙箱。Hugging Face 修订版 093085f(2023-03-09)以 zstandard 压缩的 JSON Lines TAR 包托管 v1.01,数据卡元数据中没有许可证标签;v1.00 数据集 jordiae/exebench_legacy 需联系作者获取。本次未下载数据,也未运行代码。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/3520312.3534867
- https://dl.acm.org/doi/pdf/10.1145/3520312.3534867
- https://api.crossref.org/works/10.1145/3520312.3534867
- README.md GitHub · jordiae/exebench · 修订 8b47d48
- exebench/__init__.py GitHub · jordiae/exebench · 修订 8b47d48
- examples/basic.py GitHub · jordiae/exebench · 修订 8b47d48
- https://huggingface.co/datasets/jordiae/exebench
- https://huggingface.co/datasets/jordiae/exebench/blob/093085f8558cfd53de8e2c8f4ccc7b9e73dc22ae/README.md