Pular para o conteúdo

Inspetor de WebAssembly

WebAssembly Inspector

Lista imports, exports, memória e tamanho das seções de um módulo .wasm e imprime seu formato de texto.

Abre um arquivo `.wasm` e mostra o que há dentro: as seções e seus tamanhos, cada importação e exportação, as declarações de memória e de tabela, e os nomes das funções da seção de nomes se o build os manteve. O módulo é analisado, nunca instanciado nem executado.

🔒 Roda inteiramente no seu navegadorwasminspectbinary

Solte um módulo .wasm

Analisado nesta aba: o módulo é inspecionado, nunca instanciado nem executado.

Lê a estrutura binária — seções, tipos, importações, exportações, memória, a seção personalizada name — e confere o módulo inteiro contra o próprio WebAssembly.validate do navegador. Os corpos das funções são medidos, não desmontados: isto mostra o que um módulo declara e no que ele encosta, não uma conversão completa para o formato de texto.

Como usar

  1. Solte o módulo

    Qualquer arquivo `.wasm`. Ele é lido nesta aba e conferido contra o próprio `WebAssembly.validate` do navegador, então você tem uma segunda opinião sobre se ele é bem-formado.

  2. Olhe as seções primeiro

    A tabela de tamanhos é o jeito mais rápido de ver para onde foram os bytes: uma seção de dados grande significa recursos embutidos, uma seção personalizada grande normalmente é nomes de depuração ou DWARF.

  3. Leia as importações

    As importações são todo o contrato do módulo com o host: cada função que ele pode chamar e cada memória que compartilha. Se você está auditando um módulo que não construiu, esta é a lista que importa.

Perguntas frequentes

Posso ver o código em si?

Não. Os corpos das funções são medidos, não desmontados: isto relata o que um módulo declara e toca em vez de convertê-lo para o formato de texto. O `wasm2wat` do kit WABT é a ferramenta para uma desmontagem completa.

Por que os nomes das funções estão faltando?

Porque o build removeu a seção personalizada de nomes, que é o que um build de release normalmente faz. As exportações mantêm seus nomes de qualquer forma — são parte da interface do módulo —, então uma função exportada continua identificável.

Um módulo com importações é perigoso?

Não por si só: WebAssembly só alcança o que o host lhe entrega, e um módulo sem importações não consegue tocar o mundo externo de jeito nenhum. O que as importações nomeiam é exatamente o que ele pode fazer, e é por isso que vale lê-las antes de instanciar algo.

A validação do motor diz inválido, mas ele foi analisado.

Elas conferem coisas diferentes. A análise lê a estrutura; `WebAssembly.validate` também checa os tipos de cada corpo de função. Um módulo pode ter um layout de seções perfeitamente legível e ainda assim ser rejeitado: um arquivo truncado ou uma etapa de pós-processamento que reescreveu bytes que não devia.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.