WaDec: Decompile WebAssembly Using Large Language Model

2024年06月17日
  • 简介
    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。
许愿开讲
PDF
原文
点赞 收藏
向作者提问
NEW
分享到Link

提问交流

提交问题,平台邀请作者,轻松获得权威解答~

向作者提问