Was sind einige Möglichkeiten, um Betrug in Online-Multiplayer-Spielen zu verhindern oder zu reduzieren? [geschlossen]

19

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?

kevin42
quelle
strlen.com/trusted-communities
Schatten im Regen
1
Dies ist keine vollständige Antwort für sich, daher werde ich sie nicht als eine auflisten. Wenn Sie jedoch zusätzlich zu den herkömmlichen Anti-Cheat-Methoden einen gewissen Wert auf das Spielerkonto aufbringen, kann dies meiner Meinung nach helfen. Wenn zum Beispiel die neuen Spieler auf die "noob" -Server verbannt werden, bis sie genug Erfahrung gesammelt haben, um auf den Rest des Spiels zuzugreifen, ist es für Hacker ein schwerwiegender Schmerz, ihr Konto nach jeder Sperrung neu zu stufen. Es gibt wahrscheinlich immer noch einige Hacker, die daran vorbeikommen können, aber das Sichern Ihres Kontos / Matchmaking-Servers ist viel einfacher als das Sichern von Clients.
Lewis Wakeford

Antworten:

18

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.

Rob Ashton
quelle
Oder sogar besser, als Objekte hinter Wänden zu verstecken (die immer noch gehackt werden können) und dem Kunden keine Informationen über den Standort des Spielers zu geben (oder nur die, die für einen gut klingenden 3D-Soundeffekt benötigt werden).
Bart van Heukelom
17

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.

Tetrade
quelle
4
Das ist großartig, wenn Sie über die Ressourcen verfügen, um einen dedizierten Server zu betreiben, aber es ist eine recht vereinfachte Sichtweise. Höchstwahrscheinlich würden Sie immer noch einen Großteil der Logik auf den Clients und einen minimalen Teil der Logik auf dem Server ausführen und gelegentlich synchronisieren, um grundlegende Regeln durchzusetzen. Es verhindert auch nicht unbedingt gegen alle clientseitigen Cheats wie Wallhacks / Speicher-Manipulationen, um den Client dazu zu bringen, nützliche Informationen / etc zu enthüllen
Rob Ashton
10

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.

ZorbaTHut
quelle
+1 In Bezug auf die Leistung sind solche stochastischen Ansätze die einzig realistische Antwort auf die umfassenderen Fragen, IMO. Abgesehen von OnLive, wenn Sie nur auf die USA abzielen.
Ingenieur
5

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.

Charles Ellis
quelle
3

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.

SirKnigget
quelle
0

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.

LiquidFeline
quelle
Es ist erwähnenswert, dass es viele Deobfuscators gibt. Auch .Net (C #, XNA) -Spiele können mithilfe einer Reflection geändert werden. Soweit ich weiß, ist C / C ++ wahrscheinlich eine Möglichkeit, den Code nur schwer zu manipulieren.
user1306322
Ja. Mein Punkt ist nur, dass die Verschleierung verhindert, dass leicht dekompilierter Code unlesbar wird, und dass C / C ++ nicht einfach zu kompilieren ist. Beide sind gute Optionen.
LiquidFeline
Auch wenn Sie Ihr Spiel häufig patchen und die binären Offsets in der ausführbaren Datei ändern oder zufällige NOPs einfügen, überlebt kein Hack lange genug ...
SirKnigget
@CPP_Person: Eigentlich ist C dafür bekannt, dass es sehr einfach zu kompilieren ist. Für C ++ ist das eine ganz andere Sache, die aus der Sicht des Compilers in der Tat eine recht komplexe Sprache ist. Ich verstehe jedoch nicht, warum es wichtig sein sollte, wie einfach es ist, eine bestimmte Programmiersprache zu kompilieren - Sie möchten verhindern, dass Leute Cheat-Tools schreiben, und nicht, dass sie einen guten Compiler schreiben - sie würden sowieso einen vorhandenen C ++ - Compiler verwenden Dekompilierung scheint mir viel interessanter zu sein, als das Kompilieren zu erschweren.
Kaiserludi