Um desofuscador simples, mas poderoso, para remover técnicas comuns de ofuscação de JavaScript. Abra um problema se houver um recurso que você acha que deveria ser implementado.
Versão online em deobfuscate.io
Instalar via npm install js-deobfuscator
Procurando um desofuscador específico para Obfuscator.io/javascript-obfuscator? Experimente este repositório
Se você quiser discutir/aprender sobre ofuscação e desofuscação de JavaScript, você pode ingressar no servidor Discord
Descompacta arrays contendo literais (strings, números, etc.) e substitui todas as referências a eles
Remove funções de proxy simples (chamadas para outra função), funções de proxy de array e funções de proxy aritméticas (expressões binárias)
Simplifica expressões aritméticas
Simplifica a concatenação de strings
Renomeia identificadores hexadecimais ilegíveis (por exemplo, _0xca830a)
Converte expressões de membro calculadas em estáticas e embeleza o código
Veja abaixo um exemplo mais complicado com recursos encadeados.
Antes
const a = ['x20', 'x57x6fx72x6cx64', 'x48x65x6cx6cx6f'];console.log(a[2] + a[0] + uma[1]);
Depois
console.log('Olá' + ' ' + 'Mundo');
Antes
função a(b, c) { return someFunction(b, c);}const resultado = a(5, 6);
Depois
const resultado = algumaFunção(5, 6);
Antes
função a(b, c) { return c + 2 * b;}const resultado = a(5, 6);
Depois
resultado constante = 6 + 2 * 5;
Antes
função a(b, c) { retornar c + 2 * b;}função b(c, d) { retornar a(c, d);}função c(d, e) { retornar b(d, e);} resultado constante = c(5, 6);
Depois
resultado constante = 6 + 2 * 5;
Antes
seja total = 0x2 * 0x109e + -0xc * -0x16a + -0x3234;para (seja i = 0x1196 + 0x97b * 0x3 + -0x2e07; i < -0x95 * -0x38 + -0x1a75 + -0x619; i++) { total += eu;}
Depois
deixe total = 0;for (seja i = 0; i < 10; i++) { total += i;}
Antes
console.log('Ele' + 'll' + 'o' + 'Wo' + 'r' + 'ld');
Depois
console.log('Olá Mundo');
Todos esses recursos podem ser encadeados para simplificar o código.
Antes
const ar = [ 'x48x65x6cx6cx6f', 0x95, 'x20', 0x1a75, 'x57x6fx72x6cx64', -0x53, 'x6cx6fx67' ];const a = função (b, c) { return c + 2 * b; }, b = função (c, d) { retornar a(c, d); }, c = função (d, e) { retornar b(d, e); };mensagem const = ar[0] + ar[2] + ar[4];resultado const = c(ar[1] * 0x38 + ar[3] + 0x619, 0x12 * ar[5] + 0x1a13 + 0x621) ;console[ar[6]](mensagem + ' ' + resultado);
Depois
const mensagem = 'Olá mundo';const resultado = 40106;console.log(mensagem + ' ' + resultado);
interface Configuração {matrizes: { unpackArrays: boolean; removeArrays: booleano; }; proxyFunctions: {substituirProxyFunctions: boolean; removeProxyFunctions: booleano; }; expressões: { simplificarExpressões: boolean; removeDeadBranches: booleano; }; diversos: { embelezar: booleano; simplificarPropriedades: booleano; renomearHexIdentifiers: booleano; };}
Instale o módulo localmente via npm install js-deobfuscator
e importe como de costume ou instale globalmente npm install -g js-deobfuscator
e use a CLI js-deobfuscator
:
> js-desofuscador -h Uso: executar [opções] Desofuscar um arquivo javascript Opções: -i, --input [input_file] O arquivo de entrada para desofuscar (padrão: "input/source.js") -o, --output [output_file] O arquivo de saída desofuscado (padrão: "output/output.js") -f, --force Se deve substituir o arquivo de saída ou não -h, --help exibe ajuda para o comando>
Alternativamente, use a versão online em deobfuscate.io