Saltar al contenido

Inspector de WebAssembly

WebAssembly Inspector

Enumera las importaciones, exportaciones, memoria y tamaños de sección de un módulo .wasm e imprime su formato de texto.

Abre un archivo `.wasm` y muestra lo que hay dentro: las secciones y sus tamaños, cada importación y exportación, las declaraciones de memoria y de tabla, y los nombres de función de la sección de nombres si el build los conservó. El módulo se analiza, nunca se instancia ni se ejecuta.

🔒 Se ejecuta por completo en tu navegadorwasminspectbinary

Suelta un módulo .wasm

Se analiza en esta pestaña: el módulo se inspecciona, nunca se instancia ni se ejecuta.

Lee la estructura binaria — secciones, tipos, importaciones, exportaciones, memoria, la sección personalizada name — y contrasta el módulo entero con el propio WebAssembly.validate del navegador. Los cuerpos de función se miden, no se desensamblan: esto muestra lo que un módulo declara y lo que toca, no una conversión completa al formato de texto.

Cómo se usa

  1. Suelta el módulo

    Cualquier archivo `.wasm`. Se lee en esta pestaña y se contrasta con el propio `WebAssembly.validate` del navegador, así que tienes una segunda opinión sobre si está bien formado.

  2. Mira primero las secciones

    La tabla de tamaños es la forma más rápida de ver adónde fueron los bytes: una sección de datos grande significa recursos incrustados, una sección personalizada grande suele ser nombres de depuración o DWARF.

  3. Lee las importaciones

    Las importaciones son todo el contrato del módulo con el anfitrión: cada función que puede llamar y cada memoria que comparte. Si estás auditando un módulo que no construiste, esta es la lista que importa.

Preguntas frecuentes

¿Puedo ver el código en sí?

No. Los cuerpos de las funciones se miden, no se desensamblan: esto informa de lo que un módulo declara y toca en lugar de convertirlo al formato de texto. `wasm2wat` del kit WABT es la herramienta para un desensamblado completo.

¿Por qué faltan los nombres de las funciones?

Porque el build eliminó la sección personalizada de nombres, que es lo que hace normalmente un build de release. Las exportaciones conservan sus nombres de todos modos —son parte de la interfaz del módulo—, así que una función exportada sigue siendo identificable.

¿Un módulo con importaciones es peligroso?

No en sí mismo: WebAssembly solo puede alcanzar lo que el anfitrión le entrega, y un módulo sin importaciones no puede tocar el mundo exterior en absoluto. Lo que nombran las importaciones es exactamente lo que puede hacer, y por eso merece leerlas antes de instanciar algo.

La validación del motor dice inválido pero se analizó.

Comprueban cosas distintas. El análisis lee la estructura; `WebAssembly.validate` además comprueba los tipos de cada cuerpo de función. Un módulo puede tener una disposición de secciones perfectamente legible y aun así ser rechazado: un archivo truncado o un paso de posprocesado que reescribió bytes que no debía.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.