- 简介WebAssembly(简称Wasm)已成为Web开发的基石,提供了一种紧凑的二进制格式,使高性能应用程序可以在Web浏览器中以接近本机速度运行。尽管具有这些优点,但Wasm的二进制性质对于开发人员和研究人员来说仍然存在重大挑战,特别是在调试或分析Web应用程序时的可读性方面。因此,有效的反编译变得至关重要。不幸的是,传统的反编译器在生成可读输出方面常常遇到困难。虽然一些基于大型语言模型(LLM)的反编译器已经展现出了与一般二进制文件的良好兼容性,但它们在处理Wasm时仍然面临着特定的挑战。 在本文中,我们介绍了一种新颖的方法WaDec,它是第一次使用经过精心调整的LLM来解释和反编译Wasm二进制代码为更高级别、更易于理解的源代码表示。LLM是使用专门的wat-c代码片段数据集进行精细调整的,采用自监督学习技术。这使得WaDec不仅可以有效地反编译完整的wat函数,还可以反编译更细粒度的wat代码片段。我们的实验表明,WaDec明显优于当前最先进的工具,在多个指标上实现了实质性的改进。它实现了仅3.34%的代码膨胀率,与最先进的工具相比,削减了97%的膨胀率116.94%。与基线输出不同,WaDec的重新编译率为52.11%,重新执行率为43.55%,输出一致性为27.15%。此外,它在AST编辑距离、圆形复杂度和余弦相似度方面显著超过最先进的性能,平均代码相似度超过50%。
- 图表
- 解决问题解决WebAssembly(Wasm)二进制代码难以读取的问题,提供一种有效的反汇编方法。
- 关键思路使用经过专门训练的大型语言模型(LLM)对Wasm进行解释和反汇编,生成更高级别、更易读的源代码表示。
- 其它亮点WaDec在多个指标上显著优于当前最先进的工具,包括代码膨胀率、代码重构率、代码相似度等。它使用了自监督学习技术,使用专门的wat-c代码片段数据集进行精细调整,并能有效地反汇编wat函数和代码片段。
- 该领域的其他相关研究包括使用LLM进行二进制代码反汇编的工作,以及使用机器学习技术进行代码推断的工作。其中一些论文包括:Learning to Represent Programs with Graphs, Neural Machine Translation of Assembly Code, Learning to Decode Programs and Learning Program Embeddings to Propagate Feedback on Student Code。


提问交流