
Analyse der benutzerdefinierten obfuskierten VM und des Bytecode-Formats von DataDome, die String-Verschlüsselung, S-Box-Chiffren und Browser-Fingerprinting-Signale für die Reverse-Engineering-Ausbildung offenlegt.
DataDome bettet eine benutzerdefinierte VM in ihr Bundle ein, um zu verbergen, was sie eigentlich tun. Ich wurde neugierig und habe es auseinandergenommen. Teile es hier für jeden, der an der gleichen Art von Reverse-Engineering-Rätsel interessiert ist.
DataDome liefert ein stark obfuskiertes JavaScript-Bundle an Ihren Browser. Darin befindet sich eine benutzerdefinierte virtuelle Maschine – sie kompilieren ihre eigentliche Fingerprinting-Logik in ein privates Bytecode-Format und führen sie dann zur Laufzeit in dieser VM aus. Diese Analyse der neuesten Version zum Zeitpunkt der Erstellung.
In diesem Repo ist kein DataDome-Code enthalten – nur meine eigene Analyse und Werkzeuge.
Bitte lesen Sie den Hinweis am Ende, bevor Sie dies verwenden.
Sobald man den Bytecode lesen kann, fallen einige Dinge auf.
Verschlüsselung von Zeichenketten. Alle Zeichenketten sind in einem einzigen verschlüsselten Blob am Anfang des Bytecode gespeichert. Jede Zeichenkette wird zur Laufzeit mit einem pro Eintrag variierenden XOR-Schlüssel in Kombination mit einem im Tabellenkopf eingebauten Seed decodiert. Selbst das Lesen der Rohbytes verrät Ihnen also nichts, ohne den Seed zu kennen.
S-Box-Tabellen überall. Die ersten ~20KB Bytecode bestehen fast vollständig aus PUSH_N_IMM + ARRAY_FROM_STACK-Sequenzen, die 256-Byte-Nachschlagetabellen aufbauen. Dies sind S-Boxen, wahrscheinlich für eine benutzerdefinierte Chiffre oder AES-Runden, die zum Hashen der gesammelten Signale vor dem Senden verwendet werden.
Fingerprinting-Signale, die Sie nach dem Decodieren der Zeichenketten tatsächlich sehen können:
webdriverDieses Projekt existiert rein, um die Neugier zu befriedigen, wie benutzerdefinierte VM-Obfuskation in der Praxis funktioniert. Es ist eine Lernübung im Reverse Engineering, kein Werkzeug zur Umgehung von Bot-Erkennung.
Was Sie mit diesem Wissen tun, liegt bei Ihnen.