Moin zusammen,
ich versuche mal in ein paar Sätzen herunterzuschreiben worum es in der gesamten Diskussion rund um Kernel Level Anti-Cheat ala Vanguard geht, was es ist, warum es zum Teil notwendig ist und was die Bedenken sind... Aber fangen wir mal ganz von Anfang an an...
Um die Diskussion zu verstehen fangen wir erstmal bei ein paar "Grundlagen" an. Wie funktioniert so ein Betriebssystem wie Windows eigentlich? Was ist dieses User Mode und Kernel Mode von dem alle reden.
Kernel-Level und User-Level sind wie zwei verschiedene Ebenen in einem Computer. Mit unterschiedlichen Berechtigungen. Stell dir vor, dein Computer ist wie ein Haus.
Erstmal: Wie funktioniert ein Cheat grob?
Wie man im Bild sehen kann sieht hier CS ein wenig "anders" aus als es die meisten wohl gewohnt sind. Wir sehen z.b. Boxen, die andere Spieler hinter Wänden markieren und deren HitPoints, obwohl wir das gar nicht wissen dürften. Aber wie funktioniert das denn genau?
Jedes Programm, Spiel etc. speichert Sachen im Arbeitsspeicher, um damit zu arbeiten und dir diese auch anziegen zu können. Das ist z.B. der gesamte Text der hier angezeigt wird, die Webseiten und deren Inhalt, die geöffnet sind und natürlich auch Informationen aus dem Spiel. Irgendwo versteckt (und für einen Menschen nicht so leicht lesbar) steht so im Arbeitsspeicher wo sich ein Spieler gerade auf der Karte befindet (z.B. als Koordination X,Y,Z) oder auch wie viele Lebenspunkte sie haben
Jedes Programm hat seinen zugewiesenen Bereich im Arbeitsspeicher. Nehmen wir an, CS fordert 100 MB RAM an (auch hier: Syscalls um den Speicher zu bekommen). Innerhalb dieses Speicherbereichs sind alle relevanten Spieldaten gespeichert.
Allerdings hält dich wenig davon ab einfach mal in den Arbeitsspeicher von einem Programm rein zu schauen oder alles zu durchsuchen. Unser Programm fragt dann Windows einfach "Hey, ich möchte gern den Arbeitsspeicher von CS lesen" und in der Regel kannst du das dann einfach tun und so versuchen selbst herauszufinden, wo jetzt genau steht, welcher Gegner wo ist.
(Vielleicht hat der ein oder andere schonmal mit Cheat Engine herumgespielt - nichts anderes ist das)
Mittlerweile haben viele "Hacker" Zeit investiert, um herauszufinden, wo sich die Informationen, wie die Koordinaten eines Spielers, im Arbeitsspeicher befinden (z.b. von den 100MB befinden sich alle Infos für Gegner 1 im 51. MB , Gegner 2 bei 52MB usw. ).
Diese können diese dann ausgelesen und angezeigt werden. Dieses anzeigen können dann diese Boxen sein, deren Position auf dem Bildschirm mit ein wenig Mathematik errechnet werden können.
Das ganze klingt ja zu schön um wahr zu sein! Die Möglichkeit, dass jeder den Arbeitsspeicher eines Spiels auslesen kann, stellt damit ja eine große Herausforderung für die Fairness von Spielen dar.
Aber wie versuchen Firmen das ganze zu unterbinden, wenn jeder einfach so Arbeitsspeicher lesen kann?
Zum einen "passiv", indem es Cheatern schwer gemacht wird, Informationen im Arbeitsspeicher zu finden. Dazu gehört das Verschleiern oder Verändern der Art und Weise, wie Daten im Arbeitsspeicher gespeichert sind. Beispiel: indem zerstückelt wird, wo sich die einzelnen Koordinaten eines Spielers befinden
Zum anderen "aktiv" mit Programmen, die sicher stellen, dass keine Cheats laufen und Dinge mit dem Spiel machen
Ein Anti-Cheat macht z.B. die folgenden Dinge:
Anti Cheat Programme funktionieren auf unterschiedliche Weisen:
(veraltetes Beispiel für VAC - hier findet sich anscheinend alter Code - spannend zu lesen! : https://github.com/danielkrupinski/VAC)
Anhand dieser Informationen macht dann ein Anti-Cheat fest, ob ein Spieler cheatet oder nicht. So können oft viele der ganz einfachen und bekannten Cheats schnell erkannt werden.
So wir haben unseren Cheat, unser Spiel hat Anti-Cheat - Das Wettrüsten beginnt!
Wir müssen nun irgendwie um diese Mechanismen herum kommen. Da es unser Cheat ist, ist er bisher niemandem bekannt, daher sollten die einfachen Checks kein Problem sein... Aber was ist mit diesem "Wer greift auf Arbeitsspeicher zu?" Das könnten wir so z.B. umgehen, indem wir uns entweder direkt in CS einhängen oder in ein anderes Programm, welches bereits auf CS zugreift.... Oder wir hängen uns ein und geben dem Anti-Cheat vorgegaukelte Werte zurück.

... Oder wir gehen eine Ebene höher und entwickeln einen "Kernel Level Cheat".
Wir packen also unseren Cheat auf die Ebene des Betriebssystems, in der es wenige Sicherheitskonzepte gibt und es generell einen Vollzugriff auf alles gibt.
Solche Kernel Level Cheats stellen damit einen signifikanten Sprung in der Cheat-Entwicklung dar. Sie operieren direkt im Kern des Betriebssystems, einer Ebene, die normalerweise nur für die essentiellsten Funktionen wie Treiber für Tastatur, Maus oder andere Hardware reserviert ist. Diese tiefere Integration bedeutet, dass sie eine weitreichende Kontrolle über das System haben und somit auch Anti-Cheat-Maßnahmen, die im Usermode laufen, effektiver umgehen können:
Das bedeutet also, dass wir all dieses Auslesen vom Arbeitsspeicher des Spiels in einen eigenen Treiber packen, den wir dann in Windows installieren. Jedes Mal, wenn wir also jetzt wissen wollen, wo sich ein Gegner befindet greifen wir nicht direkt auf den Speicher vom Spiel zu, sondern machen in etwa das gleiche wie, wenn wir eine Datei öffnen wollen: Wir fragen das Betriebssystem bitte mit unserem Treiber zu kommunizieren, der dann das (unbemerkte) Auslesen übernimmt und unserem Cheat dann sagt, wo die Gegner sind.
Allerdings ist das verwenden nicht so einfach, da alle Treiber in der Regel von Microsoft "abgesegnete" sein müssen. Wenn dies nicht so ist, muss man Sicherheitsfeatures auf seinem Rechner deaktivieren.
(Es gibt allerdings hier z.B. auch noch weitere Möglichkeiten wie Sicherheitslücken in bestehenden Treibern zu verwenden und da Sachen hinterherzuladen)
Die Verwendung von solchen Cheats bringt natürlich auch Risiken und Konsequenzen mit sich:
Heutzutage gibt es auch viele private Cheats, die noch viel mehr machen, viel Komplexer sind, und auch noch schwerer erkennbar sind... z.B. so auch Cheats, die in USB-Mäusen drin sind, als Treiber laufen.
Das gleiche Wettrüsten auf Cheat Ebene gibts jetzt auch auf der anderen Ebene - bei den Anti-Cheats
Kernel-Level Anti-Cheats sind wie ein besonders strenger Sicherheitsdienst für dein Computerspiel. Es arbeitet genau so tief im Betriebssystem, also quasi im "Herz" deines Computers, wo es alles ganz genau überwachen kann und Dinge verhindern kann, bevor jemand überhaupt auf z.B. den Speicher vom Spiel zugreifen kann:
Ähnlich wie bei der Verwendung von Kernel Level Cheats bringen Kernel Level Anti-Cheats auch gewisse Bendenken hinsichtlichen Datenschutz und Sicherheit mit sich. Der Unterschied ist hier nur: Anders als bei Cheats müssen alle Spieler diesen Kernel Level Anti Cheat laufen lassen:
Alles in allem: Muss jeder selbst wissen.
Es ist von meiner Sicht aus verständlich, dass ein Anti Cheat auf Kernel Level läuft, da somit viel viel einfacher Cheats erkannt werden können oder auch viele einfacher verhindert werden können.
So komplex wie teilweise die Programme da hinter sind ist das wohl der einfachste/"günstigste" Weg, um das Problem zu 90% zu beseitigen.
Für mich ist das größte Problem (neben der Tatsache, dass ich als Linux nutzer raus bin und zuletzt ein wenig Zeit in ein League-Projekt für Replays reingesteckt habe, welches viel Memory Reading betreibt und das vermutlich nicht mehr gehen wird), dass Vanguard 24/7 läuft.
Ein paar Interessante Sätze
https://youtu.be/wdyHnvZyQYo?si=XlxBlnIo3Es_WnoI&t=337
Spannendes Interview:
https://www.youtube.com/watch?v=AJ9Rfur-w-E
https://www.theregister.com/2020/02/11/forgotten_gigabte_driver_robbinhood/
https://www.trendmicro.com/en_vn/research/22/h/ransomware-actor-abuses-genshin-impact-anti-cheat-driver-to-kill-antivirus.html
https://www.exploit-db.com/exploits/40451
War als Anti Cheat Gedacht - wurde später gerne von Cheatern benutzt, um Cheats im Kernel Level zu entwickeln
https://steamcommunity.com/games/310950/announcements/detail/832427843307776226