Zum Inhalt springen

WebAssembly-Inspektor

WebAssembly Inspector

Listet Imports, Exports, Speicher und Sektionsgrößen eines .wasm-Moduls auf und gibt sein Textformat aus.

Öffnet eine `.wasm`-Datei und zeigt, was in ihr steckt: die Sektionen und ihre Größen, jeden Import und Export, die Speicher- und Tabellendeklarationen und die Funktionsnamen aus der Name-Sektion, falls der Build sie behalten hat. Das Modul wird geparst, nie instanziiert oder ausgeführt.

🔒 Läuft vollständig in Ihrem Browserwasminspectbinary

Ein .wasm-Modul ablegen

Wird in diesem Tab geparst: Das Modul wird untersucht, nie instanziiert und nie ausgeführt.

Liest die Binärstruktur — Abschnitte, Typen, Importe, Exporte, Speicher, den benutzerdefinierten name-Abschnitt — und gleicht das ganze Modul mit dem browsereigenen WebAssembly.validate ab. Funktionsrümpfe werden vermessen, nicht disassembliert: hier steht, was ein Modul deklariert und woran es rührt, keine vollständige Umwandlung ins Textformat.

So funktioniert es

  1. Legen Sie das Modul ab

    Jede `.wasm`-Datei. Sie wird in diesem Tab gelesen und gegen das browsereigene `WebAssembly.validate` gegengeprüft, sodass Sie eine zweite Meinung dazu bekommen, ob sie wohlgeformt ist.

  2. Schauen Sie zuerst auf die Sektionen

    Die Größentabelle ist der schnellste Weg zu sehen, wohin die Bytes gegangen sind – eine große Data-Sektion bedeutet eingebettete Assets, eine große Custom-Sektion ist meist Debug-Namen oder DWARF.

  3. Lesen Sie die Imports

    Imports sind der gesamte Vertrag des Moduls mit dem Host – jede Funktion, die es aufrufen kann, und jeder Speicher, den es teilt. Wenn Sie ein Modul prüfen, das Sie nicht gebaut haben, ist das die Liste, die zählt.

Häufige Fragen

Kann ich den eigentlichen Code sehen?

Nein. Funktionskörper werden gemessen, nicht disassembliert – hier wird berichtet, was ein Modul deklariert und anfasst, statt es ins Textformat zu wandeln. `wasm2wat` aus dem WABT-Toolkit ist das Werkzeug für eine vollständige Disassemblierung.

Warum fehlen die Funktionsnamen?

Weil der Build die Name-Custom-Sektion entfernt hat, was ein Release-Build normalerweise tut. Exporte behalten ihre Namen in jedem Fall – sie sind Teil der Schnittstelle des Moduls –, sodass eine exportierte Funktion weiterhin identifizierbar ist.

Ist ein Modul mit Imports gefährlich?

Nicht an sich – WebAssembly erreicht nur, was der Host ihm reicht, und ein Modul ohne Imports kann die Außenwelt überhaupt nicht berühren. Was die Imports benennen, ist genau das, was es tun kann, weshalb sie es wert sind, gelesen zu werden, bevor Sie etwas instanziieren.

Die Engine-Validierung sagt ungültig, aber es wurde geparst.

Die prüfen verschiedene Dinge. Der Parse liest die Struktur; `WebAssembly.validate` typprüft zusätzlich jeden Funktionskörper. Ein Modul kann ein völlig lesbares Sektionslayout haben und trotzdem abgelehnt werden – eine abgeschnittene Datei oder ein Nachbearbeitungsschritt, der Bytes umgeschrieben hat, die er nicht hätte anrühren dürfen.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.