online ofuscar obfuscator encrypt deobfuscate code obfuscation reverse-engineering minify unminify

obfuscation - ofuscar - obfuscator c#



¿Existe tal cosa como un desminificador javascript(desobuscador)? (9)

Esta pregunta es exactamente la opuesta a ¿Qué minifier Javascript (cruncher) hace las mismas cosas que el que usa Google para sus API de JS?

Quiero saber cómo se está cargando Google para poder construir mi propio kit de herramientas no popular de JS.


Javascript minifier y Javascript Obfuscator son dos cosas diferentes.

Minificador: elimina los comentarios, espacios en blanco innecesarios y nuevas líneas de un programa.

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

Este ofuscador de Javascript ofuscará tu código.

Si desea desenfocar su código, intente Javascript Beautifier . Se desenfocará si se encuentra una ofuscación y luego se embellecerá el código.


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

Tal vez el uso de una buena herramienta de refactorización JS también lo haría más fácil (poder cambiar el nombre / documentar los métodos)


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



Pruebe http://www.jsnice.org/

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

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

Entonces convierte tu código en:

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

Bastante buena suposición, me parece.

Se volvió esto:

d.slide.hasClass("selected") ? (e.onSlideOpen.call(d.prev.children("div")[0]), q ? (e.rtl && d.slide.position().left > i.w / 2 || d.slide.position().left < i.w / 2) && h.animateSlide.call(d) : t && d.index ? (h.animateGroup(d, !0), h.fitToContent(d.prev)) : d.slide.position().top < i.h / 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.


Puede usar la característica /b (límite de palabra) en expresiones regulares para encontrar 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//<a/>/truesaiyanpower/g .


Uhhh, sería imposible restaurar los nombres de las variables a menos que hubiera un mapeo de los nombres de las variables minimizadas -> disponibles. De lo contrario, creo que los autores de esa herramienta podrían ganar el premio Randi por dotes psíquicas.


Vea nuestro SD ECMAScript Formatter para una herramienta que formatee bien el código.

EDITAR: Si desea revertir el proceso de cambio de nombre, necesita algo para cambiar el nombre de los nombres confusos a los originales.

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

Lo hace aplicando un mapa de cambio de nombre sobre el que tiene un control preciso. Por lo general, usted construye implícitamente un mapa de este tipo durante el proceso de ofuscación al elegir qué nombres ocultar y preservar, y el ofuscador aplica ese mapa para producir el código ofuscado.

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

El intercambio de elementos da el mapa (nombre ofuscado, nombre original). Thicket puede aplicar ese mapa invertido para recuperar el código con los nombres originales, a partir del código ofuscado. Y el ofuscador de Thicket incluye el formateador para que puedas lucir bien de nuevo.

El problema para "revertir la minificación" (como lo dice mal, está intentando revertir la ofuscación), es que necesita el mapa. Dado que las personas que hacen la ofuscación no regalan el mapa, usted, como receptor de código ofuscado, no tiene nada que aplicar. Un posible pirata tendría que reconstruir el mapa, presumiblemente, mediante una ingeniería inversa dolorosa.

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

Todo esto es por diseño, por lo que la pregunta real es ¿por qué busca revertir la ofuscación?