Ich möchte lediglich Möglichkeiten kennen lernen, wie man eine Manipulation von außen am Besten verhindert.
Natürlich stimmt es generell, dass wie die meisten es hier sagen, eine sichere Variante ausgeschlossen ist. Allerdings gibt es denke ich praktikable Antworten, die simpel umzusetzen sind.
Man kann natürlich annonymisiert den Spielverlauf (bzw. Spielercommandos oder was auch immer) an den Server schicken. Da hat man aber evtl. Datenschutzbedenken, braucht ständig eine Internetverbindung und der Server wird sehr, sehr kompliziert.
Ich würde dir empfehlen, einfach den gesamten Netzwerkverkehr, mit einem simplen, eigenen, symmetrischen Verschlüsselungsverfahren zu verschlüsseln. Irgendeine simple Kette bijektiver Abbildungen auf Byte-Blöcken. Ein paar XOR-S mit verschiedenen Zufallszahlen. Ein paar Additionen und Subtraktionen mit Überlauf (damit es bijektiv bleibt). Irgendetwas halt. Hauptsache es ist so komplex, dass der Compiler es nicht kurz und klein optimiert.
Damit zwingst du potentielle Angreifer, den Assembler-Code zu analysieren. Weil du ein eigenes Verfahren benutzt, können sie keine DLL-Aufrufe abfangen oder nach bekannten Funktionen suchen. Auf die Sicherheit hat es jedoch keine Auswirkungen, denn wer ein simples Verfahren rauskopieren kann, kann auch ein komplexes Verfahren rauskopieren. Hauptsache, man muss den Assembler-Code anfassen und kann nicht einfach nur den Netzwerkverkehr analysieren (natürlich könnte man ein simples Verfahren durch analysieren von Traffic knacken - aber das ist schwerer als den Assembler-Code zu lesen und damit unpraktikabel).
Zur Implementierung magst du vielleicht auch noch das hier lesen:
https://de.wikipedia.org/wiki/Betriebsmo…ryptographie%29 (damit verhinderst du ein paar ansonsten arg triviale Angriffe auf den Traffic).
Insgesamt hast du so eine Funktion in vielleicht 30 Minuten implementiert. Und es ist vermutlich ungefähr so sicher, wie du mit vertretbarem Aufwand werden kannst. Und Aufhalten tust du damit vermutlich alle hier im Forum. Nicht das es unglaublich schwer wäre, aber man braucht doch so viel Einarbeitungszeit, dass es die allermeisten abschrecken sollte.