Un binaire .wasm n'est pas fait pour être lu directement, mais il peut être converti en WAT, le format texte lisible de WebAssembly, et analysé structurellement au-delà du simple flux d'instructions. Le Décompilateur WASM fait les deux, entièrement dans votre navigateur.
Soyons clairs sur ce que c'est et ce que ce n'est pas. Cet outil ne récupère pas le code source original en Rust, C ou C++ — cette information disparaît une fois que le compilateur produit le WASM. Ce qu'il récupère précisément :
- Un désassemblage WAT complet, produit par
wabt(le WebAssembly Binary Toolkit), avec les noms de débogage appliqués lorsque le module porte une section "name". - Un graphe d'appels, construit en parcourant le bytecode brut de chaque fonction à la recherche d'instructions
calletcall_indirect— pas deviné à partir du texte WAT. Uncall_indirectmontre quelle signature de type de fonction il cible, jamais une fonction concrète devinée, car la cible réelle n'est résolue qu'à l'exécution — c'est un fait structurel du code, pas une limitation de cet outil. - La forme du flux de contrôle par fonction : profondeur maximale d'imbrication block/loop/if, et le décompte de chacun, donnant une idée approximative de la complexité structurelle d'une fonction sans nécessiter un graphe de flux de contrôle complet.
- Une estimation de la chaîne d'outils basée sur des preuves — "probablement Rust", "probablement Emscripten (C/C++)" ou "probablement AssemblyScript" — basée sur des preuves réelles et vérifiables : les préfixes de symboles manglés de Rust, les importations caractéristiques du runtime Emscripten (
emscripten_*,__cxa_*,__wasm_call_ctors), ou les chaînes de chemin~lib/de la bibliothèque standard d'AssemblyScript trouvées dans les segments de données du module. L'outil montre toujours la preuve spécifique trouvée et formule le résultat comme "probablement" — jamais une certitude, jamais une supposition sans rien derrière.
Une fonction dont le bytecode utilise une instruction en dehors du jeu d'opcodes modélisé par l'outil (SIMD, atomiques, opérations de mémoire en masse) est marquée "désassemblage partiel" plutôt que silencieusement présentée comme complète — l'honnêteté sur les limites de l'analyse compte plus qu'un résultat propre.
Utile pour auditer la structure d'un module .wasm tiers, comprendre comment ses fonctions s'appellent entre elles, ou avoir une première lecture d'un binaire inconnu avant une analyse plus approfondie.
Tiny Online Tools







