Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Programm auf änderung prüfen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 23.08.2008, 18:55    Titel: Programm auf änderung prüfen Antworten mit Zitat

Hi,
ich schreibe ja ein Online-Game. da jeder das programm auf der festplatte hat, könnten ja cheater versuchen das programm zu ändern. von den maps usw. kann ich ja checksummen berechnen und vergleichen. aber wie mach ich denn sowas für die ausführbare datei?

Ich bin dankbar für jede antwort.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 23.08.2008, 19:01    Titel: Antworten mit Zitat

kannst du nicht. Du kannst zwar genauso wie die map die .exe hashen und den hash vergleichen, aber dass der hash den du erhälst - der dann ja jedes mal der selbe wäre - wirklich von der .exe gesendet wurde und die nicht einfach so modifiziert wurde dass sie den sendet obwohl es garnicht der richtige ist kannst du nicht nachprüfen. Genauso gehts übrigens auch mit den maps, der hash der gesendet wird muss nicht stimmen.. Netzwerkdatenverkehr lässt sich abhören und modifizieren, du kannst da nichts dagegen machen, den ultimativen schutz gibts nicht.

Aber mal ganz davon abgesehen, denk mal nach wie viele leute das machen würden.. wahrscheinlich nämlich genau kein einziger.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 23.08.2008, 19:10    Titel: Antworten mit Zitat

Hast du mal in Filemon (Teil der Sysinternals Suite) und fbProcMon beobachtet was PnkBstrA.exe/PnkBstrB.exe macht (Teil von PunkBuster)?

Genau, sie injiezieren sich in jeden Prozess als Modul und schauen jeden Prozess auf die Finger, was der macht, wo ers macht.
Und die beiden haben auch noch einige Komponenten in DLLs ausgelagert, die sich dann gegenseitig überprüfen. PunkBuster prüft dann die einzelnen Komponenten des Spiels auf Integrität.

Keine einfache Sache. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 24.08.2008, 09:00    Titel: Antworten mit Zitat

Also wenn Deine Sicherheit gegen Manipulationen vom Client abhängig ist, ist Dein Software-Design von Grund auf falsch konzipiert. Lerne am besten Socket-Protokolle designen, denn bei Netzwerk-Applikationen gilt immer der Grundsatz: Geh von einem "netcat" machenden Benutzer aus, der Dir x-beliebig manipulierte Daten liefert (quasi ein selbstgestrickter Client verwendend) -> es darf keinen einzigen Fall geben, bei dem sich Dein Gameserver aus dem Tritt bringen lässt, sonst haben wir sehr rasch einmal die bekannten "Vulnerabilities" wie Pufferüberläufe, Formatstringfehler usw.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.08.2008, 14:34    Titel: Antworten mit Zitat

Gutes Beispiel hierfür:
Counter-Strike / Source-Engine / GoldSource-Engine

Was passiert wenn ich schiessen will?
1. Client sendet Anfrage an den Server "Darf ich schiessen?"
2. Gameserver überprüft Waffe, Standort, Munition, ob der Spieler überhaupt noch lebt etc.
3. Gameserver sendet bei bestätigter Anfrage an alle Clienten "Spieler xyz schiesst bei x|y|z mit Upvektor x|y|z|l(ength) mit Waffe Hyper-Laser."
4. Clienten stellen bspw. Schussanimation dar.
5. Gameserver berechnet Kollisionen
6. Gameserver entscheidet wer stirbt/Schaden abbekommt.

usw. usf.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 25.08.2008, 10:00    Titel: Antworten mit Zitat

Sonst von mir selber ein kleines Netzwerkspiel:

http://www.dreael.ch/Deutsch/Download/Rasterbike.html

=> Dort sind die von 28398 beschriebenen Grundprinzipien ganz ähnlich umgesetzt.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 26.08.2008, 16:36    Titel: Antworten mit Zitat

danke
das jemand sich die Mühe macht und die exe komplett umschreibt, glaub ich nicht, mir geht es mehr darum, das er Werte (standard hp, mana usw.) verändern könnte.
Der Server prüft selbstverständlich, ob die vom Client gesendeten Daten überhaupt sinnvoll bzw. gültig sind.
Welcher hash-algorithmus eignet sich denn dafür? ich hab gehört, md5 sei gut.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 26.08.2008, 16:53    Titel: Antworten mit Zitat

MD5 ist nicht gut, reicht dafür aber (noch) aus.
Tu dir aber nen gefallen und nutz gleich SHA-1/256/384/512... irgendwo im englischen Forum war ein SHA-1?512? Code ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 26.08.2008, 17:24    Titel: Antworten mit Zitat

Zitat:
MD5 ist nicht gut

falsch. MD5 ist nur nicht "der beste" einweg-verschlüsselungs-algorithmus.
Zitat:
Tu dir aber nen gefallen und nutz gleich SHA-1/256/384/512...

ich sehe nicht unbedingt einen vorteil darin bei einem spiel. denn es muss bei einem spiel meist so schnell wie möglich gehen und das spiel belegt auch schon einen gewissen teil der cpu. wenn in echtzeit ständig hashes generiert werden, kann das wohl schon ausbremsen. außerdem: knackbar ist md5 auch nicht. es gibt lediglich rainbow-tables.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz