Was dieses Tool rückgängig macht
Viele JavaScript-Verschleierer — auch der auf dieser Seite — schreiben Code mit einer kleinen Menge mechanischer, rein statischer Transformationen um: Sie verschieben jedes String-Literal in ein einziges Array und ersetzen jede Verwendung durch einen Aufruf einer Getter-Funktion, escapen normale Zeichen als \xNN- oder \uNNNN-Sequenzen, expandieren einfache Arithmetik zu gleichwertigen, aber längeren Ausdrücken, verpacken echten Code in ein immer-wahres oder immer-falsches if, und schreiben a.b als a['b'] um. Dieses Tool macht genau diese fünf Dinge rückgängig:
- String-Array-Inlining — findet
var _s = ["foo", "bar"]; function _g(i){ return _s[i]; }und ersetzt jeden Aufruf der Form_g(0), dessen Index eine literale Zahl ist, durch den echten String, und entfernt anschließend Array und Funktion, falls sie sonst nirgends verwendet werden. - Escape-Dekodierung — zeigt
\x48\x69alsHistatt in escaped Form. - Konstantenfaltung — macht aus
1 + 2eine3, aus"a" + "b""ab"und ähnliche literale Arithmetik, wobei alles vermieden wird, was Raten erfordern würde (z. B. Division durch ein literales Null). - Entfernen toter Zweige —
if (true) { A } else { B }wird zu einfachA; einwhile (false) {}verschwindet vollständig. - Eckige Klammer zu Punkt —
obj['name']wird zuobj.name, wennnameein gültiger Bezeichner ist.
Was es nicht macht
Dies ist statisches Musterabgleichen über einem AST, kein allgemeiner Deobfuskierer. Es führt keinerlei Code aus, kann also keinen eval-basierten Lader entpacken, kein undurchsichtiges Prädikat lösen, das von einem Laufzeitwert abhängt, und keine Kontrollflussverschachtelung über den obigen trivialen literalen if/while/Ternär-Fall hinaus rückgängig machen. Variablennamen bleiben unverändert — _0x1a2b bleibt _0x1a2b. Passt Ihre Datei nicht exakt zur Form Array-plus-Getter-Funktion, meldet diese Stufe einfach null inline-ersetzte Aufrufe, statt ein anderes Muster zu erraten.
Wie es funktioniert
Der Code wird mit acorn in einen AST geparst, mit handgeschriebenen Transformationen durchlaufen und umgeschrieben, die nur eingreifen, wenn ein Wert bereits nachweislich literal ist, und mit astring neu erzeugt. Nichts wird an einen Server gesendet: Parsen und Umschreiben geschehen vollständig in Ihrem Browser.
Verwendung
JavaScript in den Editor einfügen oder eintippen und ausführen. Die Zusammenfassung zeigt genau, wie oft jede Stufe ausgelöst wurde, damit Sie sehen, was sich geändert hat und was nicht. Ergebnis kopieren oder als .js-Datei herunterladen.
Tiny Online Tools







