Ein einfacher, aber leistungsstarker Deobfuscator zum Entfernen gängiger JavaScript-Verschleierungstechniken. Öffnen Sie ein Problem, wenn es eine Funktion gibt, die Ihrer Meinung nach implementiert werden sollte.
Online-Version unter deobfuscate.io
Installation über npm install js-deobfuscator
Suchen Sie nach einem Deobfuscator speziell für Obfuscator.io/javascript-obfuscator? Probieren Sie dieses Repo aus
Wenn Sie über JavaScript-Verschleierung und -Entschleierung diskutieren/lernen möchten, können Sie dem Discord-Server beitreten
Entpackt Arrays, die Literale (Strings, Zahlen usw.) enthalten, und ersetzt alle Verweise darauf
Entfernt einfache Proxy-Funktionen (Aufrufe einer anderen Funktion), Array-Proxy-Funktionen und arithmetische Proxy-Funktionen (binäre Ausdrücke).
Vereinfacht arithmetische Ausdrücke
Vereinfacht die Zeichenfolgenverkettung
Benennt unlesbare hexadezimale Bezeichner um (z. B. _0xca830a)
Konvertiert berechnete in statische Member-Ausdrücke und verschönert den Code
Unten finden Sie ein komplizierteres Beispiel mit miteinander verketteten Features.
Vor
const a = ['x20', 'x57x6fx72x6cx64', 'x48x65x6cx6cx6f'];console.log(a[2] + a[0] + a[1]);
Nach
console.log('Hallo' + ' ' + 'Welt');
Vor
function a(b, c) { return someFunction(b, c);}const result = a(5, 6);
Nach
const result = someFunction(5, 6);
Vor
Funktion a(b, c) { return c + 2 * b;}const result = a(5, 6);
Nach
const Ergebnis = 6 + 2 * 5;
Vor
Funktion a(b, c) { Rückkehr c + 2 * b;}Funktion b(c, d) { Rückkehr a(c, d);}Funktion c(d, e) { Rückkehr b(d, e);} const result = c(5, 6);
Nach
const Ergebnis = 6 + 2 * 5;
Vor
let total = 0x2 * 0x109e + -0xc * -0x16a + -0x3234;for (let i = 0x1196 + 0x97b * 0x3 + -0x2e07; i < -0x95 * -0x38 + -0x1a75 + -0x619; i++) { total += ich;}
Nach
let total = 0;for (let i = 0; i < 10; i++) { total += i;}
Vor
console.log('He' + 'll' + 'o' + ' Wo' + 'r' + 'ld');
Nach
console.log('Hallo Welt');
Alle diese Funktionen können miteinander verkettet werden, um den Code zu vereinfachen.
Vor
const ar = [ 'x48x65x6cx6cx6f', 0x95, 'x20', 0x1a75, 'x57x6fx72x6cx64', -0x53, 'x6cx6fx67' ];const a = function (b, c) { return c + 2 * b; }, b = function (c, d) { return a(c, d); }, c = function (d, e) { return b(d, e); };const message = ar[0] + ar[2] + ar[4];const result = c(ar[1] * 0x38 + ar[3] + 0x619, 0x12 * ar[5] + 0x1a13 + 0x621) ;console[ar[6]](message + ' ' + result);
Nach
const message = 'Hello World';const result = 40106;console.log(message + ' ' + result);
interface Config { arrays: { unpackArrays: boolean; RemoveArrays: boolean; }; ProxyFunctions: { replaceProxyFunctions: boolean; RemoveProxyFunctions: boolean; }; Ausdrücke: { vereinfachenAusdrücke: boolean; removeDeadBranches: boolean; }; Sonstiges: { verschönern: boolean; simpleProperties: boolean; renameHexIdentifiers: boolean; };}
Entweder das Modul lokal über npm install js-deobfuscator
installieren und wie gewohnt importieren oder global npm install -g js-deobfuscator
und die js-deobfuscator
-CLI verwenden:
> js-deobfuscator -h Verwendung: [Optionen] ausführen Entschlüsseln Sie eine Javascript-Datei Optionen: -i, --input [Eingabedatei] Die zu entschlüsselnde Eingabedatei (Standard: „input/source.js“) -o, --output [output_file] Die deobfuskierte Ausgabedatei (Standard: „output/output.js“) -f, --force Gibt an, ob die Ausgabedatei überschrieben werden soll oder nicht -h, --help zeigt Hilfe für Befehl an>
Alternativ nutzen Sie die Online-Version unter deobfuscate.io