Ich werde nicht versuchen, für Sie zu übersetzen, denn wie @LightnessRacesinOrbit sagte, ist das eine große Aufgabe. Was ich vorschlagen würde, ist erstens, es in mehrere Zeilen aufzuteilen, indem man sie durch Semikolons trennt, und dann vielleicht die Variablen in etwas umzubenennen, das leichter zu unterscheiden ist.
Dieser Code wird als verschleierter Code bezeichnet und ist so konzipiert, dass er so unverständlich wie möglich ist. Die Verwendung verschiedener Variablen wie _
, __
, ___
usw. macht es einfach schwer, sich zu merken, was jeder einzelne enthält. Teilen Sie es auf und benennen Sie es um, und wenn nötig, fügen Sie einfach eine Warnung zwischen jede Anweisung ein, um zu sehen, was die letzte Operation getan hat (oder noch besser, führen Sie sie in einem Debugger usw. aus), dann können Sie sehen, wie es funktioniert.
E :
Eigentlich ist es nicht so schlimm, wie ich dachte...
Es richtet die folgenden Konstanten zunächst mit einigen einfachen mathematischen Sachen ein, sobald es die 0 von []|[] erhalten hat. Ich nehme an, es macht diese komplizierter, um die Verschleierung hinzuzufügen...
_ = 1
$ = 0
__ = 2
___ = 3
____ = 4
_____ = 5
Dann wird folgendes verwendet, um ein String/Zeichen-Array zu erhalten, aus dem einige Zeichen ausgelesen werden können:
({}+"") - [object Object]
({}[$]+"") undefined
(($!=$)+"") false
(($==$)+"") true
Die letzten Dinge sind dann nur noch die Verkettung dieser Zeichenketten, um zu erhalten:
$$ - constructor
$$$ - alert
$_$ - cool code
Die letzte Zeile verwendet dann irgendeine Magie, die mir nicht ganz klar ist, um dann die Alarmfunktion aufzurufen... Ich denke, dass sie möglicherweise den Konstruktor eines Objekts oder etwas Ähnliches umschreibt. Das ist das Einzige, bei dem ich nicht ganz sicher bin...
Endbearbeitung:
Ich habe den Zauber herausgefunden.
($)['constructor']['constructor']
scheint Function() zu sein, und wenn man sie mit einem String-Argument aufruft, scheint sie eine anonyme Methode zu erstellen, die auf diesem String basiert. Die abschließenden Klammern rufen dann das anonyme Mitglied auf, das, wenn Sie bis hierher gefolgt sind, den Alarm aufruft.