| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Pixelschubser Registriert seit: Sep 2001
Beiträge: 65
| Anti Cheat Engine
Hallo zusammen, ich habe mich wegen eines Online Gewinnspiels letztens mit dem leidigen Thema Cheater und Cheat-Tools beschäftigen müssen, da - egal ob es sich um einen wertvollen Preis oder eine 10,00€ Kaffeemaschine handelt - die Leute betrügen wie blöd ![]() Es gibt da ja leider ziemlich effiziente und gemeine Tools um so ziemlich jedes Online/Offline Game durch Manipulation der Speicherhinhalte zu betrügen. Ich will jetzt hier keine Produktnamen o.ä. nennen, nicht das noch jemand auf doofe Ideen kommt. Mir geht es hier um Gegenmaßnahmen. Wir haben in unseren Games zwar md5 Hashes drinnen, nur reicht das für eine Liveabsicherung leider nicht aus. Es gibt da noch sog. Obsfuscatoren, die zur Laufzeit die Werte im Speicher verschleiern. Ein Beispiel ist: http://www.secureplay.com/obfuscator...obfuscator.htm von Secureplay. Meine Frage ist: Hat damit schon jemand Erfahrung gemacht? Was taugt die Lösung - oder im allg. solche Lösungen? Sind sie rundum sicher? (wahrsch. nicht - nichts ist 100% sicher) Gibt es noch andere Alternativen? Danke schon mal im Vorraus
__________________ http://www.visuellgestalten.de |
| | |
| | #3 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
nichts ist sicher. alternativen: bei gewinnen ist es sowieso so, das jeder eine teilnahmeberechtigung bekommen muss (ausser angehörige usw.), ohne spielen zu müssen. somit ist das spiel automatisch nur schmückendes beiwerk. und euren kunden auch egal. die wollen adressen von möglichen käufern und keine game-freaks. spiel und gewinnpreise sind nur alternativen zur bikinidame == aufmerksamkeit erregen und beachtet zu werden, damit dann in folge auch das eigentliche produkt zur kenntnis genommen wird. für hacker sind nur highscores interessant (und an die teilnehmerliste zu gelangen). wer wird sich schon die teilname erhacken wollen, wenn's dafür ein ganz normales formular gibt? wer was gewinnt entscheidet das los. ist auch nicht sicher: man könnte den notar bestechen. aber das ist dann eine andere geschichte.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-06-2008 um 16:01 Uhr) |
| | |
| | #4 (permalink) |
| Banned Registriert seit: May 2008
Beiträge: 514
|
hm schön und gut obfusscator hin und her, wie schon gesagt wurde ganz sicher gibts nicht! die werte werden ja wohl in einer Datenbank gespeichert, das spiel das zwar auf dem server liegt aber auf dem heimischen desktop gespielt wird muss diese werte ja auch übertragen viel einfacher als dein spiel da dexcompileren und dann versuchen den code zu verstehen ists den datenverkehr zu fälschen und das auchohne dein spiel aufzudröseln oder es zu verändern, das wäre mein ansatzpunkt. sendest du irgendwas was ich mit nem packet capture sniffer nicht sehen kann? md5 hash´s wofür? sendest du ein random passwort vom server oder liesst flash eines aus php oder sonst woher, toll kann ich sehen , auslesen als md5 zurücksenden. hast du nen algorythmuss im spiel der da noch hinzukommt zu deinem passwort? erst da müsste ich mal ins spiel schauen und diese obfusscatoren , gibt keinen den man nicht wieder entziffern könnte was an variablen da drin steht. das ans datum zu hängen wäre ne überlegung und dann hat ein spieler ne andere uhrzeit als der server und schon kann an nichtmehr legal spielem, könnte man synchronisieren und ich könnte es wieder sehen. ssl und https erst da fängts an schwierig für scriptkiddys zu werden und erst da aber selbst das lässt sich umgehen, alles was man lesen kann kann man fälschen. mfg cc |
| | |
| | #5 (permalink) |
| Pixelschubser Registriert seit: Sep 2001
Beiträge: 65
| hehe ![]() Danke für euren Input. Nun... mit sowas habe ich schon gerechnet. Naja, da lohnt der Aufwand bei den meisten Spielen ohnehin nicht, zu versuchen sie 99% sicher zu machen, vor allem wenn man es eh nicht zu 100% schafft. Aber trotzdem danke!
__________________ http://www.visuellgestalten.de |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Apr 2002 Ort: Vorm PC
Beiträge: 1.583
|
100% sicherheit gibt es schon, hängt nur von der logik des spiels ab. z.b. ein servergesteuertes brettspiel cheaten kann man in dem fall nur mit hilfe von künstlicher intelligenz, die für dieses spiel optimiert wurde. je nach level kann's sehr lange dauern mit der KI, z.b. in schach dauert's auch ein jahrzehnt bis die software den menschen endgültig besiegt. |
| | |
| | #8 (permalink) |
| . . .._ Registriert seit: Mar 2002
Beiträge: 44
|
Nun gut, nachdem sich jetzt alle darüber ausgelassen haben, dass man kein Spiel 100% sicher machen kann, kann man sich ja trotzdem darüber austauschen, was einem Cheater den Spaß verderben könnte, oder? Eine Faustregel wird doch bestimmt sein, soviel Logik wie möglich auf dem Server zu halten, oder? Kritisch sind alle Stellen, an denen das SWF Daten zum Server sendet, weil die kann ich manipulieren.... Mich würde interessieren, was es für Möglichkeiten gäbe, sicherzustellen, dass nur Daten akzeptiert werden, die vom originalen SWF stammen? In einem aktuellen Projekt werden bei bestimmten Events nur Timestamps zum Server geschickt. Alle Berechnungen usw. erfolgen anhand der Timestamps auf dem Server... Nun würde ich gerne verhindern, dass der Cheater sich ein eigenes SWF (oder sonstiges Script) bastelt, dass diese Timestamps schickt. Kann man irgendwie nachvollziehen, woher die Serveranfragen kommen (Ich stell mir so was wie ne md5-Checksumme vom SWF vor)? Oder hat man da keine Chance, weil jede Serveranfrage einfach ein HTTP Request ist und man nicht mehr nachvollziehen kann ob diese aus einem SWF oder sonstigen Script kommt...? Wie siehts mit Captchas ( zum Beispeil beim Abspeichern des Highscores ) aus? Ist das eine Hürde oder lächelt da ein geübter Cheater müde? cheers, spog
__________________ just visiting this planet... |
| | |
| | #9 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Eine swf muss ja mit dem Server auch kommunizieren. Und genau diese Kommunikation ist die Schwachstelle schlechthin, da man die Daten bevor sie versendet werden nochmals "bearbeiten" kann. Damit die Daten nicht mehr allzu leicht manipuliert werden können, kann man diese "verschlüsseln", der Algorithmus dazu ist dann aber leider in der swf, die man relativ einfach analysieren kann. Leider kenne ich mich damit zu wenig aus, um eventuelle Tipps zu geben wie man dies erschweren könnte. |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
daten können falsch oder richtig sein der sender kann richtig oder falsch sein du kannst nur erkennen was du bekommst, aber nicht von wem. (ein realer brief hat eine entstehungsgeschichte und ein gedächtnis: fingerabdrücke, man kann die tinte analysieren, die schrift graphologisch untersuchen usw. - eine handvoll bits bieten keine solche möglichkeiten.) wenn du falsche daten bekommst, das ist eindeutig falsch. wenn aber richtige daten kommen, dann kannst du niemals unterscheiden, ob diese daten richtig sind, weil richtig oder ob sie richtig sind, weil so gut gefälscht. Captchas sollen verhindern, das ein programm antwortet. z.b. automatisch werbemails in foren eintragen. wenn ein hacker ein erschwindeltes highscore senden will, dann ist das ein mensch, der das macht.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (06-08-2008 um 05:50 Uhr) |
| | |
| | #11 (permalink) |
| . . .._ Registriert seit: Mar 2002
Beiträge: 44
|
ok, ich kann die quelle nicht identifizieren. und einen 100% schutz gibt es eh nicht. aber: wie mach ich es dem cheater möglichst schwer? gibt es nicht zwei, drei methoden, die zusammengenommen, den spaß am cheaten deutlich schmälern? mir fallen da zum beipiel zwei punkte ein. würde das was nützen? 1. was ist, wenn ich für die serverkommunikation z.bsp. amf benutze? da werden die daten in einem binären format übertragen, richtig? wenn ich diese kommunikation abfange und manipulieren will, muss ich also erstmal wieder aufwand betreiben um diese daten zu lesen, manipulieren und weiterzuschicken, oder? das würde es dem cheater doch schon mal schwerer machen... 2. wenn ich meine daten im swf verschlüssel, zwinge ich den cheater dazu, das swf zu decompilieren und im code die entsprechende stelle zu finden und zu verstehen, damit er überhaupt manipulierte daten erzeugen kann. wenn ich das swf mit einem obfusicator bearbeitet habe, macht das decompilieren und suchen im code doch auch nicht wirklich spass. was gäbe es noch? viele grüße, spog
__________________ just visiting this planet... |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Jul 2008
Beiträge: 215
|
Zu 1.) Das Format AMF ist nicht sicherer. Ich meine es gibt sogar ein freies Tool, dass den "Amf - Datentransfer" abfangen kann und entschlüsselt, man neue Werte eingeben kann und diese "manipulierten" Werte an das serverseitige Skript geschickt werden. Das eignet sich halt gut für Debuggingzwecke, aber auch für Manipulationen. Zu 2.) Das würde nur etwas bringen wenn du den Datenverkehr auch sicher, z.B. asynchron, verschlüsseln würdest. Denn wenn der Datenverkehr leicht zu "entschlüsseln" ist, d.h. du schickst z.B. einfach einen unverschlüsselten POST Wert, der die Punkte im Spiel repräsentiert, braucht der Cheater überhaupt nicht in die SWF gucken. Auch darfst du nicht außer Acht lassen, dass du dann ggf. die SWF Datei verschlüsselt hast, aber diese noch immer benutzbar ist bzw. benutzbar sein muss. Es kann also sein, das ein Cheater DEINE SWF in seine SWF lädt und von dort aus steuert. Um das Problem der Manipulation einzuschränken, muss man halt erstmal schauen, um was für eine Art Spiel es sich handelt. Bei einem Rennspiel könnte man z.B. an mehrere Messpunkten die gefahrenen Zeiten zum Server schicken und dort die Gesamtzeit errechnen. Ist die gefahrene Zeit zwischen 2 Messpunkten unwahrscheinlich, kann man von Manipulation ausgehen. Zusätzlich könnte man schauen, in welcher zeitlichen Abfolge das Skript auf dem Server aufgerufen wurde. Ist die zeitliche Spanne zu gering, kann man wieder von Manipulation ausgehen. Wenn man dann noch die Aktivitäten des Benutzerkontos protokolliert, kann man Cheater schnell entdecken. Aber es ist nicht nur ein Problem von Browsergames, sondern von allen Spielen und Programmen, die auf einem Client installiert sind bzw. dort laufen und mit einem Server kommunizieren müssen. Bloß werden dann dort Speicherbereiche manipuliert oder die Kommunikation mit dem Betriebssystem abgefangen. Darum steht ja bei den meisten Spielen auch: "Die Preise werden unter allen Teilnehmern verlost." |
| | |
| | #13 (permalink) |
| Krtek Registriert seit: May 2007 Ort: Essen
Beiträge: 154
|
Ich habs mal so gelöst: Ich hab die Daten die übergeben werden verschlüsselt und jeden Tag einen anderen Schlüssel genommen. Die Datei zusätzlich verschlüsselt Ich habe aus den übergebenen Werten den Kehrwert errechnet und diesen mit einer wechselnden Zahl multipliziert. Mein PHP Script hat das ganze zurück gerechnet und schon konnten die Daten übertragen. Des weiteren hab ich vom PHP Script überprüfen lassen, wer die Werte überhaupt übergibt... |
| | |
| | #14 (permalink) | |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
| Zitat:
utnerschied ![]() RSA kennt auch jede sau aber dasfür ein kleines gewinnspiel mal eben zu knacken ist dann doch zu aufwendig.
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi | |
| | |
| | #15 (permalink) | |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| Zitat:
Oder was genau wolltest du damit zum Ausdruck bringen? | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |