Ahí cada maestrillo tiene su librillo

yo por ejemplo lo veo como code sin ofuscar (como code escrito por una tia o tio raro) e intento leerlo.
Comolll!!!??? Pues sí

El que enrede con JS en el desarrollo o mantenimiento de aplicaciones web debería saber interpretarlo, lo hago yo que soy un pardillo así que el que se dedique a eso ni te cuento la de recursos de su invento que debe de tener
vamos al comolll!?
Lo primero que hago como buen hijo de vecino, es comparar la entrada y la salida.
En este caso se ve con claridad que se
reemplaza el hash
invirtiendo e
eliminando un caracter del mismo.
Con eso ya sé que como mínimo se usa s.replace(a,b), s.inverse() y un método o más que tengo que consultar cuando evalue la variable "_0xa425".
En este caso el s.replace(a,b) es fundamental, sólo existe uno, así que sin miramiento alguno, todo lo que hay entre el primer ";" y "_0xf328x2[_0xa425[2]]=_0xf328x2[_0xa425[2]][_0xa425[8]]" lo elimino. Al eliminarlo me obliga a eliminar lo que le sobra al final del script; "return _0xf328x2});return _0xf328x1[_0xa425[10]]}".
A lo que me queda le elimino (lo que es de cajón, al menos para mí) los "[_0xa425[2]]" ya que sería un elemento que sólo funcionaría en la página web y sólo quiero s.replace(a,b) y no s.algo.replace(a,b).
Elimino los dos que hay y me queda algo que puedo evaluar y clarificar por si quiero recrearlo
Código: Seleccionar todo
_0xa425= ["\x73\x69\x7A\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x66\x69\x6C\x65","\x72\x65\x76\x65\x72\x73\x65","","\x73\x70\x6C\x69\x74","\x73\x70\x6C\x69\x63\x65","\x6A\x6F\x69\x6E","\x72\x65\x70\x6C\x61\x63\x65","\x6D\x61\x70","\x6C\x65\x6E\x67\x74\x68"];_0xf328x2= _0xf328x2[_0xa425[8]](/[0-9a-z]{40,}/i,function(_0xf328x3){_0xf328x4=_0xf328x3[_0xa425[5]](_0xa425[4])[_0xa425[3]]();_0xf328x4[_0xa425[6]](1,1);return _0xf328x4[_0xa425[7]](_0xa425[4])});
Para evaluarlo de forma rápida inicializo la variable "_0xf328x2" con una url y añado un alert("url:" + _0xf328x2 + "\nmétodos: " + _0xa425) para ver de forma rápida la nueva url y los métodos que se usan.
Código: Seleccionar todo
_0xa425= ["\x73\x69\x7A\x65","\x70\x72\x6F\x74\x6F\x74\x79\x70\x65","\x66\x69\x6C\x65","\x72\x65\x76\x65\x72\x73\x65","","\x73\x70\x6C\x69\x74","\x73\x70\x6C\x69\x63\x65","\x6A\x6F\x69\x6E","\x72\x65\x70\x6C\x61\x63\x65","\x6D\x61\x70","\x6C\x65\x6E\x67\x74\x68"];
_0xf328x2= "http://1.2.3.4:1234/a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d9e/l.ext";
_0xf328x2= _0xf328x2[_0xa425[8]](/[0-9a-z]{40,}/i,function(_0xf328x3){_0xf328x4=_0xf328x3[_0xa425[5]](_0xa425[4])[_0xa425[3]]();_0xf328x4[_0xa425[6]](1,1);return _0xf328x4[_0xa425[7]](_0xa425[4])});
alert("url:" + _0xf328x2 + "\nmétodos: " + _0xa425);
A partir de aquí es fácil sustitur los _0xa425[x] con el valor que le corresponda.
Al resultado de todo le he renombrado todas las variables "_0xf328xn" por "var_n" con lo que se me queda un code más mono por si quiero reproducirlo en lo que sea

Código: Seleccionar todo
var_2= "http://1.2.3.4:1234/a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d9e/l.ext";
var_2= var_2.replace(/[0-9a-z]{40,}/i,function(var_3){var_4=var_3.split("").reverse();var_4.splice(1,1);return var_4.join("")});
alert("url:" + var_2);
Puede parecer que se tarde mucho, todo lo contrario. En un script tan pequeño la diversión se acaba muy pronto
