Como ofuscar a tope un código JavaScript gratis
Iniciado por Sauron · 18 may 2016 · 5 respuestas · 9535 visitas
Sauron Hace casi 2 años os puse un par de herramienta que ayudan a la tarea de desofuscar código JavaScript.
http://foroblackhat.com/hilo-desofuscar-c%C3%B3digo-javascript#.VzyTtHWLTCJ
Tengo que decir que a día de hoy, se encuentran cada vez más códigos javascript que se vuelve una tarea complicada la desofuscación. Han evolucionado mucho el mundo de la ofuscación de JavaScript, de manera que ya se hace irrenocible, os voy a dejar los 2 pasos que sigo yo para dejar un código javascript bien ofuscado y gratis :)
Os pongo un ejemplo que vais a ir viendo como se va ofuscando:
function hola(msg) { alert(msg); } hola("Bienvenido a ForoBlackhat");
Ahora lo voy a pasar por la primera herramienta que es:
http://www.danstools.com/javascript-obfuscate/index.php
El código que me devuelve ofuscado es:
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}('2 1(0){3(0)}1("6 4 5");',7,7,'msg|hola|function|alert|a|ForoBlackhat|Bienvenido'.split('|'),0,{}))
Este código es super facil recuperar al original simplemente usando jsbeautifier.org nos lo devuelve, probarlo :)
Y la segunda herramienta que uso como entrada el código resultante de la primera,
https://javascriptobfuscator.com/Javascript-Obfuscator.aspx
el código queda:
var _0xd4d7=["\x32\x20\x31\x28\x30\x29\x7B\x33\x28\x30\x29\x7D\x31\x28\x22\x36\x20\x34\x20\x35\x22\x29\x3B","\x7C","\x73\x70\x6C\x69\x74","\x6D\x73\x67\x7C\x68\x6F\x6C\x61\x7C\x66\x75\x6E\x63\x74\x69\x6F\x6E\x7C\x61\x6C\x65\x72\x74\x7C\x61\x7C\x46\x6F\x72\x6F\x42\x6C\x61\x63\x6B\x68\x61\x74\x7C\x42\x69\x65\x6E\x76\x65\x6E\x69\x64\x6F","\x72\x65\x70\x6C\x61\x63\x65","","\x5C\x77\x2B","\x5C\x62","\x67"];eval(function(_0xfb97x1,_0xfb97x2,_0xfb97x3,_0xfb97x4,_0xfb97x5,_0xfb97x6){_0xfb97x5=function(_0xfb97x3){return _0xfb97x3};if(!_0xd4d7[5][_0xd4d7[4]](/^/,String)){while(_0xfb97x3--){_0xfb97x6[_0xfb97x3]=_0xfb97x4[_0xfb97x3]||_0xfb97x3};_0xfb97x4=[function(_0xfb97x5){return _0xfb97x6[_0xfb97x5]}];_0xfb97x5=function(){return _0xd4d7[6]};_0xfb97x3=1};while(_0xfb97x3--){if(_0xfb97x4[_0xfb97x3]){_0xfb97x1=_0xfb97x1[_0xd4d7[4]]( new RegExp(_0xd4d7[7]+_0xfb97x5(_0xfb97x3)+_0xd4d7[7],_0xd4d7[8]),_0xfb97x4[_0xfb97x3])}};return _0xfb97x1}(_0xd4d7[0],7,7,_0xd4d7[3][_0xd4d7[2]](_0xd4d7[1]),0,{}))
Ya sólo con ver ese código quita las ganas de tratar de desofucar :). Se puede securizar aún más y seguramente haya desofuscadores más potentes que puedas lograr algo, pero ya con estas dos herramientas podemos asegurar nuestros códigos javascriptmaestrodellaves Osea que ofuscas en 2 pasos: uno con la primera herramienta y luego ofuscas el resultado obtenido, ahora ya con la segunda herramienta...
Buen aporte.TheoXT Hola Sauron. Soy nuevo en este foro. Ando investigando técnicas de ofuscación y desofuscación de código Javascript y al leer tu publicación me registré para poder comentar. Como bien dices de seguro hay muchos ofuscadores más potentes y son los que yo ando buscando ya que el ofuscador que mencionaste ya no me parece tan eficiente debido a que encontré la manera de obtener el código casi 100% original.
Para mostrar lo que digo, tomaré como ejemplo el mismo código ofuscado que pusiste en tu publicación:
var _0x3d47=["\x32\x20\x31\x28\x30\x29\x7B\x33\x28\x30\x29\x7D\x31\x28\x22\x36\x20\x34\x20\x35\x22\x29\x3B","\x7C","\x73\x70\x6C\x69\x74","\x6D\x73\x67\x7C\x68\x6F\x6C\x61\x7C\x66\x75\x6E\x63\x74\x69\x6F\x6E\x7C\x61\x6C\x65\x72\x74\x7C\x61\x7C\x46\x6F\x72\x6F\x42\x6C\x61\x63\x6B\x68\x61\x74\x7C\x42\x69\x65\x6E\x76\x65\x6E\x69\x64\x6F","\x72\x65\x70\x6C\x61\x63\x65","","\x5C\x77\x2B","\x5C\x62","\x67"];eval(function(_0x7f21x1,_0x7f21x2,_0x7f21x3,_0x7f21x4,_0x7f21x5,_0x7f21x6){_0x7f21x5= function(_0x7f21x3){return _0x7f21x3};if(!_0x3d47[5][_0x3d47[4]](/^/,String)){while(_0x7f21x3--){_0x7f21x6[_0x7f21x3]= _0x7f21x4[_0x7f21x3]|| _0x7f21x3};_0x7f21x4= [function(_0x7f21x5){return _0x7f21x6[_0x7f21x5]}];_0x7f21x5= function(){return _0x3d47[6]};_0x7f21x3= 1};while(_0x7f21x3--){if(_0x7f21x4[_0x7f21x3]){_0x7f21x1= _0x7f21x1[_0x3d47[4]]( new RegExp(_0x3d47[7]+ _0x7f21x5(_0x7f21x3)+ _0x3d47[7],_0x3d47[8]),_0x7f21x4[_0x7f21x3])}};return _0x7f21x1}(_0x3d47[0],7,7,_0x3d47[3][_0x3d47[2]](_0x3d47[1]),0,{}))
Si tomamos este código y lo pegamos en la consola del navegador así como se muestra:

