Die einfache Dekompilierung / Rückentwicklung des Client-Codes ist eigentlich nur ein kleines Hindernis. Unternehmerische Hacker haben jahrelang ausführbare Dateien nach ihrem Willen (böswillig und nicht böswillig) gebogen, bevor hochrangige, trivial zu dekompilierende Sprachen wie C # auf den Markt kamen. Sicherheit durch Dunkelheit allein ist überhaupt keine Sicherheit.
Alle Daten auf dem Computer des Benutzers (Code oder reguläre Asset-Daten) sind im Wesentlichen bereits gefährdet. Sie können sich nicht wirklich davor schützen - wenn Sie nicht möchten, dass Benutzer Daten bearbeiten, legen Sie sie nicht auf ihrem Computer ab, sondern speichern Sie sie auf Ihren Servern. Wenn Sie nicht möchten, dass sie den Code im Client ändern, stellen Sie sicher, dass der Client keine Kontrolle über nützliche Funktionen hat.
Wenn dies keine Option ist (zum Beispiel ist Ihr Multiplayer vollständig Peer-to-Peer), können Sie beispielsweise Hashes der relevanten Assets berechnen und nur zulassen, dass Personen miteinander spielen, wenn die Hashes übereinstimmen. Ja, jemand könnte die ausführbare Datei sorgfältig so bearbeiten, dass sie einen anderen Hash zurückgibt. Dies sollte jedoch nur bedeuten, dass der betreffende Spieler relativ schnell desynchronisiert und vom Spiel getrennt wird, da sein Vermögen nicht mit dem Rest des Spiels übereinstimmt die Spieler'.
Sie können auch einen Test vom Typ "Mehrheitsregeln" verwenden, mit dem Sie Spieler trennen können, deren Simulation nicht mehr mit anderen Spielern synchronisiert ist, und dem "Host" -Spieler (der das Spiel gestartet hat) die entscheidende Stimme geben.
Als wir gerade mit der Entwicklung unseres aktuellen Spiels begannen, wollten auch wir den Offline-Spielmodus haben. Die Idee war, die Spieler offline durch die Spielebenen spielen zu lassen und dann ihren Fortschritt irgendwie zu synchronisieren, wenn sie online gehen. Also haben wir lange und intensiv darüber nachgedacht, wie wir Betrug verhindern können. Das Fazit war: Wir können nicht. Es gibt wirklich KEINE Möglichkeit, Spieler offline spielen zu lassen und 100% sicher zu sein, dass sie nicht betrogen haben.
quelle
Eine einfache Lösung für das Herunterladen von Dateien ist das Hashing. Hash die Sicherungsdatei und speichere diesen "Fingerabdruck" irgendwo. Wenn Sie es laden, hashen Sie die Datei und vergleichen Sie sie mit dem Fingerabdruck. Wenn sie nicht übereinstimmen, wurde die Datei geändert.
Wenn jemand Ihren Code dekompiliert, können Sie natürlich nichts tun. Für diese Antwort bedeutet dies, dass sie auch den Hash der geänderten Sicherungsdatei speichern können.
Eine andere Möglichkeit wäre, den Fingerabdruck an einen Server zu senden, auf dem der Endbenutzer ihn nicht manuell ändern kann, wenn er die Sicherungsdatei geändert hat. Dies ähnelt der Vorgehensweise von iTunes beim Wiederherstellen von iPhone-Bildern.
quelle