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

  • »Johannes Schneider« ist der Autor dieses Themas

Beiträge: 103

Beruf: Chemiestudent

  • Private Nachricht senden

1

22.11.2009, 14:06

Spiele vor Zerlegung schützen

Hallo.
Ich habe da mal eine Frage zu einem überall bekanntem Problem:
Wie schütze ich mein Spiel vor Cheats/Hacks ?

Im Internet krusieren dutzende Programme zur Speichermanipulation von Spielen. Mit Programmen wie "Cheat Engine 5.5" kann man in allen möglichen Spielen "rumfummeln", da diese Programme nicht auf Spiele spezialisiert sind.
Beispiel: Man kann damit die Programmgeschwindigkeit ver20fachen, und somit mit "Lichtgeschwindigkeit" durch Spiel rasen.
Oder: Man kann den Score mal eben auf 99999999999 setzen.

Es tut jedem Entwickler weh, bei einem selbst Programmierten Spiel von einem Cheater besiegt zu werden. :?
"Das Glück des Forschers besteht nicht darin, die Wahrheit zu besitzen, sondern eine Wahrheit zu erringen. Und in diesem fortschreitendem, erfolgreichen Suchen nach der Wahrheit - darin liegt die
eigentliche Befriedigung." Max Planck

2

22.11.2009, 14:10

Das ist ein Sehr umfangreiches Thema. Stellt sich natürlich immer die Frage, ob der Aufwand für das Jeweilige Spiel Gerechtfertigt ist.

Guck dir mal das Tutorial zum Trainer - Schreiben in der Tut Section an, dann siehste, wie das Mit speichermanipulation ungefähr funktioniert, und dann kannst du dir etwas überlegen.

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

3

22.11.2009, 14:27

oft hilft es schon, einfach so sachen wie punktzahl mal 2 oder so zu nehmen und bei bedarf erst zu halbieren, denn wenn der spieler das nicht weiß, kann er nix tun, da seine "Schlauen Programme" (TSearch etc.) nix helfen...
ansonsten hab ich mal nen proggie gemacht, das für bestimmte variablen immer neuen speicher reallcoatet... ist leider der geborene performancekiller...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

dv

Frischling

Beiträge: 30

Wohnort: Südamerikanischer Dschungel

  • Private Nachricht senden

4

22.11.2009, 14:44

Sowas würde mir nicht weh tun. Wer cheatet, besiegt nicht wirklich. Genausogut kann man zu einem Seifenkistenrennen mit einem Dragster ankommen. Man wird alle übertreffen, aber ein wirklicher Sieg ist das nicht.

Singleplayercheats: ok, ist eine persönliche Frage. Z.B. bei XCom Terror From The Deep war es allgemein akzeptiert zu cheaten, weil das Spiel einfach unmenschlich schwer ist und der Computer selbst dauernd cheatet (Schüsse treffen immer usw.)

Multiplayercheats sind allerdings wirklich ein Problem. Hier würde ich Checksummen verwenden, wenn die Stats im Client gespeichert sind. Wenn sie im Server stehen, ists natürlich gelöst, aber nicht gut skalierbar.
~dv();

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

23.11.2009, 12:29

Zitat von »"dv"«

Multiplayercheats sind allerdings wirklich ein Problem. Hier würde ich Checksummen verwenden, wenn die Stats im Client gespeichert sind. Wenn sie im Server stehen, ists natürlich gelöst, aber nicht gut skalierbar.

Niemand würde wichtige Daten (z.B. sowas wie Lebensenergie) vom Client bestimmen lassen. Das wird so nicht gemacht. Der Client kann seinen Spielzustand vorhersagen, aber letztendlich entscheidet der Server.
Das Problem ist hier, dass Cheats den Speicher durchsuchen, um z.B. die Positionen der Gegner zu erhalten, um dann automatisch zielen zu können. Eine Möglichkeit um das einzudämmen ist, dem Client nicht mehr Informationen zu senden als wirklich nötig sind. Und natürlich sowas wie Punkbuster.

FalkT

Treue Seele

Beiträge: 125

