Un desofuscador simple pero poderoso para eliminar técnicas comunes de ofuscación de JavaScript. Abra una incidencia si hay una característica que cree que debería implementarse.
Versión en línea en deobfuscate.io
Instalar a través de npm install js-deobfuscator
¿Busca un desofuscador específico para Obfuscator.io/javascript-obfuscator? Prueba este repositorio
Si desea discutir/aprender sobre la ofuscación y desofuscación de JavaScript, puede unirse al servidor de Discord.
Desempaqueta matrices que contienen literales (cadenas, números, etc.) y reemplaza todas las referencias a ellos.
Elimina funciones proxy simples (llamadas a otra función), funciones proxy de matriz y funciones proxy aritméticas (expresiones binarias).
Simplifica expresiones aritméticas.
Simplifica la concatenación de cadenas
Cambia el nombre de identificadores hexadecimales ilegibles (por ejemplo, _0xca830a)
Convierte expresiones de miembros calculadas en estáticas y embellece el código
Consulte la parte inferior para ver un ejemplo más complicado con funciones encadenadas.
Antes
const a = ['x20', 'x57x6fx72x6cx64', 'x48x65x6cx6cx6f'];console.log(a[2] + a[0] + un[1]);
Después
console.log('Hola' + ' ' + 'Mundo');
Antes
función a(b, c) { return algunaFunción(b, c);}resultado constante = a(5, 6);
Después
resultado constante = algunaFunción(5, 6);
Antes
función a(b, c) { return c + 2 * b;}resultado constante = a(5, 6);
Después
resultado constante = 6 + 2 * 5;
Antes
función a(b, c) { devolver c + 2 * b;}función b(c, d) { devolver a(c, d);}función c(d, e) { devolver b(d, e);} resultado constante = c(5, 6);
Después
resultado constante = 6 + 2 * 5;
Antes
sea total = 0x2 * 0x109e + -0xc * -0x16a + -0x3234; para (sea i = 0x1196 + 0x97b * 0x3 + -0x2e07; i < -0x95 * -0x38 + -0x1a75 + -0x619; i++) { total += i;}
Después
sea total = 0;for (sea i = 0; i < 10; i++) { total += i;}
Antes
console.log('Él' + 'll' + 'o' + ' Wo' + 'r' + 'ld');
Después
console.log('Hola mundo');
Todas estas funciones se pueden encadenar para simplificar el código.
Antes
const ar = [ 'x48x65x6cx6cx6f', 0x95, 'x20', 0x1a75, 'x57x6fx72x6cx64', -0x53, 'x6cx6fx67' ];const a = función (b, c) { return c + 2 * b; }, b = función (c, d) { devolver a(c, d); }, c = función (d, e) { return b(d, e); };mensaje constante = ar[0] + ar[2] + ar[4];resultado constante = c(ar[1] * 0x38 + ar[3] + 0x619, 0x12 * ar[5] + 0x1a13 + 0x621) ;consola[ar[6]](mensaje + ' ' + resultado);
Después
mensaje constante = 'Hola mundo'; resultado constante = 40106;console.log(mensaje + ' ' + resultado);
configuración de interfaz { matrices: { unpackArrays: boolean; eliminarArrays: booleano; }; funciones proxy: { reemplazarProxyFunctions: boolean; eliminarProxyFunctions: booleano; }; expresiones: { simplificarExpresiones: booleano; eliminarDeadBranches: booleano; }; varios: { embellecer: booleano; simplificarPropiedades: booleano; cambiar el nombre de los identificadores hexadecimales: booleano; };}
Instale el módulo localmente a través de npm install js-deobfuscator
e impórtelo como de costumbre o instale globalmente npm install -g js-deobfuscator
y use la CLI js-deobfuscator
:
> js-desofuscador -h Uso: ejecutar [opciones] Desofuscar un archivo javascript Opciones: -i, --input [archivo_entrada] El archivo de entrada para desofuscar (predeterminado: "input/source.js") -o, --output [output_file] El archivo de salida desofuscado (predeterminado: "output/output.js") -f, --force Si se sobrescribe o no el archivo de salida -h, --help muestra ayuda para el comando>
Alternativamente, utilice la versión en línea en deobfuscate.io.