Luego borramos la palabra eval así:

Y pulsamos enter, obtenemos el código original desofuscado:

:)Sauron @"TheoXT" muy bueno, desde la consola nunca lo había hecho jejeje :). El tema es que es imposible ocultar el código JS al final el navegador tiene que interpretarlo si o si. Pero bueno ya la mayoría de usuarios que vean el código JS ofuscado seguramente pasen de él :)iamcholo Una buena forma adicional es usar uglify cuando se comprime y ofusca el código. Básicamente, lo que hace, es cambiar los nombres de las variables y funciones. Dando como resultado un código ilegible para quién intente hacer una desofuscación. Vamos, el tío no tendrá ni puñetera idea que está viendo. :DTheoXT Vengo a este foro a aportar un poco más. Existe esta página gratuita que ofrece un método de ofuscación un poco más avanzado que las anteriores. Espero que les sirva:
https://javascriptobfuscator.herokuapp.com/
Este hilo pertenece al archivo del foro y ya no admite respuestas.
Otros hilos de esta sección
- Social Locker simple en HTML y JavaScriptSauron · 16 jun 201420 respuestas · 47.307 visitasÚltimo mensaje: 7 dic 2018
- Script para postear en diferentes grupos de Facebookrodrigol · 6 jun 201418 respuestas · 43.485 visitasÚltimo mensaje: 7 may 2018
- Scrapear con phytoncarlosse · 3 may 201411 respuestas · 24.557 visitasÚltimo mensaje: 19 mar 2017
- Desofuscar código JavaScriptSauron · 7 ago 20147 respuestas · 18.061 visitasÚltimo mensaje: 12 oct 2016
- Redirección .htaccess de un dominiowrongchris · 15 mar 20174 respuestas · 15.565 visitasÚltimo mensaje: 29 nov 2017
- Scrapear utilizando PHP nativo y la librería CurlSauron · 19 mar 20147 respuestas · 15.162 visitasÚltimo mensaje: 9 jul 2015
- Ayuda script para forzar a ver anuncio a los usuariosdobrick · 26 feb 20185 respuestas · 15.034 visitasÚltimo mensaje: 12 may 2019
- Duda para desarrolladores webharmonica · 8 may 20158 respuestas · 14.252 visitasÚltimo mensaje: 20 jul 2015

