Frage

Ich Spiele herum mit einem native (non-web) single-player-Spiel, das ich Schreibe, und es fiel mir auf, dass mit einer täglichen/wöchentlichen/all-time online-highscore-Liste (denken Sie Xbox Live Leaderboard) würden machen das Spiel viel interessanter, indem einige (kleine) Menge an Gemeinschaft und Wettbewerb.Aber ich fürchte, die Leute würden sehen, wie eine Funktion als eine Einladung an Hacker, die davon abhielten regelmäßige Spieler aufgrund der unverschämt hohen erzielt.

Ich dachte über die offensichtlichen Möglichkeiten der Abwehr solcher versuche (public/private key-Verschlüsselung, zum Beispiel), aber ich habe herausgefunden, Recht einfache Möglichkeiten, Hackern umgehen konnte alle meine Ideen (extrahieren des öffentlichen Schlüssels aus dem Binär-und so senden gefälschte verschlüsselt erzielt, zum Beispiel).

Haben Sie jemals realisiert ein online-highscore-Liste oder Tabelle?Haben Sie eine halbwegs hacker-Beweis, Art und Weise der Umsetzung dieser?Wenn ja, wie haben Sie es tun?Was sind Eure Erfahrungen mit hacking-versuche?

War es hilfreich?

Lösung

Am Ende der Tag, Sie verlassen sich auf das Vertrauen in die Kunden.Wenn der client sendet die replays an den server, ist es leicht genug, um nachvollziehbare oder ändern einer erfolgreichen durchspielen und senden an den server.

Ihre beste Wette ist, um die Messlatte für Betrug vor, was ein Spieler halten würden lohnt sich überwinden.Um dies zu tun, gibt es eine Reihe von bewährten (aber oft unerwähnt bleiben) - Techniken, die Sie verwenden können:

  1. Lassen Sie die schwarze Liste gesetzt Betrüger in einem honeypot.Sie können sehen Sie Ihre eigenen Partituren, aber niemand sonst kann.Wenn Sie überprüfen, indem Sie sich anmelden mit einem anderen Konto, das Sie denken, Sie haben erfolgreich Ihr Spiel gehackt.
  2. Wenn man jemanden als cheater markiert wird, verschieben sich jedes Konto Folgen aus atmungsaktiven bis zu einem bestimmten Zeitpunkt in der Zukunft.Das zufällige, innerhalb von ein bis drei Tagen.In der Regel, ein Betrüger werden versuchen, mehrere Methoden und letztendlich erfolgreich.Durch das zurückstellen der Konto-status Rückmeldung erst zu einem späteren Zeitpunkt, Sie verstehen nicht was haben Sie gefangen.
  3. Erfassen Sie alle Spiel-Benutzer-Befehle und sendet Sie an den server.Überprüfen Sie Sie gegen andere Punkte innerhalb eines gegebenen delta.Zum Beispiel, wenn der Spieler den Shooting-action-200 mal, sondern erhalten eine Punktzahl von 200.000, aber die benachbarten Spieler im Spiel Schuss 5000 mal zu erhalten eine Punktzahl von 210.000, es können trigger eine Schwelle, die Fahnen der person, für weitere oder menschlichen Untersuchung.
  4. Hinzufügen von Wert und Dauerhaftigkeit zu Benutzer-accounts.Wenn Ihre Benutzerkonten haben, unlockables für Ihr Spiel, oder wenn Sie Ihr Spiel Kauf erforderlich, das Gewicht von einem Verbot ist größer als der Benutzer kann nicht wieder seinen alten account status, indem Sie einfach erstellen Sie ein neues Konto über einen web-basierten proxy.

Andere Tipps

Keine Lösung ist jemals perfekt zu sein, während das Spiel ausgeführt wird, auf einem system unter der Kontrolle des Benutzers, aber es gibt ein paar Schritte, die Sie ergreifen, um hacking das system mehr Probleme.In das Ende, das Ziel kann nur sein das hacken der system-mehr ärger als es Wert ist.

  • Senden Sie einige zusätzliche Informationen, die mit den high-score-Anforderungen zu bestätigen die server-Seite.Wenn Sie erhalten 5-Punkte für jedes X, und das Spiel enthält nur 10 Xs, dann hast du noch ein paar zusätzliche Reifen um die hacker zu springen durch, um Ihre Partitur als gültig akzeptiert.
  • Haben der server sendet eine zufällige Herausforderung, die erfüllt werden müssen, mit ein paar bytes des Spiels Binärdatei aus, dass offset.Das bedeutet, dass der hacker muss immer eine unberührte Kopie der Binärdatei um (nur ein bisschen mehr Mühe).
  • Wenn Sie Lizenzschlüssel besitzen, erfordern Sie hohe Punktzahlen, um Sie, so können Sie verbieten Menschen gefangen hacking the system.Dies lässt Sie auch verfolgen ungültige versuche, wie oben definiert, zu verbieten Menschen testet das Protokoll, bevor die überhaupt noch der Vorlage einer gültigen score.

