论文

用于可执行二进制恢复的约束引导多代理反编译

Constraint-Guided Multi-Agent Decompilation for Executable Binary Recovery

摘要

反编译——从编译的二进制文件中恢复源代码——对于安全分析、恶意软件逆向工程和遗留软件维护至关重要。然而,现有的反编译器生成的代码通常无法正确编译或执行,从而限制了它们的实际用途。我们提出了一个多代理框架,通过多级约束引导反编译(MCGD)将反编译代码转换为可重新执行的源代码。我们的方法采用具有三个约束级别的分层验证管道:(1) 通过解析实现语法正确性,(2) 通过 GCC 实现编译性,(3) 通过 LLM 生成的测试用例实现行为等效性。当验证失败时,专门的 LLM 代理会使用结构化错误反馈迭代地完善代码。我们通过三个反编译器(RetDec、Ghidra 和 Angr)使用来自 ExeBench 的 1,641 个真实二进制文件来评估我们的框架。我们的框架实现了 84-97% 的可重复执行性,将基线反编译器输出提高了 28-89 个百分点。与使用相同 GPT-4o 主干的最先进的基于 LLM 的反编译方法相比,我们的方法 (84.1%) 优于 LLM4Decompile (80.3%)、SK2Decompile (73.9%) 和 SALT4Decompile (61.8%)。我们的消融研究表明,基于执行的验证至关重要:尽管编译率高达 91-99%,但仅编译方法的行为正确性却为 0%。该系统高效收敛,90% 以上的二进制文件在 2 次迭代内达到正确性,每个二进制文件的平均成本为 0.03-0.05 美元。我们的结果表明,约束引导的代理细化可以弥合原始反编译器输出和实际有用的源代码之间的差距。