Desofuscador de JavaScript
Pega un bloque de JavaScript ofuscado, cadenas codificadas en hex, nombres de variables de una sola letra, un bucle decodificador en la parte superior, y la herramienta descompone las capas: desescapa cadenas, in-linea el arreglo de búsqueda, renombra variables a marcadores legibles, aplana envolturas triviales y embellece el resultado. Útil para analizar fragmentos sospechosos que obtuviste de una página o un enlace de pastebin pegado.
Cómo desofuscar JavaScript
-
1
Pega la fuente ofuscada
Minificada, empaquetada o salida de herramientas estilo `javascript-obfuscator.io`.
-
2
Deja que el analizador lo procese
Los arreglos de cadenas son decodificados, las secuencias numéricas son evaluadas y las ramas de código muerto son eliminadas.
-
3
Aplica renombrado
Las variables de una sola letra `a`/`b`/`c` son renombradas a `var1`, `var2`, etc. marcadores legibles, no necesariamente nombres significativos.
-
4
Embellecer
Indentar, agregar nuevas líneas y producir código que realmente puedas leer y razonar.
Técnicas que el desofuscador revierte
| Ofuscación | Reversión |
|---|---|
| Literales de cadena hex-escapados | Decodificar \x48\x69 de vuelta a "Hi" |
| Identificadores unicode-escapados | \u006E\u0061\u006D\u0065 -> name |
| Arreglo de cadenas + función decodificadora | In-linear el arreglo, llamar al decodificador en tiempo de análisis |
| Plegado de constantes numéricas | 0x1F3 + 5 -> 504 |
Envoltorios eval(...) |
Elevar el código interno al nivel superior |
| Aplanamiento de flujo de control (máquina de estados) | Detectar el switch-case, reconstruir el flujo |
| Código muerto / ternarios inútiles | Eliminar ramas que nunca se ejecutan |
Nombres estilo _0x1a2b3c() |
Reemplazar con var1, var2 incrementales |
Límites: lo que la herramienta no hace
- Recuperar nombres de variables originales. Una vez que
userEmailes renombrado aa, ninguna herramienta puede adivinarlo de nuevo. Obtienes una estructura legible, no la semántica original. - Desempaquetar virtualizadores personalizados. Ofuscadores comerciales pesados (JScrambler, niveles empresariales de Obfuscator.io) introducen una VM personalizada que interpreta bytecode. Derrotar eso requiere ingeniería inversa manual.
- Ejecutar código arbitrario. El desofuscador evalúa expresiones puras de manera estática. No obtendrá recursos remotos, creará elementos DOM ni se comunicará con la red.
Casos de uso típicos
- Investigación de seguridad: descomponer un script sospechoso que llegó en un correo electrónico o fue servido por un CDN comprometido.
- Arqueología de código: recuperar código legado donde el único artefacto sobreviviente es un paquete minificado.
- Aprendizaje: entender lo que una ofuscación a nivel de tutorial realmente hace bajo el capó.
Seguridad y ética
Nunca ejecutes JavaScript no confiable en una pestaña del navegador conectada a algo importante, el código puede leer cookies, llamar a APIs internas y exfiltrar estado. El desofuscador en sí opera sobre la fuente como texto; no ejecuta el código que pegas.
Solo desofusca código que estás autorizado a analizar. La ingeniería inversa de software con licencia puede estar restringida en tu jurisdicción.
Preguntas frecuentes
No. Una vez que el ofuscador renombra userEmail a _0x1a2b3c, el nombre original se pierde. El desofuscador te da marcadores legibles (var1, var2) y una estructura correcta, pero no los nombres semánticos originales.
No. Analiza el código como un AST y aplica transformaciones estáticas. Las expresiones puras (como 0x1F3 + 5) son plegadas, pero nada toca la red, cookies o el DOM.
Sí, pero la salida del empaquetador está minificada en lugar de deliberadamente ofuscada, por lo que el resultado es solo código embellecido con envolturas de módulo restauradas. Los mapas de origen, si están disponibles por separado, te dan nombres mucho mejores.
Las herramientas comerciales pesadas (JScrambler empresarial, VMs personalizadas) introducen un intérprete de bytecode que el análisis estático no puede desenredar. La herramienta obtendrá la capa superficial, pero la lógica central permanece opaca sin reversión manual.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.
Generador de EditorConfig
Genera un archivo .editorconfig con tu estilo y tamaño de indentación, fin de línea, charset y reglas de espacios para un formato consistente en IDEs y editores.
Herramienta disponible en otros idiomas
- Déobfuscateur JavaScript [FR]
- JavaScript-deobfuscator [SV]
- เครื่องถอดรหัส JavaScript [TH]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- Deobfuscator JavaScript [ID]
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- 자바스크립트 디오프스버커 [KO]
- JavaScript-Deobfuscator [DE]
- JavaScript-deobfuscator [NL]
- Deobfuskator JavaScriptu [PL]
- JavaScriptデオブファスカータ [JA]
- Desofuscador de JavaScript [PT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]
- JavaScript反混淆工具 [ZH]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]