Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-06-2008, 15:36   #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
eye-fx ist offline   Mit Zitat antworten
Alt 05-06-2008, 15:47   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Das nützt dir auch nix, damit kannst du zwar den Code verschleiern aber nicht den Betrug abstellen.
Da man immer noch genug Wege hat die Daten zu manipulieren ohne den Inhalt deiner swf zu wissen.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 05-06-2008, 15:53   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Alt 05-06-2008, 16:12   #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
ccode ist offline   Mit Zitat antworten
Alt 06-06-2008, 19:00   #5 (permalink)
Pixelschubser
 
Registriert seit: Sep 2001
Beiträge: 65
Zitat:
Zitat von hgseib Beitrag anzeigen
man könnte den notar bestechen. aber das ist dann eine andere geschichte.
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
eye-fx ist offline   Mit Zitat antworten
Alt 07-06-2008, 10:57   #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.
Gnut ist offline   Mit Zitat antworten
Alt 07-06-2008, 11:02   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Vorm PC
Beiträge: 1.583
wie schon zu tausendfach in diesem forum erwähnt: wenn's um sicherheit geht, MUSS der SERVER mitspielen.
Gnut ist offline   Mit Zitat antworten
Alt 05-08-2008, 19:22   #8 (permalink)
. . .._
 
Benutzerbild von spog
 
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...
spog ist offline   Mit Zitat antworten
Alt 05-08-2008, 20:07   #9 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
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.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 06-08-2008, 04:47   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
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)
hgseib ist offline   Mit Zitat antworten
Alt 06-08-2008, 07:36   #11 (permalink)
. . .._
 
Benutzerbild von spog
 
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...
spog ist offline   Mit Zitat antworten
Alt 06-08-2008, 08:52   #12 (permalink)
mut
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."
mut ist offline   Mit Zitat antworten
Alt 29-08-2008, 22:07   #13 (permalink)
Krtek
 
Benutzerbild von Bondscoach
 
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...
Bondscoach ist offline   Mit Zitat antworten
Alt 30-08-2008, 11:41   #14 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Zitat:
Zitat von rendner[i] Beitrag anzeigen
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.
ja ob der cheater den algorithmus nun sieht oder nicht, macht keinen
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
_crypto_ ist offline   Mit Zitat antworten
Alt 30-08-2008, 12:17   #15 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
ja ob der cheater den algorithmus nun sieht oder nicht, macht keinen
utnerschied
Wenn ich den Algorithmus habe, kann ich meine gefälschten Daten mit diesen verschlüsseln und absenden. Ohne diesen Algorithmus wird es mir sehr schwer fallen etwas zu versenden was auch "Sinn" ergibt.

Oder was genau wolltest du damit zum Ausdruck bringen?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele