Spieldateien vor Manipulation schützen
Übersicht

![]() |
ozzi789Betreff: Spieldateien vor Manipulation schützen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nehmen wir an wir haben eine Datei in der alle Zaubertränke für ein Spiel gespeichert sind.
Folgender Aufbau sei gegeben: Zitat: Health Potion small
add_health 30 Health Potion big add_health 50 Nun könnte ein User sehr schnell sowas basteln Zitat: Health Potion small
add_health 100 Und schon hätte er einen "Cheat". Wie verhindere ich solche Dinge am besten? Wie habt ihr es bei euren Projekten gemacht? (Mir ist klar das mit genügend Aufwand alles erreicht werden kann.) Hat jemand eine sehr schnelle Verschlüsselungsfunktion gerade zur Hand? Grüsse, Ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verschlüsseln ist hier wohl die beste Sache. Das geht einfach mit der Caesar-Verschlüsselung, oder mit dem Bit-Flip (indem man alle Bits zu Not(Bit) macht, also Nullen und Einsen vertauscht. Sowas hält den normalen 0815-User davon ab, die gespeicherten Daten zu manipulieren. | ||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dacht ichs mir.. ![]() Ich glaube ich code mir kurz ne Vernam-Chiffre Funktion.. mal schauen ob der Speed taugt. Mehr Ideen? |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Eine eigene Dateiendung hält ein Großteil davon ab, in die Datei hinein zu schauen.
2. Statt reintext würde ich Write/ReadInt,String benutzen: Das gibt höchstens wirre Zeichen im Texteditor und bräuchte mehr Zeit zu dechiffrieren als jemand für ein kleines Spiel einsetzen würde. 2a. Falls es unbedingt Text sein muss mit Xor ![]() Edit--> BlitzBasic: [AUSKLAPPEN] Local txt$="Angriff im Morgengrauen!" <--Edit 3. MD5/SHA Hashes des Dateiinhalts berechnen und mit soll vergleichen - dann müsste man auch die Exe manipulieren. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am Mo, Jan 30, 2012 14:52, insgesamt einmal bearbeitet
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schreibe die gespeicherten Sachen nicht in eine extra-Datei, sondern packe sie in eineschon bestehende (natürlich auch verschlüsselt), damit man garnicht erst in Versuchung kommt ![]() Allerdings hab ich mich mit sowas noch nicht beschäftigt. Dafür musst du dann die ganzen Formate erstmal durchforsten, ob es dafür irgendeine Möglichkeit gibt....(ich denke da an .pngs oder so) Ist sicherlich viel Arbeit, und ob diese sich dann lohnt, ist die andere Frage. |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow danke Xeres die Xor Funktion sieht sehr gut aus!
(Es muss wirklich Text sein ja ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Checksummen, zeigen dir, ob sie verändert wurden.
Also, verschlüßeln + Checksumme, sollte die Bude Rocken. |
||
between angels and insects |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In meinen ersten Netzwerk-spiel-tests habe ich immer eine vereinfachte version einer Checksumme genommen.
Jedes Zeichen wurde als ascii-wert addiert, bzw subtrahiert. Je nach muster. Zb wurde jedes 5te Zeichen subtrahiert. Das ergab dann ein schöne zahl, aufgrund von Integer-überlauf etc und relativ eindeutige zahlen, dafür das es eigentlich simpel war. Alternative idee: Speicher eine kopie solcher dateien anders verschlüsselt. Die "hauptdateien" lässt du offen und lesbar in deinem Projekt. Hat nun jemand die datei verändert, erkennst du dies beim laden und ersetzt sie vorher mit der sicherheitskopie. Ist aber nur bei kleineren einstellungsfiles und scripten zu empfehlen. |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest dich grundsätzlich fragen, ob Du überhaupt Cheatsicherungen einbauen willst. Wenn der Spieler meint, er müsse unbedingt Cheaten, dann sei es drum, stört doch keinen, solange es ein Singleplayer Spiel ist. Bei Multiplayer Spielen ist der Beitrag jetzt natürlich obsolet. | ||
Starfare: Worklog, Website (download) |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
CRC ist bei soetwas meine liebste Wahl, du kannst dir aber auch anders abhelfen, z.B. die Daten bei jedem Start aus dem Netz laden (was auch Manipuliert werden kann, aber schon erheblich schwerer ist) usw... | ||
It's done when it's done. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder eine Verschlüßelung mit Privat und Public Key ![]() |
||
between angels and insects |
René Meyer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Viel verbreiteter als solche Dateimanipulationen, an die sich nur wenige herantrauen, sind doch Trainer - kleine Programme, die parallel zum Spiel laufen und solche Werte direkt im Arbeitsspeicher einfrieren.
Dafür gibt es komfortable Programme, mit denen selbst Laien mogeln können. Viel Sinn hat das Chiffrieren von Dateien also nicht, wenn die Werte erst im RAM manipuliert werden. |
||
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn sich jemand die Mühe macht einen Trainer zu schreiben, dann soll er halt cheaten.
Ist ja kein Multiplayer Spiel. Ich will bloss nicht im Klartext die ganzen Inhalte rumstehen haben, und dafür genügt eine simple Verschlüsselung |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group