Wie bestimmen Sie (programmgesteuert), ob ein iPhone / iPod ist:
- Gefängnis kaputt
- Ausführen einer geknackten Kopie Ihrer Software
Pinch Media kann erkennen, ob ein Telefon im Gefängnis defekt ist oder die laufende Software geknackt ist. Weiß jemand, wie sie dies tun? Gibt es Bibliotheken?
iphone
objective-c
ios
cocoa-touch
jailbreak
Richard Stelling
quelle
quelle
Antworten:
Hier ist eine der Möglichkeiten, um festzustellen, ob Ihre App geknackt wurde.
Kurz gesagt: Das Knacken erfordert normalerweise das Ändern der Info.plist. Da es sich um eine reguläre Datei handelt, auf die Sie Zugriff haben, ist es ziemlich einfach, solche Änderungen festzustellen.
quelle
Das Erkennen eines Telefons mit Jailbreak ist so einfach wie das Überprüfen des Vorhandenseins eines
/private/var/lib/apt/
Ordners. Obwohl dies keine Nur-Installer-Benutzer erkennt, haben die meisten inzwischen Cydia, Icy oder RockYourPhone installiert (alle verwenden apt).Um Raubkopien zu erkennen, überprüfen Sie am einfachsten, ob
SignerIdentity
in Ihrer App ein Schlüssel vorhanden istInfo.plist
. Da fortgeschrittene Cracker die Standardprüfungen leicht finden[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]
können, ist es am besten, diese Aufrufe mithilfe der Objective C-Laufzeit zu verschleiern, die über#import <objc/runtime.h>
oder über alternative Äquivalente verfügbar ist .quelle
Um die Antwort von zakovyrya zu erweitern, können Sie den folgenden Code verwenden:
if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) { // Jailbroken }
JEDOCH kann die Person, die Ihre App jailbreakt, Ihr Programm verhexen und als solche die Zeichenfolge @ "SignerIdentity" bearbeiten, um @ "siNGeridentity" oder etwas anderes zu lesen, das null zurückgibt und somit bestanden wird.
Wenn Sie dies verwenden (oder einen der anderen Vorschläge von http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html ):
quelle
Um die obigen Kommentare von Yonel und Benjie zu erweitern:
1) Die Methode von Landon Fuller, die sich auf die oben von yonel verknüpfte Verschlüsselungsprüfung stützt, scheint die einzige zu sein, die noch nicht von automatisierten Cracking-Tools besiegt wurde. Ich würde mir keine allzu großen Sorgen machen, dass Apple den Status des LC_ENCRYPTION_INFO-Headers bald ändern könnte. Es scheint einige unvorhersehbare Auswirkungen auf iphone mit Jailbreak zu haben (selbst wenn der Benutzer eine Kopie gekauft hat ...)
Auf jeden Fall würde ich keine vorschnellen Maßnahmen gegen einen Benutzer ergreifen, der auf diesem Code basiert ...
2) Zur Ergänzung von Benjies Kommentar zu. Verschleierung (eine absolute Notwendigkeit, wenn Sie mit Zeichenfolgenwerten in Ihrem Anti-Piraterie-Code arbeiten): Eine ähnliche, aber vielleicht noch einfachere Möglichkeit besteht darin, immer eine gesalzene Hash- Version des gesuchten Werts zu überprüfen . Zum Beispiel (obwohl diese Prüfung nicht mehr effizient ist) würden Sie den Schlüsselnamen jedes MainBundle als md5 (Schlüsselname + "etwas geheimes Salz") gegen die entsprechende Konstante prüfen ... Ziemlich einfach, aber sicher jeden Versuch, die zu finden, zu vereiteln Zeichenfolge.
Dies setzt natürlich voraus, dass Sie den zu vergleichenden Wert indirekt abfragen können (z. B. indem Sie ein Array durchlaufen, das ihn enthält). Dies ist jedoch meistens der Fall.
quelle