Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

1

21.06.2012, 14:30

"Echtheit" der Resourcen sicherstellen

Hi,

folgende Frage:
Wie kann man sicherstellen, dass Dateien (Texturen, Models, Maps etc.) so sind wie sie vom Entwickler sein sollen? Wie kann man zB verhindern, dass jemand zB. einfach neue Modelle oder Texturen einsetzt. ZB bei Multiplayer Spielen ist das ja wichtig, um Cheaten zu verhindern.
Wie kann man da sichergehn? Irgendwie muss man ja beim Programmstart prüfen, ob alles in Ordnung ist. Macht man das mit Datei-Hashs, oder tut man die Dateigrößen mit einer Liste vergleichen oder wie macht man das? Bei größeren Projekten kann das ja sicher ne Weile dauern.

Ich hoffe ich hab mich verständlich ausgedrückt.



Gruß

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

21.06.2012, 14:46

Verschlüsseln und hashen klingt gut. Aber wie immer bei Programmen gilt: Es gibt keine 100%ige Sicherheit. Nie.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

3

21.06.2012, 14:46

Passwortgeschütztes Resource-Paket. Aber teilweise mag das Ändern der Resourcen ja erwünscht sein.

Thoran
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

4

21.06.2012, 14:56

problematisch ist es meines Erachtens nur bei Onlinespielen, bei denen alle Spieler die gleichen Chancen haben sollen (und nicht einfach durch das ersetzen von Modellen Vorteile haben)

wie bereits angedeutet kann man Verschlüsselung und Hashes verwenden

Verschlüsselung:
da das Programm selbst die verschlüsselten Dateien lesen können muss, wäre es nur eine Frage der Zeit, bis das verwendete Verfahren und die ggf. erforderlichen Schlüssel herausgefunden werden (immerhin beinhaltet das Spiel die Implementierung für die Entschlüsselung)
ich denke, dass eine Verschlüsselung nur eine gewisse Hürde darstellt, die erst genommen werden muss

Hashs:
entweder man speichert im Programmcode selbst die notwendigen Hashs ab oder man schickt die Werte an den Server, der dann den notwendigen Vergleich vornimmt
wenn der Vergleich lokal durchgeführt wird, dann würde es reichen "lediglich" die richtige Stelle der ausführbaren Datei (oder anderen Datei, sofern ausgelagert) anzupassen, damit das Programm die veränderte Textur wieder als normale Textur erkennt
wenn der Vergleich Serverseitig vorgenommen wird, dann müsste das Spiel so modifiziert werden, dass es nicht die Hashs der vorhanden Texturen an den Server schickt, sondern die, die die Standardressourcen ergeben hätten

das ist der Grund, warum du keine 100%ige Sicherheit haben kannst
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

21.06.2012, 16:23

Es gibt übrigens ein paar sehr gute und sehr harte Code-Laufzeit-Verschlüsselungen. Themida ist zum Beispiel noch immer top dabei. Gutes kommt aber nie kostenlos und Lizenzen dafür sind entweder nicht, schwer oder nur sehr teuer erhältlich ;) Ich denke Hashes in einer verschlüsselten Datei definiert sind für 98-99% aller Interessenten schon zu viel. Die anderen 1-2% sind leider die, die dann die nötigen Tools schreiben und hochladen ;)

Aber mal anders gefragt: Wie viele Leute werden vermutlich dein Programm nutzen und wie viele werden voraussichtlich Interesse daran haben eine Änderung vorzunehmen und wie groß wäre vermutlich der Schaden an den anderen Spielern? Oder war die Frage rein theoretisch? Denn Nutzen ist immer in Relation zum Aufwand zu sehen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

22.06.2012, 15:48

Ich würde mich zuerst fragen, ob eine Veränderung der Dateien überhaupt Auswirkungen hat, bzw. welche Dateien kritisch sind. Eine Textur zum Beispiel hat in aller Regel keinen Einfluss auf das Spielgeschehen an sich. Und ansonsten muss man halt alle Daten, die Spielrelevant sind nochmal vom Server prüfen lassen, bzw. Daten, die der Spieler gar nicht kennen darf erst gar nicht schicken. Sollte dann doch der Fall kommen, das ein Spieler nicht mögliche Informationen übermittelt (z.B. sagt, seine Figur befände sich an einer Position, die sie unmöglich erreichen kann), kann er ja spätestens im Wiederholungsfall einfach aus dem Spiel geworfen werden. Wenn man nach dem Prinzip arbeitet, alles was der Client sagt ist vom Prinzip falsch und böse, und ihm erst vertraut, wenn der Server das OK gibt, sollten keine Probleme auftreten. Das was dann der - sagen wir mal bösartige - Nutzer noch machen könnte, wäre sein Design zu ändern und das hat in den seltensten Fällen tatsächlich Einflüsse auf das tatsächliche Spielgeschehen.

7

22.06.2012, 16:06

Eine Textur zum Beispiel hat in aller Regel keinen Einfluss auf das Spielgeschehen an sich.

Alle Gegner kriegen ne rote Textur, alle Freunde eine Grüne und die Levels sind komplett weiß. Oh bis auf das Gras natürlich, das ist jetzt komplett transparent. :)
Lieber dumm fragen, als dumm bleiben!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

22.06.2012, 16:37

Nicht umsonst gibt es bei Punkbuster o.Ä. auch die Möglichkeit einen Screenshot von Spielern anzufordern.
Wenn man mit veränderten Modellen/Texturen spielt, fällt das dann dort auf. Es sei denn der Cheat wäre schlau genug, extra für den Punkbuster-Screenshot wieder die normalen Modelle/Texturen zu benutzen ;)

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

9

22.06.2012, 18:05

Ein mögliches Grundprinzip, wenn mich mein Gedächtnis nicht trügt:

Ein asymmetrisches Verschlüsselungsverfahren wie RSA benutzen.
Nen Hash über die jeweilige Resource berechnen.
Den Hash mit dem Private Key verschlüsseln und an die Resource anhängen.

Jetzt kann jeder mit Public Key den erwarteten Hash entschlüsseln und mit
dem wirklich berechnetem vergleichen.

Größtes Problem in der Praxis: Jetzt musst du noch sicherstellen, dass die Installation
deines Spiel sich überhaupt für irgendwelche Hashes interessiert und nicht so verändert
worden ist, dass sie alles lädt?
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

10

22.06.2012, 18:09

Du kannst auch es intern speichern mit deinem eigenen Format. Das erschwert es, die Texturen und Co. zu verändern.

Werbeanzeige