Verringerung der Piraterie von iPhone-Anwendungen

Was sind akzeptierte Methoden zur Reduzierung von iPhone-Piraterie, die nicht gegen Apples Bewertungsprozess verstoßen?

Wenn meine Anwendung “nach Hause ruft”, um die eindeutige Geräte-ID bereitzustellen, auf der sie ausgeführt wird, welche anderen Informationen müsste ich sammeln (z. B. die zum Kauf der Anwendung verwendete Apple ID), um ein gültiges Registrierungs-Token zu erstellen, das die Verwendung der Anwendung autorisiert ? Und welchen Code würde ich für den Zugriff auf diese zusätzlichen Daten verwenden?

Was scheinen zur Zeit die besten verfügbaren technischen Ansätze für dieses Problem zu sein?

(Bitte verzichten Sie auf nicht programmierbare Antworten darüber, wie Piraterie unvermeidlich ist, usw. Ich weiß, dass Piraterie unvermeidlich ist. Ich bin an programmierbasierten Antworten interessiert, die darüber diskutieren, wie sie reduziert werden können. Vielen Dank im Voraus für Ihr Verständnis.)

AKTUALISIEREN

Bitte besuchen und lesen

Danke an chpwn in den Kommentaren.

Code, der viel zu alt ist! – 11. Mai 2009

Für jetzt gibt es einen einfacheren Weg zu erkennen, ob Ihre iPhone-Anwendung für Piraterie geknackt wurde. Dies bedeutet nicht, dass Sie die eindeutigen IDs des iPhones anhand einer Liste akzeptierter IDs überprüfen müssen.

Momentan gibt es drei Dinge, die Cracker machen:

  1. Bearbeiten Sie die Info.plist-Datei
  2. Dekodiere die Info.plist von binär nach UTF-8 oder ASCII
  3. Hinzufügen eines Schlüsselpaars zu Info.plist {SignerIdentity, Apple iPhone OS Anwendungssignierung}

Der letzte ist am einfachsten mit diesem Code zu überprüfen:

NSBundle *bundle = [NSBundle mainBundle]; NSDictionary *info = [bundle infoDictionary]; if ([info objectForKey: @"SignerIdentity"] != nil) { /* do something */ } 

Im Allgemeinen haben wir SignerIdentity in keiner der App Store-Anwendungen, die wir erstellen, so dass wir nach nil suchen müssen, dann sollte das Ausführen von Set-statementen es für Cracker und Piraten schwieriger machen.

Ich kann nicht Kredit dafür nehmen, also besuchen Sie bitte , iPhone IPA-Crackers zu vereiteln. Dort gibt es viele Informationen über Piraterie auf dem iPhone und wie man es eindämmt.

Wie Andrey Tarantsov in den Kommentaren darauf hingewiesen hat, ist die Suche nach der Zeichenfolge “SignerIdentity” in der Binärdatei (mit einer App wie HexEdit) ziemlich einfach.

Du könntest diese Zeichenfolge codieren, aber dann musst du nur noch ein Zeichen davon ändern und die App wird nicht mehr nach dem “SignerIdentity” -Schlüssel suchen, sondern nach einem anderen Schlüssel, der wahrscheinlich nicht existiert (also null ist) ). Da der Schlüssel null ist, denkt die App, dass sie nicht geknackt ist (da SignerIdentity null sein sollte, wenn die App nicht geknackt ist).

Stattdessen würde ich lieber die Größe der info.plist überprüfen und mit einem Referenzwert vergleichen. Ich habe bemerkt, dass Simulator- und Geräte-Builds nicht dieselbe Dateigröße von info.plist haben. Dasselbe gilt für Debug-, Release- und Distribution-Builds. Stellen Sie daher sicher, dass Sie den Referenzwert mithilfe der Dateigröße info.plist für den Build der Geräteverteilung festlegen.

So suchen Sie beim Start nach der Dateigröße :

Es sieht so aus, als würde die MD5-Checksumme von Plist gespeichert und die Überprüfung von CryptID sollte bis zu einem gewissen Zeitpunkt gut funktionieren.

Überprüfen Sie iTunesMetadata.plist auf das Datum des Kaufs, da manchmal, wenn eine App geknackt wird, dieses Datum in etwas Unerhörtes geändert wird.

Überprüfen Sie auch, ob das Feld für den Namen des Erwerbers vorhanden ist. Nach meiner Erfahrung mit Cracking-Apps für den persönlichen Gebrauch wird das normalerweise entfernt. Wenn jemand weiß, wie der Anti-Dump-Schutz von Temple Run funktioniert, könntest du das in Verbindung mit einem Schutz verwenden, den poedCrackMod nicht bekommen kann (google poedCrackMod erstellt hackulo.us-Account, gehe zum Dev-Center, suche nach poedCrackMod, installiere es auf iDevice) .

Clutch, die mit Temple Run nicht wie ein Schutz funktioniert, hat eine function namens OverDrive, die die Rissprüfung einer App zum Schweigen bringen soll. poedCrackMod hat LamestPatch, was nicht so gut ist. Auch poedCrackMod ist ein Open-Source-Bash-Skript, das reverse engineered sein kann. Zur Erinnerung, Sie haben eine App, die einen Kopierschutz hat, der nicht mit Kupplung / Overdrive umgangen werden kann, aber mit poedCrackMod geknackt werden kann. Allerdings kann poedCrackMod die Piraterie-Prüfungen der App nicht umgehen. Es ist schwierig, Integritätsprüfungen in der ausführbaren Datei der App manuell zu patchen. Deine App ist also schwer zu knacken.