¿Hay algo así como un desminificador de javascript (deobfuscator)?

Esta pregunta es exactamente lo opuesto de ¿Qué miniapreciador de JavaScript (cruncher) hace las mismas cosas que el que Google usa para sus API JS?

Quiero aprender cómo google lo está cargando para poder construir el mío con los kits de herramientas JS no populares.

Prueba esto: JS Beautifier

Uhhh, sería imposible restaurar los nombres de las variables a menos que hubiera un mapeo de nombres de variables primarios minificados disponibles. De lo contrario, creo que los autores de esa herramienta podrían ganar el premio Randi por hazañas psíquicas.

Pruebe http://www.jsnice.org/

Me encontré con eso y es genial. Se expande el código. Tiene un cambio de nombre de variable estadística. por ejemplo, si tienes este código:

var g = f.originalEvent.targetTouches[0]; 

Luego convierte tu código en:

 var touches = event.originalEvent.targetTouches[0]; 

Bastante bueno, creo.

Resultó esto:

 d.slide.hasClass("selected") ? (e.onSlideOpen.call(d.prev.children("div")[0]), q ? (e.rtl && d.slide.position().left > iw / 2 || d.slide.position().left < iw / 2) && h.animateSlide.call(d) : t && d.index ? (h.animateGroup(d, !0), h.fitToContent(d.prev)) : d.slide.position().top < ih / 2 && h.animateSlide.call(d)) : (setTimeout(function() { e.onSlideOpen.call(d.slide.children("div")[0]) }, e.slideSpeed), h.animateGroup(d), t && h.fitToContent(d.slide)), e.autoPlay && (f.stop(), f.play(l.index(j.filter(".selected")))) 

Dentro de esto:

 if (e.slide.hasClass("selected")) { settings.onSlideOpen.call(e.prev.children("div")[0]); if (val) { if (settings.rtl && e.slide.position().left > box.w / 2 || e.slide.position().left < box.w / 2) { self.animateSlide.call(e); } } else { if (isMac && e.index) { self.animateGroup(e, true); self.fitToContent(e.prev); } else { if (e.slide.position().top < box.h / 2) { self.animateSlide.call(e); } } } } else { setTimeout(function() { settings.onSlideOpen.call(e.slide.children("div")[0]); }, settings.slideSpeed); self.animateGroup(e); if (isMac) { self.fitToContent(e.slide); } } if (settings.autoPlay) { node.stop(); node.play(tabs.index(options.filter(".selected"))); } 

Una biblioteca en la que estoy trabajando tiene un par de errores, y después de pasar horas tratando de descifrar el código, encontrar esto me ahorrará un montón de tiempo.

En serio, esta herramienta limpia el piso con JS Beautifier.

Las herramientas de desarrollo de Chrome tienen esto integrado

No podrá reconstruir el nombre del método ni los nombres de las variables. Lo mejor que puede esperar es un formateador de código JS simple (como los mencionados anteriormente), y luego recorrer el método de archivo por método, línea por línea, resolviendo lo que hace cada parte.

Quizás el uso de una buena herramienta de refactorización JS también lo haría más fácil (pudiendo renombrar / documentar métodos)

Puede usar la función \b (límite de palabras) en expresiones regulares para buscar nombres de variables de una sola letra en un archivo.

 for i in "abcdefghij..z"; do sed -i "s/\b$i\b/$(random /usr/share/dict/words)/g" somefile.js done 

También puedes usar esto en vim con algo como :%s/\/truesaiyanpower/g .

Para unificar archivos js, ¡ Unminify sería lo mejor!

Consulte nuestro formateador SD ECMAScript para obtener una herramienta que formateará el código.

EDITAR: Si desea revertir el proceso de cambio de nombre, necesita algo que pueda cambiar el nombre de los nombres ofuscados a los originales.

Esta herramienta puede hacer eso técnicamente: SD Thicket ECMAScript Obfuscator .

Lo hace aplicando un mapa de cambio de nombre sobre el que tiene un control preciso. Típicamente, usted construye implícitamente tal mapa durante el proceso de ofuscación eligiendo qué nombres ofuscar y cuáles preservar, y el ofuscador aplica ese mapa para producir el código ofuscado.

El ofuscador Thicket genera este mapa como efecto secundario cuando se ofusca en forma esencialmente de un conjunto de pares (nombre original, nombrefuscado) con fines de referencia y depuración.

El intercambio de elementos da el mapa (nombrefuscado, nombre original). Ese mapa invertido puede ser aplicado por Thicket para recuperar el código con los nombres originales, del código ofuscado. Y el ofuscador Thicket incluye el formateador para que puedas volver a lucir bien.

El truco para “invertir la minificación” (como lo pones mal, estás intentando revertir la ofuscación), es que necesitas el mapa. Dado que las personas que hacen ofuscación no regalan el mapa, usted, como receptor de un código ofuscado, no tiene nada que aplicar. Un aspirante a pirata tendría que reconstruir el mapa presumiblemente mediante una dolorosa ingeniería inversa.

El proceso de “inversión” tampoco puede recuperar los comentarios. Se han ido para siempre.

Esto es todo por diseño, por lo que la verdadera pregunta es ¿por qué estás buscando revertir la ofuscación?

Javascript minifier y Javascript Obfuscator son dos cosas diferentes.

Minificador: elimina los comentarios, el espacio en blanco innecesario y las nuevas líneas de un progtwig.

Obfuscator: realice modificaciones en el progtwig, cambiando los nombres de variables, funciones y miembros, haciendo que el progtwig sea mucho más difícil de entender. Algunos ofuscadores son bastante agresivos en sus modificaciones al código.

Este ocultador de Javascript ofuscará su código.

Si desea desofuscar su código, intente JavaScript Beautifier . Desofuscará si se encuentra ofuscación y luego embellecerá el código.