Reverse Engineering der obfuskierten TikTok-VM
(github.com/LukasOgunfeitimi)- TikTok verwendet eine virtuelle Maschine (VM), um Sicherheits- und Obfuskationsschichten zu verstärken
- Dieses Projekt reverse-engineert diese webbasierte virtuelle Maschine (VM), um Methoden zur Sicherheitsumgehung und zur Erzeugung von Request-Signaturen zu analysieren
- Das zentrale Ziel ist
webmssdk.js, das VM-Code enthält, der an der Erzeugung von X-Bogus und _signature beteiligt ist - Das Projekt hebt die JavaScript-Obfuskation auf, analysiert und dekompiliert den Bytecode der TikTok-VM und stellt ihn auf einer sinnvollen Funktionsebene wieder her
- Dadurch wird sogar die Erzeugung von
_signaturemöglich, die für Requests mit Authentifizierung erforderlich ist, etwa beim Schreiben von Kommentaren - Die VM ist ausgefeilt konzipiert und verfügt über fortgeschrittene Bytecode-Strukturen wie Schleifen, Ausnahmebehandlung und Scope-Verwaltung
Überblick über das Reverse-Engineering-Projekt der TikTok-VM
- TikTok verwendet eine obfuskierte virtuelle Maschine (VM) auf JavaScript-Basis, um Client-Request-Signaturen zu erzeugen, Daten zu schützen und die Umgehung von Sicherheitsmechanismen zu verhindern
- Dieses Projekt zielt darauf ab, durch Deobfuskation und Dekompilierung der Datei
webmssdk.jsden Signaturalgorithmus (X-Bogus, _signature) zu rekonstruieren
Analyse der Kernfunktionen und Struktur
Deobfuskation
-
TikTok obfuskiert Strings, indem sie über Arrays und Klammernotation indiziert werden
r[Gb[301]](Gb[57], e) -
Die Entschlüsselung des Arrays
Gberfolgt durch Ersetzung anhand einer festen String-Tabelle -
Nachdem dieses Muster vollständig dekodiert wurde, wird es in besser lesbare Punktnotation (dot notation) umgewandelt
Entfernung der Obfuskation von Funktionsaufrufen
-
Funktionen werden im Array
Abgespeichert und per Index aufgerufenAb[31](args) → Ab31(args) -
Mithilfe eines AST-Parsers werden diese in einzelne Funktionen aufgeteilt, benannt und auch die Aufrufweise entsprechend angepasst
Entschlüsselung des Bytecodes
-
Der Bytecode ist komplex aufgebaut und mit base64 + gzip + leb128 + XOR verschlüsselt
r = XOR-Schlüssel berechnen Dekomprimierung und leb128-Dekodierung zur Rekonstruktion des Befehlssatzes -
Jede Funktion basiert auf Bytecode; über den Dekompilierungsprozess wird die Funktionsstruktur wiederhergestellt
Merkmale der TikTok-VM
- Verschachtelte Funktionen, Scope-Verwaltung, Ausnahmebehandlung und bedingte Verzweigungen machen sie fortgeschrittener als gewöhnliche VMs
- Jede Instruktion ist nicht mit
switch, sondern alsif-else-Struktur getarnt → dies wird in eine switch-case-Form zurückgeführt
Dekompilierung und Debugging
- Jede Bytecode-Funktion wird auf das Niveau normaler JS-Funktionen dekompiliert und in Form von VMxxx.js gespeichert
- Beispiel: VM223 ist ein Zufallszeichengenerator
- Das Debugging erfolgt in Chrome mit Tampermonkey + einer CSP-Bypass-Erweiterung, wobei das ursprüngliche JS durch dekompilierte Dateien ersetzt wird
Analyse der Signaturerzeugung
Struktur der Request-Header
- Bei Server-Requests werden drei zusätzliche Header eingebunden
msToken: wird vom Server ausgegeben und bei jedem Request neu erzeugtX-Bogus: wird inwebmssdk.jsrequestbasiert erzeugt_signature: wird für Requests benötigt, die Authentifizierung erfordern, und vonwebmssdk.jserzeugt
- Für gewöhnliche Requests zum Abrufen von Benutzerinformationen wird nur
X-Bogusbenötigt - Authentifizierte Requests wie das Schreiben von Kommentaren benötigen zusätzlich
_signature
Ablauf der VM-Funktionen
- VM86: Einstiegspunkt für die gesamte Signaturerzeugung
- VM113: Erzeugung von
X-Bogus - VM189: Erzeugung von
_signature - Mit signer.js lässt sich dieser Ablauf nachbilden, um URLs zu signieren
Zusätzliche Schutzmechanismen
- Maus-Tracking: VM120
- Umgebungsprüfung: VM265
- Dies sind jedoch allesamt clientseitige Schutzmechanismen ohne Serverkommunikation → für die Signaturerzeugung können sie ignoriert werden
Hinweise und Wartung
- Die TikTok-VM wird fortlaufend aktualisiert → bei Strukturänderungen ist eine neue Dekompilierung erforderlich
- Dieses Projekt eignet sich vor allem für Sicherheitsanalyse, Forschung zu Bot-Abwehrtechniken und Bildungszwecke
1 Kommentare
Hacker-News-Kommentare
Ich nutze häufig eine Streaming-Website, die oft stockt und Fehlermeldungen anzeigt. Ich analysiere den JavaScript-Code, um eine Lösung zu finden, und ein KI-Assistent war eine große Hilfe dabei, obfuskierten Code zu verstehen
Man kann TikTok normal verwenden, indem man die im Web ausgeführten JavaScript-Dateien durch deobfuskierte Dateien ersetzt
Es wirkt, als würde sehr viel Aufwand betrieben, um den Code zu verbergen. Das behindert die Optimierung des Programms, erhöht die Komplexität und kann zu mehr Fehlern führen
Ich habe in meinen Lesezeichen Beispiele für Reverse Engineering der TikTok-VM gefunden
Ich lese immer gern Beiträge über Reverse-Engineering-Bemühungen, und dieser Artikel war leicht nachzuvollziehen
Es gibt keinen legitimen Grund dafür, dass eine Social-Media-Plattform ein solches Maß an Obfuskation einsetzt
Frage dazu, was mit VM gemeint ist
Frage, ob es sich um eine mit Lynx zusammenhängende VM handelt
Frage, ob es auch in der iOS-App eine VM gibt
Ich habe eine Zeit lang an TikTok-Bots gearbeitet, und es war sehr schwierig