The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Разработчики V8 представили декомпилятор для  WebA..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 29-Апр-20, 11:17   +1 +/
Этот .wat как Лисп какой-то.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2

2. Сообщение от Аноним (2), 29-Апр-20, 11:41   +6 +/
Потому что этот формат называется S-выражения, а Lisp полностью состоит из них
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #4

3. Сообщение от Коровавирус (?), 29-Апр-20, 12:06   –2 +/
Wat гораздо понятнее, ибо Лисп :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

4. Сообщение от Crazy Alex (ok), 29-Апр-20, 12:07   +21 +/
Я давно подозревал, что Lisp  надо декомпилировать прежде чем читать ;-)

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #11

5. Сообщение от Аноним (5), 29-Апр-20, 12:31   +2 +/
Какой wat. Лучше WWWHAT???? :)
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

6. Сообщение от Аноним (6), 29-Апр-20, 12:32   +1 +/
offset=4, offset=8 - такой себе лисп :)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #12

7. Сообщение от pin (??), 29-Апр-20, 13:00   +2 +/
Ждем, когда все эти кодонедогенераторы начнут генерировать код в метры кубические.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #8, #17, #24

8. Сообщение от Аноним (9), 29-Апр-20, 13:20   +5 +/
Кодогенераторы кодогенерировали, кодогенерировали, да не выкодогенерировали.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

9. Сообщение от Аноним (9), 29-Апр-20, 13:22   +2 +/
wat? https://i.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

10. Сообщение от Аноним (10), 29-Апр-20, 13:36   +5 +/
> представление WebAssembly в формате ".wat"

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

Ответить | Правка | Наверх | Cообщить модератору

11. Сообщение от Аноним (11), 29-Апр-20, 13:47   +/
На любом языке можно так написать что потом придётся декомпилировать что бы прочитать, есть даже специальные программы приводящие исходный код к нечитаемому виду.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #14

12. Сообщение от Orduemail (ok), 29-Апр-20, 14:09   +2 +/
В лиспе бы порядок аргументов был бы другим (&key аргументы после обязательных), и выглядело бы несколько иначе:

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

14. Сообщение от Crazy Alex (ok), 29-Апр-20, 15:13   +2 +/
Конечно. Но на одних языках надо прилагать некие усилия, чтобы вышло что-то читаемое, на других - наоборот. Впрочем, весь мейнстрим, как водится, здесь посередине.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

15. Сообщение от Аноним (15), 29-Апр-20, 16:02   –1 +/
Почему jvm байт-код декомпилируется в абсолютно читаемый и понятный исходный код, а из webassebly получается... ужас какой-то
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16, #22, #23, #26

16. Сообщение от Аноним (16), 29-Апр-20, 17:08   +/
Потому что jvm байткод неоптимизирован.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

17. Сообщение от Аноним (1), 29-Апр-20, 17:09   +/
В барели
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

18. Сообщение от Вы забыли заполнить поле Name (?), 29-Апр-20, 19:44   +/
> чем текстовое представление WebAssembly в формате ".wat", который ближе к ассемблеру, чем к высокоуровневым языкам

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

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

Ответить | Правка | Наверх | Cообщить модератору

19. Сообщение от Аноним (19), 29-Апр-20, 20:22   –1 +/
Псевдоязык похож на typescript с сишными типами.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20

20. Сообщение от Аноним (10), 29-Апр-20, 21:25   +2 +/
Это замаскированный паскаль. Современные погромисты уже не в состоянии декомпилировать в си, поэтому выбрали паскаль.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #21, #29

21. Сообщение от Аноним (19), 29-Апр-20, 22:47   +/
Да где там паскаль-то? Тип после имени переменной в миллионе языков. А управление потоком там вообще ни на что не похоже, по сути, два варианта goto ;)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

22. Сообщение от КО (?), 30-Апр-20, 11:32   –1 +/
Потому, что он декомпилируется в тот же язык, на котором писали. И потому этот язык понятен.
А тут декомпиляция идет в выдуманные языки с которыми почти никто не работает. Поэтому он и не понятен - ибо НЕХ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

23. Сообщение от Аноним (23), 30-Апр-20, 13:15   +/
Потому что jvm взаимодействует с высокоуровневыми джавовскими объектами, а wasm жонглирует байтиками как CPU — на низком уровне.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

24. Сообщение от nearestmilkyway (?), 30-Апр-20, 13:37   +/
...в меры кубитческие
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

25. Сообщение от Аноним (-), 30-Апр-20, 14:51   –1 +/
>Например, скомпилированная в wasm исходная Си-функция
>typedef struct { float x, y, z; } vec3;
>a->y * b->y +

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #27

26. Сообщение от Аноним (26), 30-Апр-20, 15:04   +/
Если в ProGuard включили нужные настройки, то после декомпиляции получится каша.
Так же и с C# всякими.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

27. Сообщение от Аноним (27), 30-Апр-20, 19:32   +/
Где тут плюс плюс? Автор коммента, у тебя что, переполнение?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #28

28. Сообщение от Аноним (-), 01-Май-20, 21:44   +/
Вот тут

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

29. Сообщение от Вы забыли заполнить поле Name (?), 02-Май-20, 13:56   +/
> Это замаскированный паскаль. Современные погромисты уже не в состоянии декомпилировать
> в си, поэтому выбрали паскаль.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру