Tiny Online Tools logoTiny Online ToolssearchBuscar ferramentas…grid_viewTodas as ferramentas
Iniciochevron_rightFerramentas de engenharia reversachevron_rightDescompilador WASMDescompilador WASM

Descompilador WASM

Converta um binário WebAssembly em texto WAT legível, com grafo de chamadas por função, forma de fluxo de controle e uma estimativa da cadeia de ferramentas.

upload_file

Clique para procurar ou arraste e solte arquivos aqui

Solte um arquivo .wasm para descompilá-lo

Aceito: .wasm

Ferramentas semelhantes

Visualizador de Importações/Exportações WASM

Visualizador de Importações/Exportações WASM

Veja o que um módulo WebAssembly precisa do seu hospedeiro e o que oferece de volta, agrupado por namespace, lado a lado.

Analisador de Tamanho WASM

Analisador de Tamanho WASM

Descubra quais funções e segmentos de dados dominam o tamanho de um módulo WebAssembly, com um detalhamento exato e ordenado e um mapa em árvore visual.

Desmangler WASM

Desmangler WASM

Desmangle nomes de símbolos Rust e C++ encontrados em um binário WebAssembly, um de cada vez ou em lote em todo o arquivo.

Explorador Binário WASM

Explorador Binário WASM

Navegue pelas seções, funções, importações, exportações, memórias, tabelas e globais de um módulo WebAssembly com deslocamentos e tamanhos exatos em bytes.

inverter texto

inverter texto

inverter characters in a texto string.

Gerador de favicon

Gerador de favicon

Gere todos os tamanhos de favicon a partir de qualquer imagem, com trechos de tags HTML prontos para uso.

PDF para WebP

PDF para WebP

Converta paginas PDF em imagens WebP de alta qualidade no navegador.

apps

Mais ferramentas

Explore nossa colecao completa de ferramentas online gratuitas.

Um binário .wasm não foi feito para ser lido diretamente, mas pode ser convertido em WAT, o formato de texto legível do WebAssembly, e analisado estruturalmente além do fluxo de instruções. O Descompilador WASM faz ambos, tudo no seu navegador.

Sejamos claros sobre o que isto é e não é. Esta ferramenta não recupera o código-fonte original em Rust, C ou C++ — essa informação desaparece assim que o compilador gera o WASM. O que ela recupera com precisão:

  • Desmontagem WAT completa, produzida pelo wabt (o WebAssembly Binary Toolkit), com nomes de depuração aplicados quando o módulo traz uma seção "name".
  • Um grafo de chamadas, construído percorrendo o bytecode real de cada função em busca de instruções call e call_indirect — não adivinhado a partir do texto WAT. Um call_indirect mostra qual assinatura de tipo de função ele visa, nunca uma função concreta adivinhada, porque o alvo real só é resolvido em tempo de execução — isso é um fato estrutural do código, não uma limitação desta ferramenta.
  • Forma do fluxo de controle por função: profundidade máxima de aninhamento de block/loop/if, e a contagem de cada um, dando uma noção aproximada de quão complexa estruturalmente é uma função sem precisar de um grafo de fluxo de controle completo.
  • Uma estimativa da cadeia de ferramentas baseada em evidências — "provavelmente Rust", "provavelmente Emscripten (C/C++)" ou "provavelmente AssemblyScript" — baseada em evidências reais e verificáveis: os prefixos de símbolos mangled do Rust, as importações características do runtime do Emscripten (emscripten_*, __cxa_*, __wasm_call_ctors), ou as strings de caminho ~lib/ da biblioteca padrão do AssemblyScript encontradas nos segmentos de dados do módulo. A ferramenta sempre mostra a evidência específica que encontrou e formula o resultado como "provavelmente" — nunca uma certeza, e nunca um palpite sem nada por trás.

Uma função cujo bytecode usa uma instrução fora do conjunto de opcodes modelado pela ferramenta (SIMD, atômicos, operações de memória em massa) é marcada como "desmontagem parcial" em vez de ser mostrada silenciosamente como completa — a honestidade sobre os limites da análise importa mais do que um resultado organizado.

Útil para auditar a estrutura de um módulo .wasm de terceiros, entender como suas funções se chamam mutuamente, ou ter uma primeira impressão de um binário desconhecido antes de uma análise mais profunda.