Qué revierte esta herramienta
Muchos ofuscadores de JavaScript —incluido el de este mismo sitio— reescriben el código con un conjunto pequeño y mecánico de transformaciones estáticas: mueven cada cadena literal a un único array y sustituyen cada uso por una llamada a una función captadora, escapan caracteres normales como secuencias \xNN o \uNNNN, expanden aritmética simple en expresiones equivalentes pero más largas, envuelven código real en un if siempre verdadero o siempre falso, y reescriben a.b como a['b']. Esta herramienta revierte exactamente esas cinco cosas:
- Inlining de array de cadenas — encuentra
var _s = ["foo", "bar"]; function _g(i){ return _s[i]; }y sustituye cada llamada tipo_g(0)cuyo índice sea un número literal por la cadena real, y luego elimina el array y la función si nada más los usa. - Decodificación de escapes — muestra
\x48\x69comoHien lugar de la forma escapada. - Plegado de constantes — convierte
1 + 2en3,"a" + "b"en"ab"y aritmética literal similar, evitando cualquier cosa que requiera adivinar (como dividir por un literal cero). - Eliminación de ramas muertas —
if (true) { A } else { B }se convierte en soloA; unwhile (false) {}desaparece por completo. - Corchete a punto —
obj['nombre']se convierte enobj.nombrecuandonombrees un identificador válido.
Qué no hace
Esto es coincidencia de patrones estática sobre un AST, no un desofuscador general. No ejecuta ningún código, así que no puede desempaquetar un cargador basado en eval, resolver un predicado opaco que dependa de un valor en tiempo de ejecución, ni revertir el aplanado de flujo de control más allá del caso literal único de if/while/ternario anterior. Los nombres de variables se dejan tal cual — _0x1a2b sigue siendo _0x1a2b. Si tu archivo no coincide exactamente con la forma array-de-cadenas + función captadora, esa fase simplemente informa cero llamadas alineadas en lugar de adivinar otro patrón.
Cómo funciona
El código se analiza en un AST con acorn, se recorre y reescribe con transformaciones hechas a mano que solo actúan cuando un valor ya es demostrablemente literal, y se regenera con astring. Nada se sube a ningún servidor: el análisis y la reescritura ocurren en tu navegador.
Cómo usarlo
Pega o escribe JavaScript en el editor y ejecútalo. El resumen muestra exactamente cuántas veces se activó cada fase, para que veas qué cambió y qué no. Copia el resultado o descárgalo como archivo .js.
Tiny Online Tools







