Punkbuster gibt es nur, um Betrug zu verhindern, und dennoch ist Betrug in Punkbuster-fähigen Spielen weit verbreitet. Modern Warefare 2 ist ernsthaft vom Endbenutzer gesperrt, der seinen eigenen Server betreibt oder Modifikationen vornimmt, und das Betrügen geschieht ständig.
Was kann in einem Multiplayer-Spiel, in dem jeder Client auf einem PC ausgeführt wird, getan werden, um das Betrügen zu reduzieren oder zu eliminieren?
multiplayer
anti-cheat
security
kevin42
quelle
quelle
Antworten:
Es hängt davon ab, wie sie schummeln, sich auf eine der wichtigsten Arten konzentrieren, Cheats zu erstellen, andere Prozesse in Ihre Anwendung einzufügen und diese zu ändern. Sie können alle anderen Prozesse auflisten und ihre Speichermanipulationsmethoden sowie ihre Tastatur- / Mausemulation einbinden Methoden.
Wallhacks werden in der Regel durch Einfügen von Code zwischen Ihrem Prozess und den DirectX / GL-Bibliotheken geschrieben, um die Transparenz der Materialien so einzustellen, dass sie durchschaut werden. Sie können Ihrem Scenegraph / Culling-System Code hinzufügen, um andere Spieler / nützliche Entities, die sich hinter Mauern befinden, nicht zu zeichnen (um Betrug auf diese Weise zu verhindern).
Wenn Sie im Multiplayer-Modus verhindern möchten, dass Pakete zwischen Client / Server geändert werden, können Sie eine Prüfsumme der über einen eigenen Algorithmus gesendeten Daten erstellen und diese auf der anderen Seite überprüfen. (Sie werden dies wahrscheinlich ohnehin für verschiedene Qualitätssicherungszwecke tun).
Dasselbe gilt für die meisten speicherinternen Ressourcen. Wenn Sie zu Beginn eines Frames eine Prüfsumme erstellen und diese in verschiedenen Phasen überprüfen, kann dies zu einer recht praktischen Erkennung von Speichermanipulationen führen.
Dies ist ein ziemlich kompliziertes Thema, aber hoffentlich weist es Sie in eine vage akzeptable Richtung.
quelle
Im Extremfall vertrauen Sie dem Kunden grundsätzlich nie. Bei Spielen wie MMOs führen Benutzer ihre Server nicht aus, und jede Gameplay-Logik wird serverseitig behandelt. Geben Sie dem Kunden niemals die Berechtigung, "Ich habe X Gesundheit" oder "Ich habe X Munition" usw. zu sagen.
quelle
Wenn Sie ein System haben, bei dem die Logik teuer ist und das hauptsächlich auf dem Client ausgeführt werden muss, um Serverzyklen zu sparen, können Sie ein probabilistisches Cheat-Erkennungssystem implementieren. Alle paar Minuten werden einige andere Spieler ausgewählt, um den Server genau zu überprüfen und die Konsistenz zu überprüfen. Da Betrüger ihr Betrügen selten auf kurze und seltene Zeiträume beschränken, werden sie irgendwann erwischt.
Ein weiterer Vorteil ist, dass sie keinen schnellen Turnaround-Zyklus für die Entwicklung haben. Wenn der Server durchschnittlich 10 Stunden Spielzeit benötigt, um auf Sie aufmerksam zu machen, ist dies jedes Mal ein Turnaround-Zyklus von 10 Stunden, wenn Sie es sehen möchten wenn etwas geklappt hat. Und wenn es tut Arbeit, es ist sogar noch mehr , weil sie nicht wissen , ob der Server sich einen Daumen-up gegeben hat oder einfach nicht zu ihnen herumgesprochen.
quelle
Es gibt auch viele Arten von Zielhilfehacks für Ego-Shooter, die sich auch in Aufrufe der Grafikbibliothek einbinden lassen. OGC Hook für Counter-Strike / HL1 hatte eine Vielzahl von Optionen, die über die transparente Gestaltung von Wänden hinausgingen.
Wenn die Ortsinformationen für Feinde zu einem bestimmten Zeitpunkt an eine untergeordnete Bibliothek mit allgemein verfügbarem Code weitergeleitet werden, können diese Anrufe abgehakt werden und die Daten zu Ort, Maßstab, Drehung usw. können verwendet werden, um den besten Vektor für das Abfeuern genau zu berechnen auf diesen Feind. Anti-Cheat-Systeme wie PunkBuster beinhalten neben der Speicher- und Prozessüberwachung häufig eine heuristische Erkennung (wie oft erhält dieser Spieler einen perfekten Schuss, wie oft drehen sie sich um 180 Grad, um einen One-Shot-Kill zu erzielen usw.).
Letztendlich ist die Aufgabe, Betrug in Multiplayer-Spielen zu verhindern, ein Katz- und Mausspiel. Wenn neue Cheats entwickelt werden, werden neue Anti-Cheat-Methoden erstellt und dann neue Cheats erstellt, um die neuen Anti-Cheat-Technologien zu umgehen.
Wie Tetrad in seiner Antwort sagte, besteht die einzige feste Regel für "Spielesicherheit" darin, dem Kunden so wenig Informationen wie möglich zur Verfügung zu stellen und dem Kunden so wenig wie möglich zu vertrauen. Verschiedene Arten von Spielen haben unterschiedliche Anforderungen, die sich jedoch darauf auswirken können, wie gut Sie diese Regeln einhalten können.
In einem FPS-Spiel ist es oft nicht möglich, dem Client nur Daten zur Verfügung zu stellen, die er genau zu diesem Zeitpunkt wissen sollte, da das Gameplay so schnell ist. Wenn Sie dem Kunden nicht sagen, dass sich ein Feind um die Ecke befindet und der Spieler um diese Ecke geht, müssen Sie ihm diese Informationen plötzlich innerhalb von Millisekunden zusenden. Andernfalls besteht die Gefahr, dass der Spieler von einem Feind getötet wird, den er nicht hat jemals sehen.
Die einzige "Lösung" für diese Probleme, die derzeit verfügbar ist, ist wahrscheinlich OnLive. Da dieser Dienst nur Audio- und Videoinhalte von einem Client bereitstellt, der sicher im Rechenzentrum ausgeführt wird, besteht das einzige Mittel zum Betrügen darin, eine menschliche KI zu erstellen, die den eingehenden Videostream analysieren und darauf basierend Maßnahmen ergreifen kann - eine Aufgabe, die nur wenige benötigen. wenn überhaupt, sind Betrüger bis zu.
quelle
Alle Antworten oben sind großartig, aber ich werde ein weiteres Stück hinzufügen:
Einige Spiele verfügen über eine sehr solide Wiedergabefunktion, mit der Sie die Wiedergaben aller Spiele nach dem Ende des Spiels in einem kompakten Format speichern und auf verschiedene Arten wiedergeben können - verschiedene Spielerperspektiven, Benutzeroberfläche für Echtzeitstatistiken usw.
Beispiel, mit dem ich sehr vertraut bin: Starcraft 2. Eine der Möglichkeiten, mit denen Blizzard Hacker blockiert, besteht darin, Betrugsbeweise als Spielwiederholungen zu erhalten.
Ein Beispiel für die Verwendung in einem FPS wäre: Wenn Sie ein Spiel gespielt haben und den Verdacht haben, dass die andere Person mit einem Wall-Hack betrogen hat, sehen Sie sich die Wiederholung an und sehen dann, dass dies in seiner normalen Wiederholungsvision möglicherweise nicht möglich war dich gesehen und eine Granate über die Ecke geworfen, oder was auch immer.
Sie melden ihn dann mit der Wiederholung, und wenn die Beweise gegen ihn gut genug sind, ist er verboten. Soweit ich weiß, nehmen Unternehmen, die dies tun, vor dem Verbot nur ernsthafte Beweise oder mehrere Beweise für dasselbe Verhalten entgegen.
Es handelt sich also nicht um eine Anti-Debugging-Technik, sondern um ein Benutzerberichtssystem, das einen bequemen, von Menschen unterstützten Nachweis des Betrugs ermöglicht.
quelle
Dies ist möglicherweise keine vollständige Antwort, aber ich habe hier einige Eingaben. Eine der besten Möglichkeiten, um Betrug zu verhindern, ist die Verschleierung oder die Verwendung von C / C ++. Dadurch wird verhindert, dass Benutzer den Clientcode ändern.
quelle