Aller au contenu

Inspecteur WebAssembly

WebAssembly Inspector

Liste les imports, les exports, la mémoire et la taille des sections d’un module .wasm et en imprime le format texte.

Ouvre un fichier `.wasm` et montre ce qu'il y a dedans : les sections et leurs tailles, chaque import et chaque export, les déclarations de mémoire et de table, et les noms de fonctions de la section de noms si la compilation les a gardés. Le module est analysé, jamais instancié ni exécuté.

🔒 Fonctionne entièrement dans votre navigateurwasminspectbinary

Déposez un module .wasm

Analysé dans cet onglet : le module est inspecté, jamais instancié ni exécuté.

Lit la structure binaire — sections, types, imports, exports, mémoire, la section personnalisée name — et confronte le module entier au WebAssembly.validate du navigateur lui-même. Les corps de fonction sont mesurés, pas désassemblés : on voit ce qu’un module déclare et ce à quoi il touche, pas une conversion complète vers le format texte.

Comment s’en servir

  1. Déposez le module

    N'importe quel fichier `.wasm`. Il est lu dans cet onglet et recoupé avec le `WebAssembly.validate` du navigateur lui-même : vous obtenez donc un second avis sur sa bonne formation.

  2. Regardez d'abord les sections

    La table des tailles est le moyen le plus rapide de voir où sont passés les octets — une grosse section de données signifie des ressources embarquées, une grosse section personnalisée est en général des noms de débogage ou du DWARF.

  3. Lisez les imports

    Les imports sont tout le contrat du module avec son hôte — chaque fonction qu'il peut appeler et chaque mémoire qu'il partage. Si vous auditez un module que vous n'avez pas compilé, c'est cette liste qui compte.

Questions fréquentes

Puis-je voir le code lui-même ?

Non. Les corps de fonctions sont mesurés, pas désassemblés — ceci rapporte ce qu'un module déclare et touche plutôt que de le convertir au format texte. `wasm2wat`, de la boîte à outils WABT, est l'outil du désassemblage complet.

Pourquoi les noms de fonctions manquent-ils ?

Parce que la compilation a retiré la section personnalisée de noms, ce que fait normalement une compilation de release. Les exports gardent leurs noms quoi qu'il arrive — ils font partie de l'interface du module — : une fonction exportée reste donc identifiable.

Un module qui a des imports est-il dangereux ?

Pas en soi — WebAssembly ne peut atteindre que ce que l'hôte lui remet, et un module sans imports ne peut pas toucher au monde extérieur du tout. Ce que les imports nomment est exactement ce qu'il peut faire, et c'est pourquoi il vaut la peine de les lire avant d'instancier quelque chose.

La validation du moteur dit « invalide » alors que l'analyse a réussi.

Les deux vérifient des choses différentes. L'analyse lit la structure ; `WebAssembly.validate` vérifie en plus le typage de chaque corps de fonction. Un module peut avoir une disposition de sections parfaitement lisible et être tout de même rejeté — un fichier tronqué, ou une étape de post-traitement qui a réécrit des octets qu'elle n'aurait pas dû toucher.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.