Wohnort: AC

  • Private Nachricht senden

6

23.11.2009, 17:52

Zitat von »"dv"«


Singleplayercheats: ok, ist eine persönliche Frage. Z.B. bei XCom Terror From The Deep war es allgemein akzeptiert zu cheaten, weil das Spiel einfach unmenschlich schwer ist und der Computer selbst dauernd cheatet (Schüsse treffen immer usw.)

Damit hast du dich selbst disqualifiziert, denn du hast scheinbar keine Ahnung wie TFTD funktioniert.

Zitat von »"Johannes Schneider"«


Im Internet krusieren dutzende Programme zur Speichermanipulation von Spielen.


Ein viel wichtigerer Aspekt ist die Frage, wie man das Debugging/Reverse-Engineering seines Programmes verhindert.
Dann hast du auch das Problem mit den Speichermanipulationen erschlagen.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

23.11.2009, 19:15

was ist so schlimm daran wenn die noobs im singleplayer cheaten? ist doch deren sache ob sie sich ihren spass verderben.
im mutliplayer ist das allerdings was anderes.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

8

23.11.2009, 22:27

Sonst könnte man alle Werte verschlüsselt, doppelt oder mit Checksummen versehen speichern (dafür ne eigene Klasse schreiben). Das sind natürlich keine tollen Lösungen aber, wenn manche meinen cheaten zu müssen, dann lass sie doch, sie betrügen doch vor allem sich selbst und in Multiplayerspielen werden das die Mitspieler sicher früher oder später merken. Man könnte aber auch bei einfacheren Multiplayerspielen (mit wenigen Mitspielern) alle Daten bei allen Spielern speichern und sie in bestimmten Abständen abgleichen.

mfg

9

23.11.2009, 22:52

Zitat von »"BurningWave"«

Sonst könnte man alle Werte verschlüsselt, doppelt oder mit Checksummen versehen speichern (dafür ne eigene Klasse schreiben). Das sind natürlich keine tollen Lösungen aber, wenn manche meinen cheaten zu müssen, dann lass sie doch, sie betrügen doch vor allem sich selbst und in Multiplayerspielen werden das die Mitspieler sicher früher oder später merken. Man könnte aber auch bei einfacheren Multiplayerspielen (mit wenigen Mitspielern) alle Daten bei allen Spielern speichern und sie in bestimmten Abständen abgleichen.

mfg

Sowas fänd ich aber nur bei Savegames gut, wenn man alle Daten im Ram verschlüsseln will, macht man sich nur Arbeit, garantiert eine Milliarde Bus, und das Spiel wird langsamer.
Aber generell fände ich es doof, dem Spieler das Cheaten komplett zu verbieten. Manchmal kommt man an einer Stelle im Spiel eben einfach nicht weiter, oder man will mal etwas spezielles ausprobieren, oder oder oder. Ich finde, der Spieler sollte selber dafür verantwortlich sein, was er macht, und wie er das Spiel spielen will.
Anders ist das natürlich in Multiplayerspielen, aber wenn der Server alleine alle spielrelevanten Werte bestimmt, kann man eigentlich nur noch so Dinge wie Bots zum Cheaten benutzen. Letztendlich lohnt es sich aber glaube ich nicht, als Hobbyprojekt da Stunden und Wochen an Arbeit zu investieren, nur um so etwas zu erschweren, wenn jemand das wirklich will, schafft er es wahrscheinlich irgendwann, es gibt ja auch zu diversen kommerziellen Spielen diverse Bots.
Lieber dumm fragen, als dumm bleiben!

dv

Frischling

Beiträge: 30

Wohnort: Südamerikanischer Dschungel

  • Private Nachricht senden

10

23.11.2009, 23:00

Zitat von »"FalkT"«


Damit hast du dich selbst disqualifiziert, denn du hast scheinbar keine Ahnung wie TFTD funktioniert.


...
Oh bitte. Ich habe es x-mal durchgespielt. Ich kenne TFTD. Und DU kennst offenbar nicht die Bugs, die auf den Schwierigkeitsgrad bezogen waren.
~dv();

Werbeanzeige