是否可以将Web Assembly(wasm)文件反编译为特定的编程语言?

时间:2019-06-11 10:34:44

标签: webassembly

当前大多数编程语言都可以编译为WebAssembly(正式或通过外部程序包)。

所以我想知道...是否可以反编译Web程序集文件?因此,我们可以用一种语言编写的代码可以编译为.wasm,然后使用另一种语言进行反编译吗?然后,从.java文件中生成.js.py.go.wasm等。有可能吗?

3 个答案:

答案 0 :(得分:1)

目前我还没有发现WebAssembly反汇编程序。一个重要的障碍是在编译过程中会丢弃大量信息。您感兴趣的语言(JavaScript,Java,Python,Go)具有字符串,类,结构等构造,但是在WebAssembly级别上都不存在。此外,在生成的WebAssembly模块中(通常)不存在函数和变量名称。

尽管您可以创建一个将WebAssembly模块“翻译”为Java,Python,Go或JavaScript程序的工具,该工具在执行时表现出正确的行为,但看起来却与编译为WebAssembly的原始程序完全不同。

答案 1 :(得分:1)

有一个从Webassembly二进制文件到C的转换器。

https://github.com/WebAssembly/wabt/tree/master/wasm2c

如在其他答案中所写,它将不会看起来像原始源文件,但是至少它应该能够将逻辑传输到C,然后再将其包装到库中,也可以与其他语言一起使用。

答案 2 :(得分:1)

@KadoBOT,可以使用wasm-decompile.exe反编译wasm文件 https://github.com/WebAssembly/wabt