JavaScript-Deobfuscator

Fügen Sie einen Blob von obfuskiertem JavaScript ein, hex-kodierte Strings, einbuchstabige Variablennamen, eine Dekodierschleife am Anfang, und das Tool schält die Schichten ab: Strings unescape, das Lookup-Array inline, Variablen in lesbare Platzhalter umbenennen, triviale Wrapper glätten und das Ergebnis verschönern. Nützlich zur Analyse verdächtiger Snippets, die Sie von einer Seite oder einem eingefügten Pastebin-Link gezogen haben.

So deobfuskieren Sie JavaScript

  1. 1

    Fügen Sie den obfuskierten Quellcode ein

    Minifiziert, gepackt oder von `javascript-obfuscator.io`-Stil-Tools ausgegeben.

  2. 2

    Lassen Sie den Parser es durchlaufen

    String-Arrays werden dekodiert, numerische Sequenzen ausgewertet und tote Codezweige entfernt.

  3. 3

    Wenden Sie die Umbenennung an

    Einbuchstabige `a`/`b`/`c`-Variablen werden in `var1`, `var2` usw. umbenannt, lesbare Platzhalter, nicht unbedingt bedeutungsvolle Namen.

  4. 4

    Verschönern

    Einrücken, neue Zeilen hinzufügen und Code ausgeben, den Sie tatsächlich lesen und verstehen können.

Techniken, die der Deobfuscator umkehrt

Obfuskation Umkehrung
Hex-escaped String-Literale Dekodieren \x48\x69 zurück zu "Hi"
Unicode-escaped Bezeichner \u006E\u0061\u006D\u0065 -> name
String-Array + Dekodierfunktion Inline das Array, Dekodierer zur Parse-Zeit aufrufen
Numerische Konstantenfaltung 0x1F3 + 5 -> 504
eval(...) Wrapper Heben Sie den inneren Code auf die oberste Ebene
Kontrollfluss-Glättung (Zustandsmaschine) Erkennen Sie den Switch-Case, rekonstruieren Sie den Fluss
Toter Code / nutzlose Ternären Entfernen Sie Zweige, die niemals ausgeführt werden
_0x1a2b3c()-Stilnamen Ersetzen durch inkrementierende var1, var2

Grenzen: was das Tool nicht tut

  • Wiederherstellung ursprünglicher Variablennamen. Sobald userEmail in a umbenannt wird, kann kein Tool es zurückerraten. Sie erhalten eine lesbare Struktur, nicht die ursprüngliche Semantik.
  • Entpacken benutzerdefinierter Virtualisierer. Schwergewichtige kommerzielle Obfuskatoren (JScrambler, Unternehmensstufen von Obfuscator.io) führen eine benutzerdefinierte VM ein, die Bytecode interpretiert. Das Überwinden dieser erfordert manuelles Reverse Engineering.
  • Ausführen beliebigen Codes. Der Deobfuscator wertet reine Ausdrücke statisch aus. Er wird keine externen Ressourcen abrufen, DOM-Elemente erstellen oder mit dem Netzwerk kommunizieren.

Typische Anwendungsfälle

  • Sicherheitsforschung: Zerlegen eines verdächtigen Skripts, das in einer E-Mail angekommen ist oder von einem kompromittierten CDN bereitgestellt wurde.
  • Code-Archäologie: Wiederherstellung von Legacy-Code, bei dem das einzige überlebende Artefakt ein minifiziertes Bundle ist.
  • Lernen: Verstehen, was eine Obfuskation auf Tutorial-Niveau tatsächlich im Hintergrund tut.

Sicherheit und Ethik

Führen Sie niemals nicht vertrauenswürdiges JavaScript in einem Browser-Tab aus, der in etwas Wichtiges eingeloggt ist, der Code kann Cookies lesen, interne APIs aufrufen und den Zustand exfiltrieren. Der Deobfuscator selbst arbeitet mit dem Quelltext; er führt den Code, den Sie einfügen, nicht aus.

Deobfuskieren Sie nur Code, den Sie autorisiert sind zu analysieren. Reverse Engineering von lizenzierten Software kann in Ihrer Gerichtsbarkeit eingeschränkt sein.

Häufig gestellte Fragen

Nein. Sobald der Obfuskator userEmail in _0x1a2b3c umbenennt, geht der ursprüngliche Name verloren. Der Deobfuscator gibt Ihnen lesbare Platzhalter (var1, var2) und die korrekte Struktur, aber nicht die ursprünglichen semantischen Namen.

Nein. Es analysiert den Code als AST und wendet statische Transformationen an. Reine Ausdrücke (wie 0x1F3 + 5) werden gefaltet, aber nichts berührt das Netzwerk, Cookies oder das DOM.

Ja, aber Bundler-Ausgaben sind minifiziert und nicht absichtlich obfuskiert, sodass das Ergebnis nur verschönerter Code mit wiederhergestellten Modul-Wrappern ist. Quellkarten, wenn separat verfügbar, geben Ihnen viel bessere Namen.

Schwere kommerzielle Tools (Enterprise JScrambler, benutzerdefinierte VMs) führen einen Bytecode-Interpreter ein, den die statische Analyse nicht auflösen kann. Das Tool wird die oberflächliche Schicht erfassen, aber die Kernlogik bleibt ohne manuelles Reverse Engineering undurchsichtig.

Verwandte Tools

Tool in anderen Sprachen verfügbar