Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/02/2012, 17:09
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 10 meses
Puntos: 1485
Respuesta: JavaScript Obfuscator

creo que no entendistes. ¿cuál es la idea de ofuscar el código? en teoría, "ocultar" el código original ante cualquier lector y agregar un falso sentido de seguridad al código. te muestro un ejemplo con una aplicacion que se llama Packer. el código original y ofuscado:
Código:
// original
console.log("hola javascriptero, me puedes ver?");

// ofuscado
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1.0("2 3, 5 4 6?")',7,7,'log|console|hola|javascriptero|puedes|me|ver'.split('|'),0,{}))
evidentemente, el código original no se ve a simple vista en el ofuscado. pero tiene un problema y es por ello que es un falso sentido de seguridad: el decifrador para obtener el código original esta presente. tan simplemente puedo cambiar la función eval por console.log y en la consola javascript obtengo el código original. entonces, ¿se puede quitar el decifrador? no, porque si le dejas el código ofuscado sin el decifrador (o en este caso, desempaquetador), javascript no sabría que detrás de eso hay otro código para interpretarse. o en el peor de los casos -como sucede con otros ofuscadores- el código oculto es totalmente inentendible para javascript sin el decifrador, de modo que genera error y tampoco se interpreta el código que originalmente se intenta.

miralo de esta forma, ofuscar es casi como compilar. el código fuente es convertido a otro resultado. sin embargo, el código compilado en la mayoría de los casos se puede ejecutar por si mismo sin que un código decifrador esté presente. en javascript, no existe esa noción. es por ello, que un código ofuscado javascript no lo entiende y para ello debe estar presente el decifrador (obligado).

te recalco que un minimificador no es lo mismo que un ofuscador. en ningún momento dije que javascript no comprende un código minimizado. mira por ejemplo el código fuente de cualquier jquery con la extensión *.min.js. el código parece estar ofuscado, pero no lo esta. simplemente se le ha removido los caracteres inútiles sin corromper el funcionamiento del código original. es decir, se puede interpretar (navegador) pero resulta imposible para un humano. en fin, minimificar y ofuscar son dos técnicas con propósitos totalmente distintos.