Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jsdeob-workbench — Ingeniería inversa de JavaScript ofuscado visualmente. Encadena transformaciones, inspecciona cambios en el AST, escribe plugins de desofuscación reutilizables. | Kitploit
Herramientas/GitHubGitHub/owl4444/jsdeob-workbench
Análisis EstáticoAnálisis de CódigoIngeniería InversaScripting y AutomatizaciónDepuradoresAnálisis de MalwareAnálisis de BinariosAprendizaje y Educación
GitHubowl4444/jsdeob-workbench

jsdeob-workbench

Ingeniería inversa de JavaScript ofuscado visualmente. Encadena transformaciones, inspecciona cambios en el AST, escribe plugins de desofuscación reutilizables.

Ver Repositorio
11810hace 6 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

jsdeob-workbench

Un banco de trabajo visual para desofuscar JavaScript. Construye cadenas de transformación, recórrelas paso a paso, escribe tus propios plugins.

img

img

Demostración en YouTube

  • https://www.youtube.com/watch?v=7zuqKoJT2BM
  • https://www.youtube.com/watch?v=bOVnPIfjoco

¿Qué es esto?

Esta aplicación revela el Árbol de Sintaxis Abstracta (AST) de un programa JavaScript. La idea surgió al analizar una muestra de malware relacionada con obfuscatio.io, lo que me llevó a aprender más sobre BabelJS para desofuscación. Si alguna vez has intentado aplicar ingeniería inversa a JS ofuscado (piensa en bundles de webpack, salida de obfuscator.io, muestras de malware empaquetadas), sabes que es doloroso. Esta herramienta te permite:

  • Escribir scripts de transformación basados en BabelJS
  • Consultar rápidamente el AST desde el ASTViewer
  • Encadenar múltiples transformaciones visualmente y obtener un resumen para ver los cambios.
  • Compartir plugins con colaboradores (Manual) y exportar configuraciones.
  • Escribir patrones que puedas reutilizar como plugins.
  • Guardar proyectos mientras analizas otras muestras JS.

Inicio rápido

root@kitploit:~
npm install
npm start
# Abre http://localhost:3000

Eso es todo.

La interfaz

Barra lateral izquierda - Todas las transformaciones disponibles (incorporadas + tu receta como plugins) incluyendo la cadena de recetas. (Piensa en Cyberchef)

Centro - Editores de entrada/salida. Pega tu código ofuscado a la izquierda y ve el código transformado a la derecha.

Paneles derechos - Visor de AST, analizador de ámbito, resumen fácil de ver.

img

Análisis de ámbito

BabelJS nos permite ver el ámbito y los enlaces. Esto es especialmente útil para ver, por ejemplo, si hay variables no utilizadas. Esta vista también permite buscar ubicaciones donde se referencia una variable.

img

Escribir transformaciones

Presiona el botón + o pulsa Ctrl+N para abrir el editor de scripts. Las transformaciones son solo código JS con acceso a:

root@kitploit:~
// Variables globales disponibles:
ast        // El AST de Babel analizado
traverse   // Recorre el árbol: traverse({ Identifier(path) { ... } })
t          // Tipos de Babel: t.isStringLiteral(node), t.identifier('x')
config     // Configuración del usuario desde la tarjeta de receta
stats      // Registra tus cambios: stats.replaced = 5
parser     // Analiza código: parser.parse('var x = 1')
generate   // Genera código: generate(node).code
run        // Helper de evaluación: run('1+1') => 2 (PELIGRO. ESTÁ DISEÑADO PARA EJECUTARSE EN TU PROPIA MÁQUINA EN UN SANDBOX)

Ejemplo: eliminar todas las cadenas "debug" (StringLiteral):

root@kitploit:~
// Los dos siguientes aparecerán como parámetros en la cadena de recetas, como se ve en la siguiente captura
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;

traverse({
  StringLiteral(path) {
    if (path.node.value === targetValue) {
      if (removeMatches) {
        path.remove();
        stats.removed = (stats.removed || 0) + 1;
      }
    }
  }
});

Puedes elegir:

  • Ejecutar este script directamente con (CTRL + ENTER) para pruebas rápidas
  • Añadir el script escrito a la cadena de recetas sin guardarlo como plugin (como se muestra en la captura). Puedes guardarlo después.
  • Guardarlo como plugin una vez que sepas que funciona y quieras compartirlo con otros.

