作者提出了一种通过结合逆向工程、基于锚点的检索和大语言模型推理,从剥离(stripped)二进制函数中恢复源代码的管道。

  • 该方法从数据库中识别源函数,而不是生成反编译的伪代码。
  • 使用 Ghidra 提取字符串、常量、外部调用和函数名称等锚点。
  • 候选项通过倒排索引搜索检索,并根据反汇编和元数据由 LLM 重新排序。
  • 在具有高保真数据库的剥离 tcpdump 二进制文件上,该方法实现了 95.2% 的汇编指令覆盖率。
  • 在基于 GitHub 的数据库上的实验显示,由于检索遗漏,平均指令覆盖率较低,为 35.5%。

结果表明,当有高质量数据库支持时,源代码级别的二进制恢复是有效的。