Можно ли декомпилировать файлы Web Assembly (wasm) на определенный язык программирования? - PullRequest
0 голосов
/ 11 июня 2019

В настоящее время большинство языков программирования могут компилироваться в WebAssembly (официально или через внешний пакет).

Так что мне интересно ... можно ли декомпилировать файл веб-сборки? Таким образом, мы можем иметь код, написанный на одном языке, который можно скомпилировать в .wasm и декомпилировать его, используя другой язык? А затем сгенерируйте .java, .js, .py, .go и т. Д. Из файла .wasm. Возможно ли это?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Существует конвертер из двоичных файлов веб-сборки в C.

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

Как написано в другом ответе, он не будет выглядеть ничего из исходного исходного файла, но, по крайней мере, долженбыть в состоянии перенести логику в C, которая затем также может использоваться с другими языками, обернув ее в библиотеку.

1 голос
/ 11 июня 2019

На данный момент нет известных мне дизассемблеров WebAssembly. Одним существенным препятствием для этого является то, что в процессе компиляции отбрасывается большое количество информации. Языки, которые вас интересуют (JavaScript, Java, Python, Go), имеют такие конструкции, как строки, классы, структуры и т. Д., Ни один из которых не существует на уровне WebAssembly. Кроме того, имена функций и переменных (как правило) отсутствуют в получающемся модуле WebAssembly.

Хотя вы могли бы создать инструмент, который бы «переводил» модуль WebAssembly в программу на Java, Python, Go или JavaScript, которая при запуске демонстрировала правильное поведение, она не выглядела бы как оригинальная программа, скомпилированная в WebAssembly.

...