La captura siguiente muestra:

  1. El editor de scripts (Haz clic en el botón nuevo en la parte superior izquierda o atajo con Ctrl-E)
  2. Después de escribir el script de BabelJS, agrégalo a la cadena de recetas.
  3. En la receta, con el parámetro detectado, puedes modificar el comportamiento del plugin.
  4. El editor de salida muestra la transformación exitosa.

img

Transformaciones incorporadas

Ten en cuenta que pueden fallar dependiendo de la técnica de ofuscación y pueden requerir scripts personalizados. También puedes modificarlas y guardarlas como un nuevo script personalizado.

Plugins

Coloca tus propios archivos .js en las subcarpetas plugins/<category>/. Aparecerán en la barra lateral agrupados por carpeta.

img

Por ejemplo:

  • Nombre: Derivado del nombre del archivo (Bracket-to-dot-notation.js → "Decode Strings")
  • Categoría: El nombre de la subcarpeta (plugins/Utilities/ → categoría "nyx")
root@kitploit:~
/**
 * Bracket to Dot Notation
 * Changes things like  console["log"] to console.log
 * 
 * Category: utilities
 */

// Script Editor - Ctrl+Enter to run, Ctrl+E to close
// Use traverse(visitor) to modify the AST
// Access 't' for Babel types

traverse({
  MemberExpression(path) {
    if(path.node.computed === true){
      // this is the bracket notation
      
      prop = path.node.property
      if(t.isStringLiteral(prop)  &&
          /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(prop.value)
       ){

        path.node.computed = false; // step 1

      // step 2 change literal to identifier
        path.node.property = t.identifier(prop.value)
      

      }
    }
  }

});

Hay dos métodos para añadir parámetros:

  1. (Este tiene prioridad y es muy recomendado) Siguiendo este formato en el código, el editor de scripts intentará crear dos parámetros (targetValue y removeMatches):
root@kitploit:~
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;
  1. Si algún parámetro no se detecta debido a casos límite, al guardar como plugin se permite añadir parámetros adicionales que podrían haberse omitido.

img

Resumen principal

Incluye:

  • Tiempo que tomó cada plugin en ejecutarse
  • Estadísticas de cambio de tamaño del código
  • Gráfico para visualizar los cambios

img

Atajos de teclado

TeclaAcción
Ctrl+EAlternar editor de scripts
Ctrl+Shift+EAlternar panel de evaluación (PELIGROSO)
Ctrl+SGuardar proyecto

Construir un ejecutable independiente

TEN EN CUENTA QUE EL EJECUTABLE INDEPENDIENTE PUEDE TENER PROBLEMAS SI HAY MUCHOS NODOS ANIDADOS. ES POSIBLE QUE LA SOLUCIÓN ALTERNATIVA NO FUNCIONE SIEMPRE.

Para construir con npm, podemos usar lo siguiente:

root@kitploit:~
npm run build        # Solo Windows

La salida va a dist/. Copia la carpeta plugins/ junto al exe si quieres tus transformaciones personalizadas.

Problemas de tamaño de pila

El código profundamente anidado (como JSFuck) puede desbordar la pila. El script de construcción intenta aumentarla automáticamente en Windows. Si obtienes desbordamientos de pila, intenta ejecutar desde el código fuente con npm start (usa --stack-size=65536).

No he descubierto cómo aumentar el tamaño de la pila al construir un ejecutable independiente. ¡Házmelo saber si sabes cómo!

Créditos

Construido con:

  • Babel - Análisis y transformaciones de AST
  • Monaco Editor - Editor de código
  • Express - Servidor backend

img

¿Preguntas? ¿Problemas? Abre un issue en GitHub.

Descargar herramienta
NombreQué hace
BeautifyFormatea el código de forma agradable
Constant Folding1 + 2 → 3, "a" + "b" → "ab"
Decode StringsDecodifica \x48\x65\x6c\x6c\x6f → "Hello"
Inline Array ValuesInserta en línea accesos simples a elementos de arrays
Inline String ArrayInserta en línea arrays de cadenas usados por ofuscadores
Opaque Predicate RemovalElimina condiciones siempre verdaderas/falsas
Remove CommentsElimina todos los comentarios del código
Remove IIFEDesenvuelve envoltorios (function(){...})()
Remove Unused CodeElimina variables y funciones muertas
Simplify Literals!0 → true, void 0 → undefined