Aktuelle Zeit: 22.12.2024, 19:59

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Cheat Schutz
BeitragVerfasst: 20.03.2008, 01:55 
Offline

Registriert: 16.05.2007, 21:00
Beiträge: 166
Hi,
Ich mache mir gerade gedanken wie man einen Cheatschutz für ein Spiel erstellt.
da wäre:
1.) Wie kann man Cheaten. Wird dort der Netzwerkverkehr des Programms abgehört und die Packete verändert, was ja sehr schwierug wäre. Oder
wird dort mit Buffer Overflows oder anderen gearbeitet wo die Daten im RAM geändert werden.

2.) Wie kann ma etwas dagegen unternehmen? Bei dem Netzwerkverkehr kann man ja nicht viel machen außer die Daten verschlüsseln und hoffen das sie niemand entschlüsselt 8) . Bei der anderen Geschichte müsste man einen Dämon schreiben der immer prüft ob ein anderes Programm auf den Ram zugreift, da stellt sich das Problem wie man soetwas umsetzt, weil in C++ gibt es ja keine Funktionen mit denen man prüfen kann welches Programm auf welchen Speicherberreich zugreift.

MFG ReduX


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 20.03.2008, 10:27 
Offline

Registriert: 17.03.2008, 16:50
Beiträge: 6
Hmm ... ich bin da nicht schlimm bewandert, aber was ich mal aufgeschnappt habe:

Zu 1.
- bei Open Source Spielen häufig einfach umprogrammieren, Funktionen ändern und neu kompilieren
- bei Closed Source Spielen:
... Entweder in den abgespeicherten Dateien rumschreiben und dann starten
... oder zur Laufzeit den Arbeitsspeicher manipulieren

Zu 2.
Wenn du einen Daemon schreiben solltest, muss der ja auch irgendwo laufen. Also kann man den auch abschalten/umgehen. Wenn du Netzwerkverkehr verschlüsselst kann man immer noch auf den Speicher zugreifen, und den kannst du nicht verschlüsseln. Auf dem Nutzer-PC kann man daher meiner Meinung nach das Verwenden von Cheats nie wirklich unterbinden. Nun kommt es darauf an was du programmierst und wie du es aufgebaut hast.

Würde ich sowas wenigsens halbwegs auf Cheatsicherheit auslegen wollen, würde ich alle Berechnungen grundsätzlich nur auf dem Server durchführen und dort auch alle relevanten Daten halten. Die Clients rufen dann halt nur Methoden mit bestimmten Parametern auf dem Server auf, meinetwegen "Bau Gebäude X" .... oder sowas. Da der Server in dem Modell alle Daten der Spieler kennt, kann er auch überprüfen ob der Spieler die entsprechenden Ressourcen/Voraussetzungen oder sonstwas hat und der Client hat wesentlich weniger Möglichkeiten zu manipulieren. Ob der Ansatz sinnvoll ist, hängt natürlich davon ab was du programmieren willst.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 20.03.2008, 12:24 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
Die Clients rufen dann halt nur Methoden mit bestimmten Parametern auf dem Server auf, meinetwegen "Bau Gebäude X" .... oder sowas.

Falsch. Die Clients rufen dann Methoden auf wie "Führe Aktion #5 aus", sonst kannst du zB in nem RTS mit allen Einheiten bauen, selbst, wenn sie es eigentlich nicht können.

Sehr guter Artikel zu dem Thema:
http://www.gamasutra.com/view/feature/2 ... e_and_.php

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 20.03.2008, 14:33 
Offline
Moderator

Registriert: 25.02.2007, 14:35
Beiträge: 323
Wohnort: Münster
Zitat:
Wenn du Netzwerkverkehr verschlüsselst kann man immer noch auf den Speicher zugreifen, und den kannst du nicht verschlüsseln.


Man kann die Daten auch im Ram verschlüsselt speichern... Ein einfaches Beispiel: Wenn der Spieler 10 Punkte hat, speicherst du nicht in einer int-Variable den Wert 10, sondern vlt. in einer string-Variable einen Code, der dann vor der Ausgabe auf dem Bildschirm in eine 10 umgewandelt wird. Dann wird der Cheater im Speicher vergeblich nach dem zu manipulierenden Wert 10 suchen.

Aber natürlich hast du Recht: Wie sinnvoll und sicher das ist, ist fraglich. Aber ein paar (primitive) Script-Kiddies lassen sich dadurch schon aufhalten, denn Tools wie GameWiz32 funktionieren dann nicht mehr.

