Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 23.08.2008, 19:55 Titel: Programm auf änderung prüfen |
|
|
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 |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 23.08.2008, 20:01 Titel: |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 23.08.2008, 20:10 Titel: |
|
|
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. |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 24.08.2008, 10:00 Titel: |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 24.08.2008, 15:34 Titel: |
|
|
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 |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
darkinsanity aka sts
Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 26.08.2008, 17:36 Titel: |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 26.08.2008, 17:53 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.08.2008, 18:24 Titel: |
|
|
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 |
|
|
|