【发布时间】:2019-10-25 18:18:57
【问题描述】:
目前大多数编程语言,都可以编译为 WebAssembly(官方或通过外部包)。
所以我想知道...是否可以反编译 Web 程序集文件?所以我们可以用一种语言编写的代码可以编译成.wasm,然后用另一种语言反编译它?然后,从.wasm 文件中生成.java、.js、.py、.go 等。有可能吗?
【问题讨论】:
标签: webassembly
目前大多数编程语言,都可以编译为 WebAssembly(官方或通过外部包)。
所以我想知道...是否可以反编译 Web 程序集文件?所以我们可以用一种语言编写的代码可以编译成.wasm,然后用另一种语言反编译它?然后,从.wasm 文件中生成.java、.js、.py、.go 等。有可能吗?
【问题讨论】:
标签: webassembly
有一个从 webassembly 二进制文件到 C 的转换器。
https://github.com/WebAssembly/wabt/tree/master/wasm2c
正如在另一个答案中所写的那样,它不会看起来像原始源文件的任何内容,但至少它应该能够将逻辑转移到 C 中,然后通过将其包装到库中也可以与其他语言一起使用。
【讨论】:
目前我知道没有 WebAssembly 反汇编程序。这样做的一个重大障碍是在编译过程中丢弃了大量信息。您感兴趣的语言(JavaScript、Java、Python、Go)具有字符串、类、结构等结构...... WebAssembly 级别不存在这些结构。此外,生成的 WebAssembly 模块中(通常)不存在函数和变量名称。
虽然您可以创建一个工具,将 WebAssembly 模块“翻译”成 Java、Python、Go 或 JavaScript 程序,在执行时它表现出正确的行为,但它看起来与编译为 WebAssembly 的原始程序完全不同。
【讨论】:
@KadoBOT 你可以使用 wasm-decompile.exe 来反编译你的 wasm 文件 https://github.com/WebAssembly/wabt
【讨论】: