CS2 Source 2 Engine-Analyse: Perspektive der Cheat-Entwicklung
Wir untersuchen die Source 2-Engine von CS2 für die Cheat-Entwicklung: Entitätsstruktur, Netzwerksynchronisation, Offset-Stabilität und die Positionierung von PX8.2 gegenüber VAC.
Entitätskomponentensystem und Datenschema
In CS2 behält Source 2 jeden Spieler, jede Waffe und jedes Objekt auf der Karte als separate Einheit. Diese Entitäten werden in einer schemabasierten Klassenhierarchie gespeichert; Klassen wie C_CSPlayerPawn enthalten Daten wie Gesundheit, Position, Perspektive und Knochenmatrix als Mitgliedsvariablen. Funktionen wie ESP und Wallhack scannen praktisch diese Entitätsliste und lesen die m_vecOrigin- und m_iHealth-Werte jedes Objekts. Knochendaten werden verwendet, um die Silhouette des Spielers im ESP-Skelett zu zeichnen. Das Verständnis dieser Struktur erleichtert die Vorhersage, welche Daten wie oft aktualisiert werden und welche Offsets sich bei Aktualisierungen am wahrscheinlichsten ändern.
Tick-Rate, Snapshot-Netzwerk und Interpolationsverzögerung
CS2-Server arbeiten standardmäßig mit 64 Ticks und die Spielerpositionen werden bei jedem Tick als Snapshot an den Client gesendet. Auf der Clientseite werden diese Schnappschüsse im Interpolationspuffer gespeichert und die Frames dazwischen werden berechnet und gefüllt, um eine reibungslose Bewegung auf dem Bildschirm zu erreichen. Diese Verzögerung ist bei der Entwicklung von Aimbot und Triggerbot von entscheidender Bedeutung. Zwischen der tatsächlichen Momentanposition des Ziels und der auf dem Bildschirm angezeigten interpolierten Position kann ein Unterschied von mehreren Millisekunden bestehen. Um diesen Unterschied auszugleichen, liest PX8.2 die rohen Snapshot-Daten unabhängig von der Interpolationsschicht vom Server, sodass die Zielberechnung Ergebnisse liefert, die näher an der tatsächlichen Position liegen.
Speicherlesemethoden und Offsetstabilität
Was nach Updates am meisten kaputt geht, sind fest codierte Speicheroffsets. Valve kann mit jedem Patch das Speicherlayout von Klassen ändern. Aus diesem Grund funktionieren Cheats, die einen statischen Offset verwenden, nach dem Update stundenlang nicht mehr. Ein robusterer Ansatz ist das Signaturscannen: Funktions- und Variablenadressen werden bei jedem Start dynamisch gefunden, indem im Codespeicher nach unveränderlichen Bytesequenzen gesucht wird. Diese Methode ist viel resistenter gegen Patches, da Valve die Funktionslogik selten vollständig ändert und normalerweise nur die Speicherreihenfolge verschiebt. In der PX8.2-Architektur werden die meisten Offsets auf diese Weise automatisch neu berechnet.
Interaktion der PX8.2-Architektur mit Engine-Schichten
PX8.2 befindet sich intern im Prozessspeicher und wird direkt im Spielprozess ausgeführt. Bei ESP-Zeichnungen fügt es dem Zeichenzyklus der Grafik-Engine eine Ebene hinzu (Present-Aufruf), bei Radar und Skelett scannt es die Entitätsliste in jedem Frame und bei Aimbot greift es in der Phase ein, kurz bevor der Benutzerbefehl (CUserCmd) erstellt wird. Diese drei Schichten sind so konzipiert, dass sie unabhängig voneinander funktionieren. Wenn einer deaktiviert ist, sind die anderen nicht betroffen. Funktionen wie Triggerbot und Radar werden in separaten Threads behandelt, sodass sie die Leistung der Hauptspielschleife nicht beeinträchtigen, was zu einem geringen FPS-Verlust führt. Wenn eine neue Funktion hinzugefügt werden soll, ist es dank dieses modularen Aufbaus nicht erforderlich, bestehende Schichten neu zu schreiben, sondern nur das entsprechende Modul in Betrieb zu nehmen und zu testen.
Auf die Punkte folgen VAC und Safe Design
VAC sucht regelmäßig nach bekannten Cheat-Signaturen, verdächtigen Speicherbereichen und häufig verknüpften API-Aufrufen. Viele minderwertige Cheats sind leicht zu erkennen, da sie berüchtigte DirectX-Hookpoints verwenden. Die PX8.2-Architektur setzt stattdessen auf weniger überwachte interne Aufrufpunkte und ändert die Speichersignatur mit jeder Version. Dieser Ansatz bildet die technische Grundlage dafür, warum CSCodep seit über 3 Jahren nicht mehr von VAC erkannt wurde. Natürlich kann keine Software eine hundertprozentige Garantie geben; Daher ist es Teil des Risikomanagements, die Wartezeit nach dem Update einzuhalten und zusätzliche Schichten wie den HWID-Spoofer aktiv zu halten.