2025 · 期刊论文

DecLLM:借助大语言模型实现可重新编译的反编译,支持以程序化方式使用反编译代码

DecLLM: LLM-Augmented Recompilable Decompilation for Enabling Programmatic Use of Decompiled Code

DecLLM 将无法重新编译的反编译伪代码修复为可编译、可运行的 C 代码,使 CodeQL 等源码级工具能够用于二进制分析。其迭代流程把编译器错误反馈给现成的大语言模型,并回退非法输出和大段删除;随后利用重建程序与预期不符的测试输出及 AddressSanitizer 报告修复行为,最后对原始与重建的可执行文件进行模糊测试以发现行为差异。作者报告,使用 GPT-3.5 与 GPT-4 时,在 300 个 Code Contest 程序上的成功率分别为 74% 和 78.3%;在 Coreutils 与 CGC 二进制上,61.9%–70.9% 可重新编译,完全功能正常的占 48.1%–59.0%。

研究范围与局限

在 Code Contest 上,成功的含义是修复后的代码能够编译,且重建的可执行文件通过所提供的测试用例,并以 AFL++ 模糊测试作额外检查;Coreutils 与 CGC 的总体比率还计入功能异常或崩溃的重建二进制。这确立的是可编译性和基于测试的一致性,而非语义等价性,作者亦指出后者不可判定。结果依赖 IDA Pro 8.3 的输出(另以 Ghidra 10.4 重复一次实验),以及通过 API 提供、上下文上限为 4,096 个词元的 gpt-3.5-turbo-0613 与 gpt-4-0314 快照,因此所选程序须控制在该上限的一半以内。300 个 Code Contest 程序平均 112.9 行;Coreutils 9.5 与 CGC 二进制编译时未剥离符号,并逐函数修复,这种方式无法推断未定义的全局变量。约 30% 的困难案例仍然失败,主要原因包括反编译器混淆地址与数据、缓冲区大小推断错误、包含 STL 代码的过长输出,以及大语言模型以类型强制转换走捷径;测试未覆盖的行为偏差仍无法发现。对 Juliet 样本进行 CodeQL 分析时需要人工调整查询。

与本合集的关联

补充以可重新编译为目标的反编译输出修复方法,与以可读性为目标的大语言模型改写及神经反编译研究互补。

发表与复核详情

发表载体
Proceedings of the ACM on Software Engineering (ISSTA 2025)
发表状态
期刊论文
出版/提交日期
2025 年 6 月 22 日
日期依据
ACM 文章页面与出版方提交的 Crossref 元数据均将出版日期列为 2025-06-22;本条目不以 ISSTA 报告日期替代该期刊出版日期。
DOI
10.1145/3728958

ACM 页面与 Crossref 的标题、九位作者顺序、DOI、第 2 卷 ISSTA 期、页码 1841–1864 及 2025-06-22 出版日期一致(2025-02-27 收稿,2025-03-31 接收);文章编号 ISSTA081 由 ACM 页面提供,Crossref 未列出。ACM 将文章标为开放获取,采用 CC BY-ND 4.0 许可,本次审阅了其 HTML 全文。未发现 DecLLM 的 arXiv 版本。相关预印本 arXiv:2310.06530《Refining Decompiled C Code with Large Language Models》(DecGPT;v1 为 2023-10-10,v2 为 2023-11-28)与本文共有九位作者中的八位(未列 Daoyuan Wu),研究目标同为可重新编译,但标题、作者列表与报告结果不同,因此不作为本文的 arXiv 标识符记录。数据可用性章节仅指向 Google Sites 产物页面。经审阅,该页面介绍 DecRule 的预处理规则、错误示例、动态修复案例分析及 CWE 列表,未发现源码仓库、提示词包或数据集下载,因此 code_url 保持为空。原型针对商业反编译器 IDA Pro 的输出,所用 OpenAI 模型快照可能已停止提供。本次未运行任何内容。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

一手来源

  1. https://dl.acm.org/doi/10.1145/3728958
  2. https://api.crossref.org/works/10.1145/3728958
  3. https://dl.acm.org/doi/pdf/10.1145/3728958
  4. https://sites.google.com/view/decllm
  5. https://sites.google.com/view/decllm/decrule
  6. https://sites.google.com/view/decllm/decrule-errors
  7. https://sites.google.com/view/decllm/dynamic-repairing
  8. https://sites.google.com/view/decllm/cwe
  9. https://arxiv.org/abs/2310.06530