
Analyse de la VM personnalisée obfusquée et du format de bytecode de DataDome, révélant le chiffrement de chaînes, les chiffrements par boîte-S et les signaux d'empreinte numérique de navigateur pour l'éducation à la rétro-ingénierie.
DataDome intègre une VM personnalisée dans son bundle pour masquer ce qu'elle fait réellement. Par curiosité, je l'ai démontée. Je la partage ici pour toute personne intéressée par le même type de puzzle de rétro-ingénierie.
DataDome envoie à votre navigateur un bundle JavaScript fortement obscurci. À l'intérieur se trouve une machine virtuelle personnalisée — ils compilent leur logique réelle de collecte d'empreintes sous un format de bytecode privé, puis l'exécutent dans cette VM au moment de l'exécution. Cette analyse porte sur la dernière version au moment de la rédaction.
Aucun code de DataDome n'est inclus dans ce dépôt — seulement ma propre analyse et mes outils.
Veuillez lire la note en bas avant d'utiliser ceci.
Une fois que vous pouvez lire le bytecode, quelques éléments ressortent.
Chiffrement des chaînes. Toutes les chaînes sont stockées dans un seul blob chiffré en haut du bytecode. Chaque chaîne est décodée à l'exécution à l'aide d'une clé XOR par entrée combinée à une graine intégrée dans l'en-tête de la table. Ainsi, même la lecture des octets bruts ne vous apprend rien sans connaître la graine.
Tables S-box partout. Les premiers ~20 Ko du bytecode sont presque entièrement constitués de séquences PUSH_N_IMM + ARRAY_FROM_STACK construisant des tables de correspondance de 256 octets. Ce sont des S-box, probablement pour un chiffrement personnalisé ou des tours AES utilisés pour hacher les signaux collectés avant de les envoyer.
Signaux d'empreinte que vous pouvez réellement voir après avoir décodé les chaînes :
Ce projet existe uniquement pour satisfaire la curiosité sur le fonctionnement pratique de l'obscurcissement par VM personnalisée. C'est un exercice d'apprentissage en rétro-ingénierie, pas un outil pour contourner la détection de bots.
Ce que vous faites de ces connaissances est de votre responsabilité.