Alles in allem aber, das Spiel populär genug, für die Menschen zu kümmern, es zu hacken, ist wahrscheinlich eine weit größere Herausforderung.

Ich glaube nicht, dass es möglich ist.

Ich habe es getan, bevor mit ziemlich einfachen key-Verschlüsselung mit eine komprimierte Binärdatei, die funktionierte gut genug für die Sicherheit, die ich benötigte, aber ich denke ehrlich gesagt, dass, wenn jemand der Auffassung knacken Sie Ihre online-Highscore-Tabelle ein hack, es wird getan werden.

Es gibt einige ziemlich traurige Menschen gibt, die nebenbei auch ziemlich helle, es sei denn, Sie können Sie alle verlegt, es ist eine verlorene Sache.

Wenn Ihr Spiel eine replay-system gebaut in, Sie können senden replays an den server und der server berechnet die Punktzahl von replay.

Diese Methode ist nicht perfekt, kann man noch cheat-durch die Verlangsamung des Spiels (wenn es ist action-basiert), oder durch das schreiben von einem bot.

Ich mache ein paar dieser, mit meinem Flash-Spiele, und es ist eine verlorene Schlacht, wirklich.Vor allem für ActionScript werden kann dekompiliert in etwas lesbarer code ist, ohne viel Aufwand.

Die Art und Weise, die ich getan habe es ist ein eher klassischer Ansatz der Zusendung der Partitur-und Spieler-Namen im Klartext und dann ein hash-Wert der zwei (richtig gesalzen).Sehr wenige Menschen sind entschlossen genug, um die Mühe, es herauszufinden, und die wenigen, die es tun würde, sowieso, negieren alle die Zeit, die Sie in Sie gesteckt.

Um es zusammenzufassen, meine Philosophie ist, verbringen die Zeit auf das Spiel besser und machen es gerade schwer genug, um zu betrügen.

Eine Sache, die könnte ziemlich effektiv ist, um das Spiel Zusendung der Partitur an den server mehrere Male, wie Sie spielen, senden Sie ein bisschen gameplay Informationen zu jeder Zeit, so dass Sie überprüfen, ob die Punktzahl ist "realistisch".Aber das vielleicht ein bisschen over-the-top, wirklich.

Das ist eine wirklich schwierige Frage.

Ich habe nie realisiert so etwas, aber hier ist eine einfache aproximmation.

Ihre größte Sorge ist, wegen der Hacker zu erraten, was Ihre Anwendung tut, und dann senden Ihre eigenen Ergebnisse.

Nun, zuerst von alle, es sei denn, Ihre Anwendung ist ein großer Erfolg, würde ich nicht besorgt sein.Tun so etwas ist extrem schwierig.

Die Verschlüsselung nicht mit dem problem helfen.Sehen Sie, Verschlüsselung schützt die Daten auf Ihrem Weg, aber es schützt nicht entweder von den Seiten der Transaktion, bevor die Daten verschlüsselt werden (das ist, wo die wichtigsten Schwachstellen werden kann).Also, wenn Sie verschlüsseln Sie sicher, dass die Daten privat bleiben, aber es wird nicht sicher sein.

Wenn Sie sind wirklich besorgt werde ich vorschlagen, Verschleierung von code und Design der score-system in einer Weise, die nicht ganz offensichtlich, was zu tun.Hier können wir leihen einige Dinge aus einem Verschlüsselungsprotokoll.Hier ist ein Beispiel:

  1. Sagen wir, der score ist eine Zahl m
  2. Berechnen Sie einige Art der Prüfung über das Ergebnis (zum Beispiel der CRC oder einem anderen system Sie sehen Füßen.In der Tat, wenn Sie nur erfinden, egal wie langweilig ist es wird es besser funktionieren)
  3. Erhalten Sie die privaten Schlüssel des Benutzers (D) von Ihrer remote-server (nur über eine sichere Verbindung offensichtlich).Du bist die einzige, die diesen Schlüssel kennen.
  4. Compute X=m^D mod n (wobei n der öffentlichen Modul von public/private-key-Algorithmus) (, dass ist, verschlüsseln Sie es :P)

Wie Sie sehen, dass dies nur der Verschleierung der anderen Art.Sie können nach unten gehen, wie lange, wie Sie wollen.Zum Beispiel können Sie nachschlagen die nächsten zwei Primzahlen bis X, und verwenden Sie zum verschlüsseln der CRC und senden es zu die server, so haben Sie die CRC und die Gäste separat und mit unterschiedlichen Verschlüsselungsverfahren.

