Design: Нечитаемая двоичная кодировка wasm имеет преимущества

Созданный на 22 апр. 2017  ·  6Комментарии  ·  Источник: WebAssembly/design

Только что кратко рассмотрел проект сегодня и очень заинтересован в использовании его в общей работе по разработке.

Однако, если конечный результат означает, что конечный пользователь, запускающий wasm в своем клиентском браузере, может получить доступ к удобочитаемому коду, это упущенная возможность.

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

Хотя невозможно удержать детерминированного от декомпиляции/обратной разработки продукта, полезно иметь любой сдерживающий фактор (если вы хотите раздать его, включите источник/ссылку на него). Если усилия/риск кражи перевешивают стоимость легального лицензирования. и т.д. и т.п.

Дополнительный элемент безопасности ip, не обеспечивающий удобочитаемости, вероятно, будет способствовать более широкому/быстрому внедрению (для меня это совершенно не проблема).

С другой стороны, если нет преимущества в плане безопасности... тогда с более быстрыми механизмами hw/js со временем переход обратно на C/C++ и поддержание дальнейшего расширенного набора навыков не выглядит столь привлекательным.

Пожалуйста, рассмотрите возможность НЕ предоставлять механизм, делающий двоичную кодировку wasm читаемой. Кто-то другой все равно сделает это в конце концов - а пока используйте ресурсы в другом месте и дайте нам насладиться короткой эрой непонятного кода на стороне клиента.

Боб.

Самый полезный комментарий

WebAssembly не может запретить использование двоичного кода в какой-либо форме удобочитаемого источника. Любой может реализовать свою собственную вещь, однако красивую/читабельную. Вместо этого группа занимается определением переносимого, эффективного по размеру и времени загрузки формата, подходящего для компиляции в Интернете.

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

Гарантировать какую-либо юридическую защиту от декомпиляции, обратного проектирования или других нетехнических проблем не является целью. Это остается на усмотрение ваших собственных юристов, и я призываю неюристов избегать спекуляций. Мы не хотим заниматься предоставлением юридических консультаций.

Похоже, предварительное обсуждение касается вашего вопроса? Я закрою, не стесняйтесь открыть снова или продолжить обсуждение, если нет.

Все 6 Комментарий

Новейшие версии Chrome уже способны преобразовывать двоичный WASM в текстовый формат.

Вы говорите, что я могу уйти (следующее взято из статьи в Википедии)

20 00
42 00
51
04 7е
42 01
05
20 00
20 00
42 01

10 00

0b

к

интервал факториал (int n) {
если (n == 0)
вернуть 1;
еще
вернуть n * факториал (n-1);
}

или узнаваемый как таковой с использованием хрома в его нынешнем виде?

Нет, он возвращает еще не совсем формально указанный формат "WAST", описанный здесь: http://webassembly.org/docs/text-format/ .

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

Web Assembly оптимизирована для небольшого, простого и быстрого для анализа двоичного формата. Он не сохраняет достаточно информации для полного восстановления исходного синтаксиса. Чем больше и сложнее функция, тем менее узнаваемой будет декомпиляция. Это особенно верно, если вы посмотрите, как обрабатываются структуры, классы, шаблоны и другие функции более высокого уровня.

Отлично (это «промежуточное представление», указанное в статье в Википедии) - я думал, вы предлагаете, чтобы его уже можно было «улучшить» дальше - я бы предпочел, чтобы это не могло быть (из коробки).

И я бы предпочел, чтобы все было сделано/не сделано и задумано, чтобы так и оставалось.

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

WebAssembly не может запретить использование двоичного кода в какой-либо форме удобочитаемого источника. Любой может реализовать свою собственную вещь, однако красивую/читабельную. Вместо этого группа занимается определением переносимого, эффективного по размеру и времени загрузки формата, подходящего для компиляции в Интернете.

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

Гарантировать какую-либо юридическую защиту от декомпиляции, обратного проектирования или других нетехнических проблем не является целью. Это остается на усмотрение ваших собственных юристов, и я призываю неюристов избегать спекуляций. Мы не хотим заниматься предоставлением юридических консультаций.

Похоже, предварительное обсуждение касается вашего вопроса? Я закрою, не стесняйтесь открыть снова или продолжить обсуждение, если нет.

chintailease.wast.zip

Любая идея о том, как разобрать этот файл .wast на исходный код?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

dpw picture dpw  ·  3Комментарии

chicoxyzzy picture chicoxyzzy  ·  5Комментарии

jfbastien picture jfbastien  ·  6Комментарии

cretz picture cretz  ·  5Комментарии

konsoletyper picture konsoletyper  ·  6Комментарии