# Anti-Cheat-Tool

Ein Anti-Cheat-Tool ist ein Computerprogramm, das erkennen soll, ob ein Spieler im Mehrspieler-Modus eines Computerspiels cheatet (mogelt). Diese Programme verfahren zur Erkennung der Cheats nach verschiedenen Mustern und teilen sich in drei Gruppen (nach Installationstyp) auf.

## Typen von Anti-Cheat-Tools
### Clientseitig (beim Benutzer) als externes Programm

Zum einen kann auf dem Rechner des Spielers selbst ein derartiges Programm installiert werden, das kontinuierlich nachprüft, ob der Spieler einen Cheat benutzt oder einen als Trainer bezeichneten Programmtyp zur Spielerleichterung parallel zum Spiel ausführt. Dies wird gegebenenfalls dem Server, auf dem der betrügende Spieler aktiv ist, mitgeteilt, der daraufhin den Zugang temporär oder sogar permanent sperrt. In drastischen Fällen kann bei Dienstleistern mit mehreren Servern auch eine „globale“ Sperrung für alle Spiele und Server erfolgen.

### Clientseitig (beim Benutzer) integriert

Die für den Spieler wohl beste Lösung ist ein in die Spiel-Engine integriertes Anti-Cheat-Tool, das die Vorzüge des eigenständigen Programms besitzt, aber durch den Anwender nicht separat installiert werden muss – diese Variante wird z. B. bei Valve Anti-Cheat (VAC) in aktuellen Source-Spielen genutzt – diese Methode ist technisch sehr wirksam und erfordert vom Spieler keine zusätzlichen Kenntnisse, im Falle von VAC werden vom Hersteller allerdings sehr wenige Updates bereitgestellt, somit ist der praktische Nutzen dieser Variante sehr gering.

### Serverseitig

Das Anti-Cheat-Tool kann auch ausschließlich auf dem Spielserver installiert sein und die Kommunikation mit dem Client-Rechner des Spielers nach typischen Charakteristika eines Cheats überprüfen. Diese Variante wird insbesondere bei Spielen eingesetzt wo clientseitig kein Schutz vor Cheat-Programmen vorgesehen ist und die Server nicht unter der Kontrolle des Spieleentwicklers liegen, ein Beispiel hierfür ist das Computerspiel Minecraft. Ein weiteres Beispiel für ein serverseitiges Anti-Cheat-Tool ist das Tool Cheating-Death, das für Counter-Strike entwickelt wurde, aber mittlerweile nicht mehr weiterentwickelt wird. Ein anderes Aktuelleres Beispiel ist CVAR-X von steambans.com, das momentan für fast alle Source-Spiele (wie Counter-Strike: Source oder Half-Life 2 Deathmatch) konzipiert ist.

### Client- und Serverseitig

Ein solches Anti-Cheat-Tool wird vom Serveradmin auf dem Server installiert und muss gleichzeitig auch bei allen Clients laufen (Client-Server-Modell). Der Server schickt dann Abfragen an den Client, der diese beantworten muss. Es gibt extern laufende Client/Server-Anticheats, aber auch solche, die im Spiel integriert sind. Ein Beispiel für letzteres ist PunkBuster.

## Funktionsweise

