URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 120470
[ Назад ]

Исходное сообщение
"Разработчики V8 представили декомпилятор для  WebAssembly"

Отправлено opennews , 29-Апр-20 11:17 
Разработчики JavaScript-движка V8 представили утилиту wasm-decompile, позволяющую декомпилировать  промежуточное бинарное представление WebAssembly в читаемый псевдоязык, напоминающий JavaScript и Си. Предложенный псевдоязык существенно проще для восприятия и более пригоден для ручного разбора, чем текстовое представление  WebAssembly  в формате ".wat", который ближе к ассемблеру, чем к высокоуровневым языкам. При этом декомпиляция по возможности полностью отражает представление Wasm...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=52833


Содержание

Сообщения в этом обсуждении
"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 11:17 
Этот .wat как Лисп какой-то.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 11:41 
Потому что этот формат называется S-выражения, а Lisp полностью состоит из них

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Crazy Alex , 29-Апр-20 12:07 
Я давно подозревал, что Lisp  надо декомпилировать прежде чем читать ;-)

А если серьёзно - WASM так и разрабатывался, чтобы байткоды были более-менее понятным для человека (в том числе поэтому там AST), и чтобы бинарный и текстовый форматы были полностью эквивалентны. Так что даже странно, что до сих пор подобных инструментов не было.


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 13:47 
На любом языке можно так написать что потом придётся декомпилировать что бы прочитать, есть даже специальные программы приводящие исходный код к нечитаемому виду.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Crazy Alex , 29-Апр-20 15:13 
Конечно. Но на одних языках надо прилагать некие усилия, чтобы вышло что-то читаемое, на других - наоборот. Впрочем, весь мейнстрим, как водится, здесь посередине.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Коровавирус , 29-Апр-20 12:06 
Wat гораздо понятнее, ибо Лисп :)

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 12:32 
offset=4, offset=8 - такой себе лисп :)

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Ordu , 29-Апр-20 14:09 
В лиспе бы порядок аргументов был бы другим (&key аргументы после обязательных), и выглядело бы несколько иначе:

(f32.load (local.get 0) :offset 4)

Но сути это не меняет. Преобразовать из того синтаксиса в lisp'овый можно даже не вдаваясь в заморочные штуки типа reader macro.


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 12:31 
Какой wat. Лучше WWWHAT???? :)

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 13:22 
wat? https://i.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat...

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено pin , 29-Апр-20 13:00 
Ждем, когда все эти кодонедогенераторы начнут генерировать код в метры кубические.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 13:20 
Кодогенераторы кодогенерировали, кодогенерировали, да не выкодогенерировали.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 17:09 
В барели

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено nearestmilkyway , 30-Апр-20 13:37 
...в меры кубитческие

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 13:36 
> представление WebAssembly в формате ".wat"

Странно, что не ".wtf"


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 16:02 
Почему jvm байт-код декомпилируется в абсолютно читаемый и понятный исходный код, а из webassebly получается... ужас какой-то

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 17:08 
Потому что jvm байткод неоптимизирован.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено КО , 30-Апр-20 11:32 
Потому, что он декомпилируется в тот же язык, на котором писали. И потому этот язык понятен.
А тут декомпиляция идет в выдуманные языки с которыми почти никто не работает. Поэтому он и не понятен - ибо НЕХ.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 30-Апр-20 13:15 
Потому что jvm взаимодействует с высокоуровневыми джавовскими объектами, а wasm жонглирует байтиками как CPU — на низком уровне.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 30-Апр-20 15:04 
Если в ProGuard включили нужные настройки, то после декомпиляции получится каша.
Так же и с C# всякими.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Вы забыли заполнить поле Name , 29-Апр-20 19:44 
> чем текстовое представление WebAssembly в формате ".wat", который ближе к ассемблеру, чем к высокоуровневым языкам

Ну такое себе заявление, натянуто. S-выражения понятнее как мне кажется. Достаточно было заменить

(f32.load (local.get 0)) на какой-нибудь (a), т.к. это первый аргумент.


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 20:22 
Псевдоязык похож на typescript с сишными типами.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 21:25 
Это замаскированный паскаль. Современные погромисты уже не в состоянии декомпилировать в си, поэтому выбрали паскаль.

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 29-Апр-20 22:47 
Да где там паскаль-то? Тип после имени переменной в миллионе языков. А управление потоком там вообще ни на что не похоже, по сути, два варианта goto ;)

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Вы забыли заполнить поле Name , 02-Май-20 13:56 
> Это замаскированный паскаль. Современные погромисты уже не в состоянии декомпилировать
> в си, поэтому выбрали паскаль.

Никлаус, залогинтесь.


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 30-Апр-20 14:51 
>Например, скомпилированная в wasm исходная Си-функция
>typedef struct { float x, y, z; } vec3;
>a->y * b->y +

Это примеры из языка Си плюс-плюс, это не чистый Си. Автор новости садись, два!


"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 30-Апр-20 19:32 
Где тут плюс плюс? Автор коммента, у тебя что, переполнение?

"Разработчики V8 представили декомпилятор для  WebAssembly"
Отправлено Аноним , 01-Май-20 21:44 
Вот тут

>Например, скомпилированная в wasm исходная Си-функция