论文

使用基于锚的检索和 LLM 推理从二进制函数恢复实用源代码

Practical Source Code Recovery from Binary Functions Using Anchor-Based Retrieval and LLM Reasoning

摘要

我们提出了一种实用的管道,通过结合逆向工程、基于锚的源代码检索和 大语言模型 推理,从剥离的二进制函数中恢复源代码。我们的二进制到源代码检索方法尝试从源代码数据库中识别源函数,而不是生成近似的反编译伪代码。它使用 Ghidra 提取字符串、常量、外部调用和可用函数名称等锚点,通过倒排索引搜索数据库检索候选文件,将候选范围缩小到可能的函数片段,并根据反汇编、反编译代码和源元数据使用 大语言模型 (LLM) 对它们重新排名。自信的匹配也可以作为后续传递的锚点。在我们的高保真源代码数据库支持的对剥离、优化的 tcpdump 二进制文件的评估中,我们提出的二进制到源匹配方法实现了 95.2% 的汇编指令覆盖率。基于 GitHub 的检索数据库的实验显示性能较低,平均指令覆盖率为 35.5%,这主要是由于检索未命中。这些结果表明,源级二进制恢复在高质量数据库方面表现出色,并且在嘈杂的环境中仍然是一个有用的工具。