Wenn Sie verwenden, die im Zusammenhang mit der Verschleierung ich würde sagen, das wäre schwer zu hacken.Dennoch verfügt das kann sogar rückwärts engingeered, es hängt alles davon ab, das Interesse und die Fähigkeit der hacker aber ...im ernst, was für eine Art freak nimmt sich so viel Mühe zu ändern Ihre Ergebnisse auf ein Spiel?(Es sei denn, WoW oder so)

Eine Letzte Anmerkung

Obfuscator für .NET

Obfuscator for Delphi/C++

Obfuscator für assembler (x86)

Wie die andere Antwort sagt, sind Sie gezwungen, zu Vertrauen, ein potenziell böswilliger client, und ein einfaches deterant plus ein wenig menschliche überwachung ist genug für ein kleines Spiel.

Wenn Sie möchten, Holen Sie sich einbilden, Sie haben dann zu suchen-Betrug Muster in die score-Daten, simmular Kreditkarte Unternehmen suchen, bei Ladung Daten.Je mehr Staat, mit dem der client kommuniziert auf Ihrem server, die möglicherweise einfacher ist es, ein Muster finden des richtigen oder falschen Verhaltens über den code.Für Beispiel.sagen, der Kunde habe zum hochladen einer Zeit-basierten audit-log der Partitur (und vielleicht können Sie auch verwenden, um lassen Sie andere Kunden beobachten Sie die top-Spiele), der server kann dann überprüfen, ob die Punktzahl melden, bricht die Spielregeln.

Am Ende ist dies immer noch darüber, wie teuer genug, zu entmutigen Betrug der Anzeigetafel.Sie möchten ein system, wo Sie können immer verbessern die (leichter update)server-code, um mit jeder neuen Angriffen auf Ihre Validierungs-system.

@Martin.

Dies ist, wie ich glaube, Mario Kart Wii funktioniert.Die zusätzlichen bonus ist, dass Sie können lassen Sie uns alle die anderen Spieler zu beobachten, wie die high-score-Halter bekam die höchste Punktzahl.Die lustige Sache über dieses ist, dass, wenn Sie heraus überprüfen die schnellsten "Murren Vulkan"mal Weg, du wirst sehen, dass sich jemand einen shortcut, mit denen Sie überspringen 95% der Strecke.Ich bin mir nicht sicher, ob Sie immer noch als die Schnellste Zeit.

Sie können es nicht auf eine nicht-Vertrauenswürdige client-Plattform.In der Praxis ist es möglich zu besiegen sogar eine "Vertrauenswürdige" - Plattformen.

Es gibt verschiedene Angriffe, die unmöglich zu erkennen, im Allgemeinen Fall - vor allem ändern von Variablen im Speicher.Wenn Sie nicht Vertrauen können Ihre eigenen Programm-Variablen, kann man nicht wirklich viel erreichen.

Die anderen oben erwähnten Techniken können helfen, aber Sie lösen nicht das Grundproblem, die auf eine nicht-Vertrauenswürdige Plattform.


Aus Interesse, sind Sie sicher, dass die Menschen versuchen zu hacken high-score-Tabelle?Ich habe ein Spiel online für mehr als zwei Jahren mit einem trivial-crackabe high-score-Tabelle.Viele Menschen haben es gespielt, aber ich habe keine Beweise dafür, dass jemand versucht, zu knacken die high scores.

In der Regel, die größte Verteidiger gegen den Betrug und hacking ist ein community watch.Wenn eine Partitur scheint eher misstrauisch, kann ein Benutzer den Bericht der Partitur für Betrug.Und wenn genug Leute melden, die Partitur, die Wiedergabe kann überprüft werden, indem die admins zur Geltung.Es ist ziemlich einfach, den Unterschied zu sehen zwischen einem bot und ein Spieler, wenn es bereits ein paar der Spieler, die das Spiel in vollen Legitimität.

Die admins überwachen müssen nur diejenigen erzielt, die Frage gestellt bekommen, denn es gibt eine kleine chance, dass eine Reihe von Benutzern den Zug zu entfernen, perfekt hart verdienten Punkten.Und die admins nur die paar erzielt, die berichtet werden, so dass es nicht zu viel von Ihrer Zeit, noch weniger für ein kleines Spiel.

Auch nur zu wissen, dass, wenn Sie hart arbeiten, um einen bot, nur um abgeschossen werden wieder durch das report system ist eine abschreckende Wirkung in sich.

Vielleicht sogar die Verschlüsselung der replay-Daten würde nicht Schaden, entweder.Replay Daten ist oft klein, und die Verschlüsselung, es würde nicht nehmen zu viel Platz.Und zu helfen, verbessern Sie sich, dass der server selbst würde versuchen, die Wiedergabe, indem Sie die control-Protokoll, und machen sicher, es passt mit der Punktzahl erreicht.

Wenn es etwas gibt, das anti-cheat-system nicht finden können, die Benutzer finden es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top