Wo Spieler XP speichern, um Cheaten vorzubeugen?

  • Vielen Dank für eure vielen Antworten, Ihr habt mir sehr geholfen!
    Ich habe nun die XP als Variable in einem savefile integriert. Die Variable läuft vor dem Speichern durch eine Reihe von "Umrechenmethoden" (und am Ende sieht es aus wie kompletter unsinn ^^) - nach dem Schema (x*pi/2)^1,6 - Das Wichtigste hierbei ist alledings, die XP nicht als Int zu speichern, weil sonst kommt da so ein zusammengerudeter Käse raus...
    Den wert der savefile kann natürlich nur der Server beeinflussen - zumindest ist es so gedacht.
    Einen 100% Schutz gibt es natürlich nicht, aber wenn ich mit solchen Maßnahmen vielleicht 50% der potentiellen Cheater demotiviere, dann bin ich schon zufrieden.


    Gruß, Tobi

  • counterstrike ist auch kein singelplayer spiel ! hauptaugenmerk liegt halt im multiplayer daher ned verwunderlich aber wiso nutzt man cheats ohne vac bypass?

    Ich hatte ja nur etwas aus langweile rumexperimentiert. Wenn ich wüsste man könnte in einer Runde gegen AI gebannt werden... Schade um den guten Acc.


    Vielen Dank für eure vielen Antworten, Ihr habt mir sehr geholfen!
    Ich habe nun die XP als Variable in einem savefile integriert. Die Variable läuft vor dem Speichern durch eine Reihe von "Umrechenmethoden" (und am Ende sieht es aus wie kompletter unsinn ^^) - nach dem Schema (x*pi/2)^1,6 - Das Wichtigste hierbei ist alledings, die XP nicht als Int zu speichern, weil sonst kommt da so ein zusammengerudeter Käse raus...
    Den wert der savefile kann natürlich nur der Server beeinflussen - zumindest ist es so gedacht.
    Einen 100% Schutz gibt es natürlich nicht, aber wenn ich mit solchen Maßnahmen vielleicht 50% der potentiellen Cheater demotiviere, dann bin ich schon zufrieden.


    Gruß, Tobi


    Gut, nur musst du dann bei jedem abfragen umrechnen - jedes mal wenn der Spieler xp bekommt.
    Hier eine sicherere Methode:


    https://forums.unrealengine.co…-Plugin-Anti-Cheat-System


    Findest du im Launcher unter "SCUE4 Anti-Cheat Solution"



    Das ist ein Anti-Cheat Plugin, welches es kostenlos im marketplace gibt. Es schützt vor z.B. Cheatengine indem es wichtige Werte im RAM speichert, wo cheater sie nicht erreichen können.
    Cheatengine kann keinen Wert verändern, den es nicht findet :)


    [Blockierte Grafik: http://i1234.photobucket.com/albums/ff408/BrUnOXaVIeR/SCUE4-Test_zpsuatzirb6.png~original]


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Wenn du z.B. deine xp sichern willst nutze "safe float"


    [Blockierte Grafik: http://i1234.photobucket.com/albums/ff408/BrUnOXaVIeR/UE4-SafeTypes_zpspjynqtzu.png~original]

  • Dann klick auf den Daumen nach oben rechts unter seinem Beitrag. Und bitte kein Fullquote, wenn es nicht wirklich nötig ist, das Mausrad aller dankt dir. ;)


    Gut zu wissen, dass es so etwas gibt. Wieder mal so ein typisches "da hätte man ja selbst drauf kommen können" Ding. Vielleicht kann ich das ja doch irgendwann mal gebrauchen, wenn ich endlich mal genug Zeit und Geduld finde. XD


    Das schützt zumindest mal etwas, aber sicherlich auch nicht vor allem und im Save File muss man es wohl dennoch verschlüsseln. Da würde ich aber einfach das komplette Save File einfach verschlüsseln anstatt nur den XP Wert oder gar kombiniert, dann ist es noch sicherer. Weiß aber nicht ob UE4 das von sich aus unterstützt oder ob da ein Plugin nötig ist (das es vielleicht schon gibt), wäre eine Suche wert.

  • Hallo!


    RAM:
    Die einfachsten Cheater-Tools lesen den RAM komplett und werten diesen aus.
    Die Hoffnung Daten sicherer zu machen indem man sie in den RAM schiebt ist völlig für die Katz'.
    Es ist vielmehr die Art und Weiße wie man ein Passwort schützt und nicht wo.
    Denn dem "Hacker" ist es egal wo er die Daten nimmt - programmiertechnisch macht es auch keinen Unterschied die Festplatte oder den RAM zu befragen - gleiches Dateisystem, gleiche Windows-API = gleicher Aufwand.
    Den RAM in Echtzeit zu Cheatingzwecken zu manipulieren ist sogar die verbreiteste und beliebteste Methode überhaupt, da es auch in schlecht programmierten Multiplayerspielen teilweiße Möglichkeiten eröffnet.


    Verschlüsselung vs Performance:
    Die Werte müssen einfach nur gut verschlüsselt sein - und zwar so, dass es auch Brute Force standhält.
    Das kann angesichts des Rechenaufwands mit jedem Tick eine sehr performancelastige Lösung sein.
    Wer ein großen Datenstrom mit einer kurzen Eventzeit rechnen lässt, hat kaum noch Puffer, um diese oder die meisten Daten davon noch in Echtzeit zu verschlüsseln.
    Denn das wäre die einzige Möglichkeit es dem "Hacker" zu schwer wie möglich zu machen.


    SinglePlayer vs MultiPlayer
    Es ist müßig und auch recht sinnlos über ein Anticheatsystem im SinglePlayer nachzudenken.
    Natürlich kann man die Daten absichern - aber warum?
    Dass sich der SinglePlayer nicht selbst betrügen kann?
    Früher war das vielleicht ein Thema - da es vor dem Internet nur lokale SinglePlayer Wetttbewerbe und Highscores gab.
    Da war es schon recht interessant sich einen Vorteil durch Wertemanipulation zu verschaffen.
    Aber heute? Für was?
    Lass den SinglePlayer doch betrügen!
    Wenn es ihm dadurch mehr Spaß bereitet warum nicht - auch ein Cheater kann ein zahlender Kunde sein.
    Es ist heutzutage einfach absolut unwichtig im SinglePlayer ein Anticheatsystem einzubringen denn im Grunde wäre die Möglichkeit eher eine Kaufgrund mehr.

  • Wenn du wirklich safe sein möchtest, musst du dir einen Kernel Treiber schreiben, dann kannst du einfach die Process und Thread ObRegisterCallbacks nutzen und alles auf den Process denien.
    Kenne ich selber sonst von Battleye, EAC etc.

  • Es wurde 166 Cheat-Programme getestet - darunter auch das beste und bekannteste: Cheatengine - und mit keinem war es möglich die Werte auszulesen.


    [Blockierte Grafik: http://i1234.photobucket.com/albums/ff408/BrUnOXaVIeR/SCUE4-Test_zpsuatzirb6.png~original]

    Verschlüsselung vs Performance:
    Die Werte müssen einfach nur gut verschlüsselt sein - und zwar so, dass es auch Brute Force standhält.
    Das kann angesichts des Rechenaufwands mit jedem Tick eine sehr performancelastige Lösung sein.
    Wer ein großen Datenstrom mit einer kurzen Eventzeit rechnen lässt, hat kaum noch Puffer, um diese oder die meisten Daten davon noch in Echtzeit zu verschlüsseln.
    Denn das wäre die einzige Möglichkeit es dem "Hacker" zu schwer wie möglich zu machen.

    In dem von mir erwähnten Plugin braucht das setzen/lesen eines verschlüsselten Wertes im RAM 0.00ms-0.01ms. Ein einziger Tick-Event dagegen etwa 4.00ms!


    [Blockierte Grafik: http://i1234.photobucket.com/albums/ff408/BrUnOXaVIeR/SCUE4-Stats_zpsuz9wwmrq.png~original]


    Beispiel verschlüsselung:
    [Blockierte Grafik: http://i1234.photobucket.com/albums/ff408/BrUnOXaVIeR/SCUE4-KeyGenerator_zpsehdhewtw.jpg~original]

  • @DiamondShard
    Und was soll dein Posting jetzt vermitteln?
    Mein Kommentar bezog sich allgemein auf die Sinnhaftigkeit SinglePlayerSpiele gegen Cheaten zu schützen.
    Und bei deiner Verschlüsslungs-Performancemessung solltest du auf serialen Aufbau achten und nicht das Total-Ergebnis messen.
    Das Mehr wegen des Rechnaufwandes bezieht sich onthefly auf jede Aktion und nicht so wie du das misst auf dies Gesamtheit nach der Ausführung.
    Sorry, dein Posting nützt weder der Information noch dem Threadstarter und dient wohl augenscheinlich nur dazu 2 meiner 3 Punkt in Frage zu stellen, bei der du auch noch eklatante Denkfehler zu Tage förderst.

  • Also eigentlich produzieren wir ja ein Multiplayer Game - Ich hab das wohl irgendwie falsch vermittelt ^^


    Trotzdem Danke an DiamonShard und Sopex :)

  • Wenn ein Server vorhanden ist dann gilt sowieso immer: so viel wie nur geht auf dem Server berechnen lassen, nach Möglichkeit am Besten absolut alles.


    Warum sollten XP auf dem Client berechnet werden? Gerade so etwas gehört auf den Server, der Client hat den Wert lediglich anzuzeigen, wenn überhaupt.


    Würde ich ein MP Spiel machen würde ich dem Spieler so wenig Zahlen wie nur möglich geben. Außer man will unbedingt den progressiven Spielgedanken der Spieler fördern, dann sind Zahlen natürlich etwas gutes. Soll es nicht progressiv sein, weg mit sämtlichen Zahlen. Bei Spielen mit Erfahrungspunkten, löst das bei Spielern aber meist nur Grinding aus. Aber ich weiß ja nicht was für ein Spiel ihr macht.


    Wenn ein Spieler nämlich keine Zahlen hat, kann er auch schlecht danach im RAM / im Savegame suchen um sie zu manipulieren, weil er weiß ja nicht mal, dass die Zahl überhaupt existiert.

  • naja jeder hacker weis das in jeden lebensbalken etc zahlen sind zumal ja pcs aus zahlen bestehen, aber wie schon gesagt soviel wie möglich auf der server seite berechnen lassen denn da müssen die erstmal ein server hacken was wesentlich aufwendiger ist.
    nur es gibt immer sachen die am client sein müssen wie etwa positions berechnungen da man sonnst extreme lags bekommt

  • Hallo,


    ich möchte die XP auf dem Clienten speichern: ich will keine eigenen ofiziellen Server aufbauen und die Zusammenarbeit mit den SteamServern klappt nur mäßig.
    Deshalb suche ich eine Möglichkeit die XP Int auf dem Client zu specihern. :)


    Das andere "so viel wie nur geht auf dem Server berechnen lassen" weiß ich :))

  • Und selbst das braucht er nicht, wenn die Spieler eher Interesse daran haben privat zu hosten anstatt öffentlich. Kommt halt auch auf die Art des Spiel an.


    Lebensbalken als Grafik vom Server übertragen und mit der Auflösung skalieren lassen. Dann kommt Niemand auf die Idee da ne eindeutige Zahl, nach der man irgendwo suchen könnte, raus lesen zu wollen. ;) Oder man setzt die Lebensanzeige vollkommen anders um. Ein Problem ist aber auch schon, dass die Spieler so verwöhnt und faul sind, dass sie inzwischen in jedem Spiel grob die gleichen Anzeigen finden, bloß nichts neues, vielleicht sogar viel besseres, woran man sich erst mal gewöhnen müsste. XD