Design: Nicht lesbare wasm-Binärcodierung hat Vorteile

Erstellt am 22. Apr. 2017  ·  6Kommentare  ·  Quelle: WebAssembly/design

Habe mir das Projekt heute nur kurz angesehen und bin sehr daran interessiert, es in der allgemeinen Entwicklungsarbeit einzusetzen.

Wenn das Endergebnis jedoch bedeutet, dass ein Endbenutzer, der wasm in seinem Client-Browser ausführt, auf menschenlesbaren Code zugreifen kann, ist dies eine verpasste Gelegenheit.

Es gibt keinen Grund, dem Endbenutzer diese Einrichtung bereitzustellen – ein Entwickler kann über Zuordnungsdateien oder einen ähnlichen Mechanismus darauf zugreifen, der die Originalquelle erfordert.

Während es unmöglich ist, den Entschlossenen davon abzuhalten, ein Produkt zu dekompilieren/zurückzuentwickeln, ist jede Abschreckung nützlich (wenn Sie es weitergeben möchten, geben Sie die Quelle / einen Link dazu an). Wenn der Aufwand/das Risiko beim Stehlen die Kosten einer legalen Lizenzierung überwiegt. usw usw usw

Das zusätzliche Element der IP-Sicherheit, das keine Lesbarkeit bietet, würde wahrscheinlich eine breitere/schnellere Akzeptanz fördern (für mich ist das ein Kinderspiel).

Auf der anderen Seite, wenn es keinen Sicherheitsvorteil gibt .... dann sieht es mit. schnelleren hw/js-Engines im Laufe der Zeit nicht so attraktiv aus, zurück zu C/C++ zu wechseln und ein weiter ausgebautes Skill-Set beizubehalten.

Bitte denken Sie daran, KEINEN Mechanismus bereitzustellen, um die Wasm-Binärcodierung lesbar zu machen. Irgendwann wird es sowieso jemand anderes tun - in der Zwischenzeit nutzen Sie die Ressourcen woanders und lassen Sie uns eine kurze Ära von unverständlichem clientseitigem Code genießen.

Bob.

Hilfreichster Kommentar

Das Verbieten von Binärdateien für irgendeine Form von menschenlesbarer Quelle kann WebAssembly nicht verbieten. Jeder kann sein eigenes Ding umsetzen, aber hübsch/lesbar. Die Gruppe beschäftigt sich stattdessen damit, ein portables, größen- und ladezeiteffizientes Format zu spezifizieren, das für die Kompilierung im Web geeignet ist.

Uns geht es auch darum, etwas brauchbar zu machen, weshalb wir ein Low-Level-Textformat spezifizieren und wahrscheinlich an Debugging-Fähigkeiten arbeiten werden.

Es ist kein Ziel, einen rechtlichen Schutz für oder gegen Dekompilierung, Reverse Engineering oder andere nichttechnische Belange zu gewährleisten. Dies bleibt Ihren eigenen Anwälten überlassen, und ich fordere Nichtanwälte auf, Spekulationen zu vermeiden. Wir wollen keine Rechtsberatung betreiben.

Es sieht so aus, als würde eine vorherige Diskussion Ihre Frage beantworten? Ich werde schließen, Sie können gerne wieder öffnen oder weiter diskutieren, wenn nicht.

Alle 6 Kommentare

Die neuesten Versionen von Chrome sind bereits in der Lage, binäres WASM in ein Textformat umzuwandeln.

Wollen Sie sagen, ich kann gehen von (nach dem Wikipedia-Eintrag)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7d
10 00
7e
0b

zu

int Fakultät(int n) {
wenn (n == 0)
Rückgabe 1;
anders
Rückgabe n * Fakultät (n-1);
}

oder mit Chrom als solches erkennbar?

Nein, es gibt das noch nicht ganz formal festgelegte „WAST“-Format zurück, das hier beschrieben wird: 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 ist für ein kleines, einfach und schnell zu analysierendes Binärformat optimiert. Es speichert nicht genügend Informationen, um die ursprüngliche Syntax vollständig wiederherzustellen. Je größer und komplexer die Funktion, desto weniger erkennbar ist die Dekompilierung. Dies gilt insbesondere, wenn Sie sich ansehen, wie Strukturen, Klassen, Vorlagen und andere Funktionen auf höherer Ebene behandelt werden.

Ausgezeichnet (Das ist die im Wikipedia-Artikel aufgeführte "Zwischendarstellung") - Ich dachte, Sie schlugen vor, dass sie bereits weiter "verschönert" werden könnte - ich würde es vorziehen, wenn dies nicht möglich wäre (out-of-the-box).

Und es wäre mir lieber, wenn alles getan / nicht getan und so gestaltet würde, dass es so bleibt.

(Ich hatte den Eindruck, dass es einen Plan gab, es letztendlich im Browser in vernünftigen Pseudocode zurückübersetzen zu können, wenn auch ohne aussagekräftige Identifikatoren.)

Das Verbieten von Binärdateien für irgendeine Form von menschenlesbarer Quelle kann WebAssembly nicht verbieten. Jeder kann sein eigenes Ding umsetzen, aber hübsch/lesbar. Die Gruppe beschäftigt sich stattdessen damit, ein portables, größen- und ladezeiteffizientes Format zu spezifizieren, das für die Kompilierung im Web geeignet ist.

Uns geht es auch darum, etwas brauchbar zu machen, weshalb wir ein Low-Level-Textformat spezifizieren und wahrscheinlich an Debugging-Fähigkeiten arbeiten werden.

Es ist kein Ziel, einen rechtlichen Schutz für oder gegen Dekompilierung, Reverse Engineering oder andere nichttechnische Belange zu gewährleisten. Dies bleibt Ihren eigenen Anwälten überlassen, und ich fordere Nichtanwälte auf, Spekulationen zu vermeiden. Wir wollen keine Rechtsberatung betreiben.

Es sieht so aus, als würde eine vorherige Diskussion Ihre Frage beantworten? Ich werde schließen, Sie können gerne wieder öffnen oder weiter diskutieren, wenn nicht.

chintailease.wast.zip

Irgendeine Idee, wie man diese .wast-Datei in den ursprünglichen Quellcode zerlegt?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

nikhedonia picture nikhedonia  ·  7Kommentare

konsoletyper picture konsoletyper  ·  6Kommentare

badumt55 picture badumt55  ·  8Kommentare

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Kommentare

void4 picture void4  ·  5Kommentare