Also haben wir das jetzt schon mehrmals durchgemacht, wir veröffentlichen ein Spiel (für wenig Geld) und jemand hackt es und stellt es auf einen Spiegel. Wir richten Google Alerts für alle unsere Apps ein, damit wir täglich erfahren, wer das Hacken ausführt. Bisher haben wir den Lizenzierungsdienst implementiert, wie von Google vorgeschlagen. Unser Salt wird jedes Mal zufällig hergestellt, wenn die Lizenz mit der eindeutigen Geräte-ID initiiert wird. Wir führen den Überprüfungsdienst einmal aus, wenn die Anwendung zum ersten Mal gestartet wird. Wir generieren dann einen 512-Zeichen-Hash für den Schlüssel und den gespeicherten Wert, mit dem von da an in SharedPreferences verglichen wird.
Jetzt weiß ich, dass bei einmaliger Überprüfung wahrscheinlich die Anwendung blockiert wird. Unser Bytecode wurde höchstwahrscheinlich ohne die Zeile, die die Prüfung einleitet, überprüft und neu kompiliert.
Von hier aus möchte ich unseren Code nicht verschleiern, da ich ihn schon einmal kaputt gesehen habe. Ich möchte etwas solideres, und ich möchte auch lernen, wie man das richtig macht. Ich bin an dieser Stelle mehr am Lernen als am Geldverdienen interessiert, da nur 2% der Leute jemals nach einer gehackten Version suchen werden.
Bisher habe ich mir selbst einen Zufallszahlengenerator ausgedacht, der in mehreren Startbereichen des Spiels platziert ist. Bei der Initiierung (z. B. 1 von 50 Mal) wird die Lizenz überprüft. Ich weiß, dass dies das Hacken erschweren würde, da der Cracker jeden Fall eliminieren, kompilieren, eliminieren, kompilieren müsste. Diese Methode ist jedoch immer noch knackbar ... also, was schlägt ihr vor? Auch hier bin ich wirklich an diesem Sicherheitsprozess interessiert. Bitte informieren Sie sich, verwandeln Sie dies nicht in eine Diskussion über Verschleierung oder regelmäßige Überprüfung anhand eines Zeitstempels.
Vielen Dank
quelle
Antworten:
Meine Idee ist kein Hacker-Beweis, könnte aber das Interesse für das Hacken des Spiels aufheben.
Freemium-Modell
1) Machen Sie die ersten 5-10 Level kostenlos, damit die Leute das Spiel lernen und Spaß haben können, ohne dafür zu bezahlen. Weniger werden das erste Level hacken wollen und das Spiel wird sich durch das Freemium-Modell noch weiter verbreiten.
Shareware / Clustered Levelpacks
2) Lassen Sie einen Teil der Spielebenen oder der Logik online bleiben. Z.B. Wenn Sie Level 5 oder 10 oder 15 erreichen, laden Sie kleine Teile für das Spiel herunter und senden Sie jedes Mal das Fortschrittsprotokoll aus dem Spiel und validieren Sie dies anhand möglicher Werte + Hashcodes. Dies könnte es möglicherweise ermöglichen, gehackte Konten automatisch zu schließen.
Stealth-Betrügerschutz
3) Sie können auch einfach "kleine Warnflaggen" zählen, die Sie im Spiel platzieren. Überprüfen Sie am Anfang nicht nur die "Validierung", sondern bauen Sie diese Flags nicht in die Spielelogik selbst ein. Lass es das Gameplay nicht brechen, denn dann wird niemand danach suchen. Wenn der Benutzer das Monster am Ende des Levels erreicht hat, überprüfe, ob protokollierte Warnflags vorhanden sind. Diese werden im Spiel nicht angezeigt, sodass der unwissende Benutzer mit einer gehackten Edition möglicherweise stunden- / tagelang spielt und plötzlich erkennt, dass er das Spiel nicht beenden oder zum nächsten Level gelangen kann, da das Spiel einen "Fehler" aufweist. Was der Benutzer nicht wusste, war, dass dieser Fehler nur bei gehackten Clients auftritt.
Fazit
Sei schlauer als die Cracker. Machen Sie sie zum Narren, die Arbeit sei erledigt. Machen Sie einen Copyprotection und wissen Sie, dass die fortgeschritteneren Cracker ihn entfernen können. Aber sie wollen wahrscheinlich nicht 50 Level spielen, um zu überprüfen, ob der Riss auch vollständig funktioniert.
Sobald sie dieses Problem erkannt haben, können sie es auch lösen. Wenn Sie das Spiel jedoch in Level-Packs aufteilen, können Sie zwischen jedem Download des Packs eine Überprüfung durchführen. Wenn Sie also gehackte Client-Hash-Daten erhalten, führen Sie einfach eine Ausnahme aus und stürzen Sie das Spiel auf dem Client ab. Whoops das Spiel ist abgestürzt. Sagen Sie es nicht, weil es gehackt ist. Ein Programmfehler kann auftreten. :-)
Auch hier ist es kein Hacker-Beweis. Aber es könnte sie genug nerven, um zum nächsten Spiel überzugehen. Schließlich könnten Sie auch regelmäßige Updates für das Spiel veröffentlichen und nur die neueste Version sollte in der Lage sein, "die Aufzeichnungen zu veröffentlichen" usw., sodass die aktiven Benutzer aktualisieren müssten, um auf dem Laufenden zu bleiben.
quelle
Ich habe eine Weile apk dekompiliert und gehackt (nicht warez, sondern Mods und Hacks hauptsächlich für die Google Apps und das Android Framework, wobei ich mich immer an die Richtlinien der xda-Entwickler halte).
Sobald Sie lernen, Smali zu lesen, ist es fast so, als würden Sie den ursprünglichen Java-Code lesen (aber mit viel mehr LOCs). Jeder Code, den Sie hinzufügen, um nach Schlüsseln zu suchen, kann gefunden und gelöscht oder ersetzt werden. Sie müssen nicht jedes Mal neu kompilieren, um mehr als einen zu eliminieren (einige Suchvorgänge bewirken Wunder, um ähnliche Codeteile zu finden), und selbst wenn Kompilierungs- / Neukompilierungszyklen erforderlich sind, um sie zu finden, ist es nur eine Frage von ein oder zwei Minuten dekompilieren: alles wird von apktool und noch mehr von apkmanager automatisiert.
Mein Vorschlag an Sie ist jedoch, eine Art Online-Bewertungstabelle oder ähnliches zu implementieren. Wenn der Benutzer die Bewertungstabelle online betrachtet, können Sie den von Ihnen implementierten Hash-Code überprüfen und mit dem zugehörigen Google Mail-Konto vergleichen. Auf diese Weise können Sie den Hack bei Google melden und dem Benutzer des Warez eine böse Nachricht senden, in der erklärt wird, warum dies illegal ist.
Natürlich könnte ein neuer Hack implementiert werden, um die Wertungstabelle zu eliminieren, aber das würde das Interesse für die Warez verringern.
Viel Glück.
Aktualisieren
Nachdem ich nachgeforscht habe , um diese Frage zu beantworten: Injizieren von Code in APK (wirklich über den Amazon DRM-Mechanismus), kann ich ein wenig darüber erzählen, wie Amazon die Apps schützt: Es enthält Methoden zum Überprüfen der Gültigkeit der Installation überall (Sie können ein Beispiel sehen wie sie es in meiner Antwort auf diese Frage machen). Dies macht jeden Versuch, eine App zu hacken, nicht sehr schwierig, aber äußerst mühsam. Ich glaube, das ist eine Stärke: Hacker wollen nicht so viel Zeit mit so vielen sich wiederholenden Aufgaben verbringen: Es ist keine Herausforderung und langweilig. Der Hauptfehler, den ich bei diesem Ansatz sehe, ist die Möglichkeit, die Amazon-App selbst zu hacken, um natürlich immer eine gültige Antwort zurückzugeben. Wenn Sie jedoch Ihre aktuellen Hash-Checks mit einer Art Online-Check mischen, der auf Ihre Methoden verteilt ist, kann sich die Wahrscheinlichkeit, dass sie gehackt werden, drastisch verringern.
quelle
Entnommen aus meiner Lösung aus diesem Beitrag Vermeiden Sie apk geknackt
Implementieren Sie Ihre eigene Lizenzbibliothek
Ich verweise Sie auch darauf, dies anhand der YouTube-Aufzeichnung von Google I / O 2011 zu überprüfen:
Piraten ausweichen und Vampire stoppen
BEARBEITEN:
Die Präsentationsnotizen von Piraten ausweichen und Vampire stoppen
Einige grundlegende Schlüsselpunkte
quelle
#%3ar.page.15
in den URLs. Wenn Sie nicht automatisch zu dieser Seite weitergeleitet werden, sehen Sie sich den Link an, um zu sehen, wo / welche Seite Sie sich ansehen sollten.Ich weiß, dass Sie sich nicht wirklich für Verschleierung interessieren, aber ich muss wirklich darauf reagieren:
ProGuard ist meiner Erfahrung nach sehr zuverlässig, und dies, obwohl ich einige erweiterte Funktionen wie AIDL und nativen Code verwende, der die Java-Methode aufruft. Es erfordert ein wenig Arbeit, die Dokumentation zu lesen und die Dinge richtig zu machen, aber sobald Sie es sind Dort ist ProGuard äußerst zuverlässig und optimiert auch Ihre App.
Benutzerdefinierte Sicherheits- / kryptografische Tricks sind gut, aber ohne Verschleierung ist es meiner bescheidenen Meinung nach so, als würde man einen Stein ins Wasser werfen.
Ich habe ProGuard seit vielen Monaten in der Produktion verwendet und es funktioniert einfach einwandfrei.
Wenn Sie gerne lernen, lesen Sie das ProGuard-Handbuch sorgfältig durch, experimentieren Sie damit und überprüfen Sie die Ausgabeprotokolle.
quelle
Die Chance, dass es mehr talentierte Programmierer als SIE gibt (gilt für alle Programmierer), liegt bei 100%. Und wenn das stimmt, können Sie Hacking nicht beheben. Aber Sie können genauso viel Zeit und Mühe darauf verwenden, bankrott zu gehen.
Wenn Sie ernsthaft Geld verdienen möchten, müssen Sie einige Nachforschungen über Ihre Zielgruppe und Verhaltensforschung anstellen. Sie müssen Benutzer zum Spielen bringen, die neues Geld einbringen, und das ist es.
Außerdem hast du alles falsch verstanden. Hacker sind die aktivsten Mitglieder Ihrer Benutzerbasis. Sie verhalten sich einfach so, wie Sie es nicht beabsichtigt haben.
Nehmen Sie zum Beispiel Zynga-Spiele auf Facebook. Glaubst du, du wirst gehackt? - Sicher, und ungefähr +100000 Spieler spielen nur, weil Sie Bots verwenden können, die alles automatisieren.
Ein riesiges aktives Benutzernetz-Botnetz von tatsächlichen Personen bringt Gamer vom Typ Archivar dazu, das Spiel spielen zu wollen - und wenn dein Spiel cool aussieht, dann wird Avarage Joe auch spielen wollen. Wenn Avarage Joe spielt, möchten seine Freunde vielleicht spielen, und es wird Ihnen wahrscheinlich nichts anderes ausmachen, dann besser zu sein als sein Freund, Zeit zu töten oder etwas zu besprechen. Durchschnittliche Joe-Freunde werden höchstwahrscheinlich bereit sein, dafür zu zahlen, dass sie besser sind als Joe, aber Sie möchten lieber in etwas investieren, das sie in die Lage versetzt, besser zu werden.
Außerdem, wenn der wahre Wert darin besteht, das Spiel kostenlos zu spielen, würden Benutzer, die die kostenlose gehackte Version verwenden, höchstwahrscheinlich nie dafür bezahlt haben. Aber du bist Avarage Joes und ihre Freunde könnten es auch. Das ist also wie der billigste Werbespot, den Sie haben können. Wenn Sie mit Ihrer großen Nutzerbasis Geld verdienen möchten, erstellen Sie einfach neue Versionen des Spiels mit kleinen Änderungen an Levels und Grafiken.
quelle
Piraterie wird immer ein Thema sein. Im Großen und Ganzen können Cracker dieses Spiel von Security Though Obscurity besser spielen als Entwickler.
quelle
Was für eine interessante und beunruhigende Frage. :-) Als Übung können Sie versuchen, eine App über Amazon freizugeben. Sie haben ihren eigenen DRM-Mechanismus. Ich frage mich, ob es besser funktioniert als ProGuard ...
quelle
Meiner Meinung nach ist es eines der Schlüsselelemente, den Code so zu verteilen, dass nicht alles an einem Ort ist. Wenn Sie eine Funktion namens LicenseChecker.checkLicense () haben, die die Lizenz abruft und überprüft, können Sie sicher sein, dass sie sofort deaktiviert wird.
Der einzige Vorteil, den Sie haben, ist, dass die Cracker die Kommentare Ihres Codes (und, wenn Sie sie verschleiern, Methoden- / Variablennamen) nicht sehen können. Lassen Sie sich also etwas Seltsames einfallen. In onCreate () einer Aktivität erhalten Sie die Lizenz-ID. In onResume () erhalten Sie einen anderen Wert, mit dem Sie ihn vergleichen können. Vielleicht erstellen Sie einen Thread und führen dort einige Überprüfungen durch. Und dann könnte ein anderer irrelevanter Code (möglicherweise die Player-Steuerung) den Wert aufgreifen und vergleichen und das Ergebnis irgendwo speichern. Dann überprüfen drei weitere irrelevante Codeteile diesen Wert unabhängig voneinander und deaktivieren Ihre Anwendung, wenn sie nicht übereinstimmt.
Jetzt sollte ich im Voraus sagen, dass dies selbst Kopfschmerzen verursachen kann - offensichtlich ist überfüllter, böser Code schwerer zu debuggen und fehleranfällig. Im schlimmsten Fall erstellen Sie in rechtmäßig gekauften Anwendungen Fehlalarme.
Und natürlich kann alles rückentwickelt werden - sobald die Cracker den Ort gefunden haben, an dem die App deaktiviert ist, verfolgen sie den Wert, von dem gelesen wird. Sie könnten dann zurückverfolgen, wo es gespeichert ist, und das zurückverfolgen ..... oder, viel einfacher, sie können einfach die Endkontrolle deaktivieren (weshalb ich 3 verschiedene Orte empfohlen habe, die alle verzögert ausgelöst werden). Sicherheit ist nur so gut wie das schwächste Glied.
Sie werden die Piraterie nicht aufhalten können. Am besten verzögern Sie die Verbreitung einer Raubkopie, bis sich der anfängliche Hype um Ihre App beruhigt hat.
quelle
Erstens betrachte ich mich NICHT als Profi im Bereich der SW-Sicherheit, sondern als:
Ich denke, eine wichtige Sache ist es, die Anwendung in einigen Teilen von der Signaturprüfung abhängig zu machen. Lassen Sie es nicht sofort wirken, sondern setzen Sie einige Flags oder ändern Sie einige Werte. Verwenden Sie diese Flags später, überprüfen Sie sie und lassen Sie das Fehlen / die Unrichtigkeit von ihnen eine Ausnahme verursachen, die die Anwendung möglicherweise beendet. Solange die Signaturprüfung nur im Moment relevant ist, ist es einfach, sie zu umgehen und die Zeile zu entfernen. Sobald sie mehr Bereiche im Code berührt, ist Ihre Anwendung schwieriger (oder weniger einfacher ...) zu hacken. Auch aus meiner Sicht sollten nicht alle Überprüfungen dieselbe Routine für die Sanktion aufrufen, da dies auch das Auffinden und Beenden des Schutzmechanismus erleichtert.
Natürlich kann die Sanktion für Fälle illegaler Software variieren. Möglicherweise möchten Sie die Anwendung bei illegaler Verwendung zum Absturz bringen, aber Sie möchten sie möglicherweise auch weiterhin ausführen und nur eine Nachricht senden, in der der Benutzer aufgefordert wird, eine legale Kopie zu kaufen der Anwendung.
Wenn das genau das ist, was du nicht hören wolltest, dann tut mir deine Zeit leid :)
quelle
Android-Nutzer werden einfach den Schmerz ständiger Telefonhäuser akzeptieren müssen. Die einzige sichere Android-App ist eine immer verbundene Android-App.
Dies ist zum großen Teil auf die Weigerung von Google zurückzuführen, die Installation zu sperren, wie dies Apple getan hat. Unter IOS müssen Sie das Telefon jailbreaken. Unter Android können Sie jede APK auf eine werkseitige Installation laden.
Behalten Sie einige / die meisten / alle Inhalte auf dem Server. liefern Sie es in Stücken; Überprüfen Sie die Lizenz / Sitzung bei jedem Anruf.
quelle
Es wird unglaublich schwer sein, dieses Verhalten zu hemmen. Alles, was auf der Clientseite gehandhabt wird, kann mithilfe von APK-Dekompilierung und -Modding sowie Speicherbearbeitung mit Software wie Game Guardian ect gehackt werden .
Der einzige Weg, wie ich sehen kann, wie teilweise ich es umgehen kann, wäre, stattdessen ein Online-Spiel zu machen. Oder lassen Sie bestimmte Funktionen online erledigen. Oder wenn eine manipulationssichere Verschlüsselung wie denuvo jemals für Android / iOS verfügbar ist.
quelle