Grundsätzlich gilt aber: Alles ist knackbar. Falls nicht, kann man ja das Programm disassemblieren.^^


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 20.03.2008, 21:38 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Kleine Notiz am Rande: Es ist ohne vom Programm mitgebrachte Sicherheitslücken unmöglich, den Arbeitsspeicher eines Programmes *zur Laufzeit* zu verändern, dazu muss die Executable selber modifiziert werden.

Und das genannte Beispiel lässt sich wunderbar dadurch lösen, die Punktezahl einfach auf dem Server zu berechnen.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 21.03.2008, 12:01 
Offline

Registriert: 17.03.2008, 16:50
Beiträge: 6
thephoenix hat geschrieben:
Zitat:
Die Clients rufen dann halt nur Methoden mit bestimmten Parametern auf dem Server auf, meinetwegen "Bau Gebäude X" .... oder sowas.

Falsch. Die Clients rufen dann Methoden auf wie "Führe Aktion #5 aus", sonst kannst du zB in nem RTS mit allen Einheiten bauen, selbst, wenn sie es eigentlich nicht können.

Jain. Ich bin natürlich ausgegangen das der Server in dem Fall prüft, immerhin hat er die Daten zur Verfügung und kann meinetwegen abfragen "If building_capable" oder sonstwas ....

Was du geschrieben hast stimmt natürlich, führt aber letzten Endes auf das gleiche raus oder? Wenn du ein Spielfeld mit 10*10 Feldern hast, wirst du sicherlich nicht hundert Methoden haben, die jeweils auf einem Spielfeld was bauen, sondern eine Methode der du einen Parameter übergibst, auf welchem Feld der Spieler gerade etwas bauen will.

Zitat:
Wie sinnvoll und sicher das ist, ist fraglich. Aber ein paar (primitive) Script-Kiddies lassen sich dadurch schon aufhalten, denn Tools wie GameWiz32 funktionieren dann nicht mehr.

Grundsätzlich gilt aber: Alles ist knackbar. Falls nicht, kann man ja das Programm disassemblieren.^^


Das mit den Script-Kiddies stimmt natürlich ... aber das Problem ist ja meistens nicht, das nur ein Spieler (sozusagen ein Nicht-Script-Kiddie) lernt wie er cheaten kann. Bei vielen Spielern ist das ein verkraftbares Problem. Wenn der eine Spieler allerdings einen Cheat ins Netz stellt der das automatisiert macht wird's kritisch. Ist aber auf jeden Fall besser als nix. :D


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 26.03.2008, 18:50 
Offline

Registriert: 16.01.2008, 12:31
Beiträge: 79
Bei Singleplayerspielen verändert man einfach die "Daten", also die Daten auf der Platte welche zum Beispiel Werte enthalten, oder aber man verändert direkt den Code (patchen der *.exe).
Eine weitere Möglichkeit ist wie auch schon beschrieben im Speicher zu ändern, dagegen haste keine Chance.
Im übrigen ist es doch möglich auf Speicherbereiche von anderen Prozessen zu zugreifen, im Zweifel über Kernel-Module sprich Treiber, gehen tut alles, ist allerdings auch eine Frage des Aufwandes ob es sich lohnt.

Bei einem online/Multiplayerspiel besteht der einzige Cheatschutz darin Werte bzw. Daten vom Server prüfen zu lassen.

Man könnte zum Beispiel Hashwerte von seinen Daten-Dateien bilden und diese beim start vom Server überprüfen lassen.
Oder aber auch Aktionen vom Server prüfen lassen:

Sprich Spieler X will Objekt aufheben, also geht erstmal ein Kommando an den Server, Server prüft ob Spieler X das darf und meldet ein entsprechendes Ergebnis zurück.
Macht allerdings nur wirklich Sinn, wenn auch Daten auf dem Server gespeichert werden.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Cheat Schutz
BeitragVerfasst: 26.03.2008, 19:23 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
Man könnte zum Beispiel Hashwerte von seinen Daten-Dateien bilden und diese beim start vom Server überprüfen lassen.

Ich denke, sowas ist relativ schnell gecrackt.
In diesem Sinne finde ich das Prinzip von Tremulous ganz gut, in der Anleitung des Spieles heißt es zB ganz eindeutlig, dass die Helligkeit nicht zum Spielprinzip gemacht werden darf, da da durch Kontrasteinstellungen etc sowieso alles ausgehebelt werden kann (nur so als Beispiel, dass das Spielprinzip selbst auch ausgerichtet werden kann).

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de