Die genaue Funktionsweise ist für viele Anti-Cheat-Tools nicht öffentlich einsehbar. Damit soll das umgehen der Schutzmaßnahmen erschwert werden.
Signaturbasiert
Ähnlich wie bei einer Virensignatur versucht das Anti-Cheat-Tool auf dem Computer des Nutzers bekannte unerlaubte Cheat-Programme ausfindig zu machen. Dazu werden Dateien auf der Festplatte, des Arbeitsspeichers sowie laufende Programme nach bekannten Cheat-Programmteilen durchsucht. Es können dabei nur bekannte Cheat-Programme erkannt werden so das eine regelmäßige Aktualisierung der Signaturen erforderlich ist.
Integritätsprüfung
Dabei wird versucht unerlaubte Manipulationen am Programmcode und Dateien zu erkennen, indem über den Spieldateien, wichtigen Windows Systemdateien sowie den Dateien des Anti-Cheat-Tools selber eine Prüfsumme gebildet und mit den Prüfsummen der Originaldateien verglichen werden. Dabei kommen Kryptographische Hashfunktion zum Einsatz. Bei fehlgeschlagener Integrität wird das Ausführen des Spiels verhindert und der Spieler erhält eine Fehlermeldung. Wird das Spiel bereits ausgeführt wird der Spieler vom Server geworfen.
Verhaltensprüfung
Diese Art kommt häufig bei serverseitigen Anti-Cheat-Tools zum Einsatz. Dabei werden die Spieleraktionen und die gesendeten Daten zum Server auf Plausibilität geprüft. Es können dabei verschiedene Techniken zum Einsatz kommen:
* Prüfen der Reaktionszeit. Zu schnelle Reaktionen sind ein Hinweis auf unerlaubte Cheats. Das könnte z.b. die nahezu sofortige leerung einer Kiste mit dutzenden verteilten Items sein.
* Aktionsintervall überprüfen: Zu gleichmäßige vom Spieler direkt ausgeführte Aktionen deuten auf einen Bot hin, allerdings können auch andere Cheats wie Autoklicker damit erkannt werden.
* Genauigkeit überprüfen: Zu genaue Aktionen wie zum Beispiel immer perfekte Kopfdrehungen des Ingame Spielers zu einem Punkt der Hitbox des Gegners, obwohl das Spiel keine Zielhilfe anbietet sind ein Hinweis auf Cheats.
* Gültigkeit überprüfen: Ungültige Spieleraktionen die vom Spieler eigentlich nicht durchgeführt werden können, zum Beispiel das Angreifen eines Spielers durch eine solide Wand hindurch können serverseitig erkannt werden.
* Statistische auffälligkeiten herausfinden: Ein Spieler der immer nur Kopftreffer landet oder zu viele Aktionen auf einmal durchführt sticht heraus und könnte auf einen Cheat hindeuten.
Um eine Fehlerkennung zu vermeiden, wird der Spieler vom Anti-Cheat-Tool über einen längeren Zeitraum hinweg beobachtet. Trotzdem ist nicht auszuschließen das ein sehr guter Spieler vom Anti-Cheat fälschlicherweise als Cheater erkannt wird. Auch serverseitige oder clientseitige Überlastungen und Lags können eine Fehlerkennung auslösen.
Honeypot
Mit einem Honeypot können Cheat-Programme dazu gebracht werden sich selbst zu verraten. So wurden 2023 im Spiel Dota 2 durch einen Honeypot 40.000 Cheater erkannt und gesperrt. Dazu wurde ein Datenbereich im Spielclient platziert der im Spiel nie genutzt wird, allerdings im Rahmen eines alten Exploits vom Cheat-Programm ausgelesen wird und sich so selber verrät. Eine weitere Möglichkeit besteht darin für den Spieler nicht wahrnehmbare versteckte Bots in der Nähe des Spielers zu platzieren die für den Client wie echte Gegner wirken. Aimbots die für den Spieler nicht sichtbare Gegner angreifen können so erkannt werden.
Passiv
Für den Spieler verdeckte Informationen die vom Server zum Client gesendet werden können von Cheats ausgelesen und sichtbar gemacht werden. Dazu gehört zum Beispiel die Position von nicht sichtbaren Spielern oder das Anzeigen von eigendlich nicht sichtbaren Informationen wie die Lebensanzeige oder das Inventar von anderen Spielern. Das serverseitige Anti-Cheat-Tool verhindert das solche verdeckten Informationen zum Client gesendet werden oder sendet falsche Informationen womit viele visuelle Cheats wie Wallhack behindert oder gar unmöglich werden.