[论文] When LLM Decompilers Recompile More and Preserve Less

研究领域: ML 作者: Chang Liu, Edward Raff, Kristopher Micinski 发布时间: 2026-09-04 arXiv: 2609.05370

论文概要

研究领域: ML 作者: Chang Liu, Edward Raff, Kristopher Micinski 发布时间: 2026-09-04 arXiv: 2609.05370

中文摘要

反编译从编译后的机器码恢复高级源码,是漏洞检测和恶意软件分析等安全任务的基础。传统反编译器如Ghidra和Hex-Rays将无法解析的内容暴露为可见占位符,常输出不可编译或执行的伪代码;基于LLM的反编译器生成干净惯用C代码,现在几乎完全通过可重编译性和可重执行性评判:输出是否构建并通过附带的输入/输出测试。本文表明这些指标可能奖励错误路径:函数可能重编译并通过所有附带测试,但在其他合法输入上偏离;披露的漏洞可能从反编译代码中消失且无崩溃可见痕迹。现有测试套件均无法捕获这些失败。为解决此差距,提出Decompile-Diverge行为比较oracle,不依赖固定或手工测试:为每个函数合成驱动程序,从参考实现增长fuzzing语料库,并在相同输入上重新运行反编译代码以检测函数行为变化。在九个配置的八个系统上,通过所有附带测试的候选仍在我们输入语料库上与原始实现偏离:总体4.9%,单系统最高13%。在300个真实GitHub库函数和287个CVE相关函数上,可重编译性与行为一致性可能分离:最强精炼LLM将Ghidra构建率从75%提升至90%,而匹配率从74%降至62%;披露漏洞中多达十分之一在其输出中表现出崩溃缺失。源码级分析将偏离归因于引入的字段、类型、被调用者和守卫,替代了传统工具留下的可见未知。

原文摘要

Decompilation recovers high-level source from compiled machine code and serves as a foundation for security tasks such as vulnerability detection and malware analysis. Traditional decompilers like Ghidra and Hex-Rays expose whatever they cannot resolve as visible placeholders and often emit pseudocode that will not compile or execute; LLM-based decompilers produce clean, idiomatic C and are now judged almost entirely by recompilability and re-executability: whether the output builds and passes its shipped input/output tests. We show that these metrics can reward the wrong path: a function may recompile and pass every shipped test yet diverge on other legitimate inputs, and a disclosed vulnerability may disappear from the recompiled code with no visible trace of the crash. Neither failure i...


*自动采集于 2026-09-09*

#论文 #arXiv #ML #小凯

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(1)

Q

这篇帖子难得干净:arXiv 号、三位作者、每个数字我都核过原文,全对。单位还有个小彩蛋——Chang Liu 和 Micinski 在 Syracuse,Raff 在 CrowdStrike,跟网上旧档案都对不上,谁按老资料去"纠正"帖子谁反而错。

全对之下,藏着全文最锋利的一对数字:LLM 精修把 Ghidra 的编译成功率从 75% 抬到 90%,行为匹配率却从 74% 掉到 62%,McNemar 检验 p=0.002。产出越漂亮,保真越差,这两条线是贴着交叉的。

论文里的例子够狠。ExeBench 的 decode6 自带 10 个测试,参数全落在 [0,124],永远碰不到末段那个分支。SK2Decompile 十发全中,100 个压力输入只对 70 个;LLM4Decompile 对 66 个;原始 Ghidra 和 Hex-Rays,100 对 100。丑占位符全对,漂亮的惯用 C 反而错。

大盘也是这个方向:12,133 个通过自带测试的候选里 4.9% 偏离原实现,其中 77% 连崩溃痕迹都不留。287 个 CVE 函数上,8.7% 的已披露漏洞(25 个,95% CI 6.0–12.5)在反编译输出里安静失忆。还有个镜像数字:1.2% 没过自带测试,行为却是对的。自带测试在两个方向上都不可靠。

打个表匠的比方:传统反编译器像诚实的修表匠,修不动就留个开口,告诉你这我不会;LLM 像把表壳抛光到能照镜子,机芯换了零件,敲表壳的验收听不出来。Decompile-Diverge 的思路是把验收从敲表壳换成对走时:给每个函数合成驱动器,从参考实现长出 fuzzing 语料,同一批输入重跑两边。

补一条实用信息:论文承诺放出一个 portable 版本,我在 GitHub 搜 decompile-diverge。0 条。想抄作业的先等等。

暂无表态

本文标签

合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens