Für die kostenpflichtige Version meiner App habe ich mich für die Unlocker-App Route entschieden, da sie einfach zu implementieren ist, erlaubt individuelle Statistiken in der Entwicklerkonsole, aber hauptsächlich, weil ich keine 2 Codebasen pflegen müsste Version und ein anderes für die kostenpflichtige Version). Selbst wenn ich ein CVS benutze (was ich tue), wäre es immer noch ein Schmerz im Nacken, um Features und Bugfixes zu verschmelzen. Die Unlocker App ist viel einfacher zu implementieren ...Wie kann man eine "Android Unlocker" App sicherer gegen Cracker machen?
Aber das kommt mit einem gravierenden Nachteil, es ist wirklich einfach, die Sicherheitsüberprüfung zu überholen; es sei denn, ich verpasse hier etwas.
Egal was ich tue, wird eine solche Implementierung immer auf eine einfache if
, wie diese führen:
if(Program.isPremiumVersion()) {
// Remove ads...
}
Die isPremiumVersion()
Methode der Verantwortliche für die Arbeit bei der Prüfung für den bezahlten unlocker App-Installation ist, wenn die Zertifikate übereinstimmen und all das Zeug. Ja, die Unlocker-App ist durch die LVL geschützt (obwohl ich ein paar Artikel gelesen habe, in denen erwähnt wird, wie unsicher LVL ist, aber das ist im Moment nicht der Punkt). Aber am Ende, egal wie komplex der Code innerhalb isPremiumVersion()
wird, führt es immer zu einem true
oder Wert.
Das Überschreiben einer solchen Sicherheitsfunktion ist nur eine Frage des Reverse Engineering des Codes und es immer true
zurückgeben. Es ist nicht? Wie können wir unsere Android-Apps davor schützen? Und ja, der Code ist mit ProGuard verschleiert. Dennoch sollte es für jemanden, der gut genug ist, nicht zu schwer sein.
Bitte beachten Sie, dass ich nicht versuche, die Cracker zu bekämpfen, wir können einfach nicht gewinnen. Ich werde dabei nicht den Schlaf verlieren und unzählige Stunden mit der "perfekten Lösung" verschwenden. Ich suche nur nach einer Möglichkeit, es ein wenig sicherer zu machen. Das scheint zumindest theoretisch so einfach zu knacken. Bin ich aber falsch?
Irgendwelche Ideen, um die Sicherheit einer solchen Funktion zu verbessern?
Verwenden Sie einfach die Java-Entsprechung wenn 'IFDEF', oder machen Sie' isPremiumVersion' eine Konstante und verlassen Sie sich auf den Compiler, der es optimiert. – CodesInChaos
Keine Lösung für Ihr Crack-Problem, aber das Problem der Duplizierung von Code sollte gemildert werden, wenn Sie ein Android-Bibliotheksprojekt verwenden (nicht startbar). Es ist mehr oder weniger eine gemeinsam genutzte Bibliothek von Klassen/Layouts/Zeichnungsdateien, die von abschießbaren Anwendungen aufgerufen werden können. Erstellen Sie zwei Versionen Ihrer App (kostenlos, kostenpflichtig) und erstellen Sie eine Bibliothek mit dem gängigen Code. In Ihren kostenlosen/kostenpflichtigen Versionen können Sie Layouts/Zeichenfolgen/Zeichen/etc. Überschreiben, wenn sie sich von denen in der gemeinsam genutzten Bibliothek unterscheiden müssen. Sollte Ihre Bedürfnisse erfüllen: http://developer.android.com/guide/developing/projects/projects-eclipse.html – Gophermofur
@Gophermofur Ja, ich bin mir der Bibliothek Ansatz bewusst, aber ich mag es nicht und es kommt mit andere Probleme". Keine Notwendigkeit, tiefer zu gehen, aber es ist nicht relevant für die Frage. Ich habe vor langer Zeit entschieden, dass ich mit der "Unlocker" -Methode gehe und es gibt keine Diskussion dort. Ich schätze Ihren Vorschlag aber :) –