是否可以将 Web Assembly (wasm) 文件反编译为特定的编程语言?
Is it possible to decompile Web Assembly (wasm) files to a specific programming language?
目前大多数编程语言,都可以编译成WebAssembly(官方或通过外部包)。
所以我想知道...是否可以反编译网络程序集文件?那么我们可以用一种语言编写的代码可以编译为 .wasm
,然后使用另一种语言反编译它吗?然后,从 .wasm
文件生成 .java
、.js
、.py
、.go
等。可能吗?
目前我还没有发现任何 WebAssembly 反汇编程序。一个重要的障碍是在编译过程中丢弃了大量信息。您感兴趣的语言(JavaScript、Java、Python、Go)具有字符串、类、结构等结构... none其中存在于 WebAssembly 级别。此外,函数和变量名称(通常)不会出现在生成的 WebAssembly 模块中。
虽然您可以创建一个工具,将 'translate' WebAssembly 模块转换为 Java、Python、Go 或 JavaScript 程序,但在执行时会显示正确的行为,它看起来与编译为 WebAssembly 的原始程序完全不同。
有一个从 webassembly 二进制文件到 C 的转换器。
https://github.com/WebAssembly/wabt/tree/master/wasm2c
正如另一个答案中所写,它看起来与原始源文件没有任何关系,但至少它应该能够将逻辑传输到 C,然后通过将其包装成一个图书馆。
@KadoBOT 你可以使用 wasm-decompile.exe 来反编译你的 wasm 文件
https://github.com/WebAssembly/wabt
目前大多数编程语言,都可以编译成WebAssembly(官方或通过外部包)。
所以我想知道...是否可以反编译网络程序集文件?那么我们可以用一种语言编写的代码可以编译为 .wasm
,然后使用另一种语言反编译它吗?然后,从 .wasm
文件生成 .java
、.js
、.py
、.go
等。可能吗?
目前我还没有发现任何 WebAssembly 反汇编程序。一个重要的障碍是在编译过程中丢弃了大量信息。您感兴趣的语言(JavaScript、Java、Python、Go)具有字符串、类、结构等结构... none其中存在于 WebAssembly 级别。此外,函数和变量名称(通常)不会出现在生成的 WebAssembly 模块中。
虽然您可以创建一个工具,将 'translate' WebAssembly 模块转换为 Java、Python、Go 或 JavaScript 程序,但在执行时会显示正确的行为,它看起来与编译为 WebAssembly 的原始程序完全不同。
有一个从 webassembly 二进制文件到 C 的转换器。
https://github.com/WebAssembly/wabt/tree/master/wasm2c
正如另一个答案中所写,它看起来与原始源文件没有任何关系,但至少它应该能够将逻辑传输到 C,然后通过将其包装成一个图书馆。
@KadoBOT 你可以使用 wasm-decompile.exe 来反编译你的 wasm 文件 https://github.com/WebAssembly/wabt