论文
LLM 作为惯用反编译器:从 Dart 的 x86-64 程序集中恢复高级代码
LLMs as Idiomatic Decompilers: Recovering High-Level Code from x86-64 Assembly for Dart
摘要
将机器代码翻译成人类可读的高级语言是逆向工程中的一个开放研究问题。尽管最近在基于 LLM 的 C 反编译方面取得了进展,但像 Dart 和 Swift 这样的现代语言尚未被开发。在本文中,我们研究了使用小型专用 LLM 作为此类语言的惯用反编译器。此外,我们研究了使用合成同语言示例来增强训练数据,并将其与使用相关语言(Swift -> Dart)添加人类编写的示例进行比较。我们使用 CODEBLEU 来评估反编译代码的可读性,并使用compile@k 来衡量语法正确性。我们的实验结果表明,在 73 个函数的 Dart 测试数据集(代表不同的复杂性级别)上,我们的 4B 专用模型实现了 71.3 CODEBLEU (95% CI 65.5-77.1),大约与 ~480B 代码模型 (73.1; 67.4-78.8) 相当。在 34 个自然 Dart 函数的子集上,它达到了compile@k5 = 79.4% (Wilson 95% CI 63.2-89.7),而基础模型为 64.7% (47.9-78.5); 0.05 的差异具有暗示性,但在统计上并不显着。我们的结果表明,添加 Swift 训练数据对 8B 有帮助,但对 4B 没有帮助,这表明有效跨语言迁移的容量阈值。我们的实验结果表明,小型专用模型可以使用最少的计算生成具有有意义的标识符的可读、惯用的 Dart。