Vai al contenuto

Ispettore WebAssembly

WebAssembly Inspector

Elenca importazioni, esportazioni, memoria e dimensioni delle sezioni di un modulo .wasm e ne stampa il formato testuale.

Apre un file `.wasm` e mostra che cosa c’è dentro: le sezioni e le loro dimensioni, ogni import e ogni export, le dichiarazioni di memoria e di tabella, e i nomi delle funzioni dalla sezione dei nomi, se la build li ha conservati. Il modulo viene analizzato, mai istanziato né eseguito.

🔒 Funziona interamente nel tuo browserwasminspectbinary

Trascina qui un modulo .wasm

Analizzato in questa scheda: il modulo viene ispezionato, mai istanziato né eseguito.

Legge la struttura binaria — sezioni, tipi, import, export, memoria, la sezione personalizzata name — e confronta l’intero modulo con il WebAssembly.validate del browser stesso. I corpi delle funzioni vengono misurati, non disassemblati: qui si vede che cosa un modulo dichiara e che cosa tocca, non una conversione completa nel formato testuale.

Come si usa

  1. Trascinare dentro il modulo

    Un file `.wasm` qualunque. Viene letto in questa scheda e controllato anche con il `WebAssembly.validate` del browser stesso, così si ha un secondo parere sul fatto che sia ben formato.

  2. Guardare prima le sezioni

    La tabella delle dimensioni è il modo più rapido di vedere dove sono finiti i byte: una sezione dati grande vuol dire risorse incorporate, una sezione custom grande di solito è fatta di nomi di debug o di DWARF.

  3. Leggere gli import

    Gli import sono tutto il contratto del modulo con l’host: ogni funzione che può chiamare e ogni memoria che condivide. Se si sta verificando un modulo che non si è costruito, è questo l’elenco che conta.

Domande frequenti

Si può vedere il codice vero e proprio?

No. I corpi delle funzioni vengono misurati, non disassemblati: qui si riporta quello che un modulo dichiara e tocca, non lo si converte nel formato testuale. Per un disassemblaggio completo lo strumento è `wasm2wat` del toolkit WABT.

Perché mancano i nomi delle funzioni?

Perché la build ha rimosso la sezione custom dei nomi, che è quello che una build di release fa normalmente. Gli export mantengono comunque i loro nomi — fanno parte dell’interfaccia del modulo — quindi una funzione esportata resta identificabile.

Un modulo con degli import è pericoloso?

Non di per sé: WebAssembly arriva solo a quello che l’host gli passa, e un modulo senza import non può toccare niente del mondo esterno. Quello che gli import nominano è esattamente quello che può fare, ed è per questo che vale la pena leggerli prima di istanziare qualcosa.

La validazione del motore dice non valido, ma l’analisi è riuscita.

Controllano cose diverse. L’analisi legge la struttura; `WebAssembly.validate` verifica anche i tipi di ogni corpo di funzione. Un modulo può avere una disposizione delle sezioni perfettamente leggibile ed essere comunque rifiutato: un file troncato, oppure un passo di post-elaborazione che ha riscritto byte che non doveva.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.