2009-05-24 5 views
8

Ich versuche, Anti-Piraterie-Code in meiner App zu setzen. Die vorherige Antwort darauf (die ich wegen meines Mitgliedsstatus nicht anhängen kann - saugt) kann leicht entgegengewirkt werden, da die "SignerIdentity" -Strange in der Binärdatei mit einem Hex-Editor gesucht und ersetzt werden kann.Dateigröße von info.plist erhalten, um Piraterie zu verhindern

Überprüfen Sie stattdessen die Dateigröße der Datei info.plist und vergleichen Sie es mit einem Referenzwert klingt solider (da die info.plist wird hier und da geändert, wenn die App zu knacken). Wie würde ich das tun? Ich habe versucht, die folgenden, aber es meldet sich 0.

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *mainDictionary = [bundle infoDictionary]; 
NSLog(@"%d", [mainDictionary fileSize]); 

Antwort

7

Sie könnten die noobish Cracker von der Suche nach Hinweisen auf „SignerIdentity“ im Code verhindern, indem ROT13 oder eine ähnliche einfache Verschleierung Algorithmus http://en.wikipedia.org/wiki/ROT13

Nach der Anwendung ROT13 Anwendung "SignerIdentity" würde "FvtareVqragvgl" werden.

Wie auch immer, die Antwort auf Ihre Frage (wie Sie die Größe der Datei Info.plist erhalten):

NSBundle *bundle = [NSBundle mainBundle]; 
NSString* bundlePath = [bundle bundlePath]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 

NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath ]; 

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path 
                  error:NULL]; 

if (fileAttributes != nil) { 
    NSNumber *fileSize; 

    if (fileSize = [fileAttributes objectForKey:NSFileSize]) { 
     NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]); 
    }   
} 

im Auge behalten, auch, dass die Größe (in Bytes) der Info.plist in Ihrem Xcode-Projekt Verzeichnis und die Info.plist innerhalb des Bündels können abweichen. Sie möchten das Spiel wahrscheinlich einmal erstellen, dann auf die Größe <your app bundle.app>/Info.plist schauen und dann Ihren Anti-Piracy-Code aktualisieren.

+0

Thing ist der Pirat könnte diese "FvtareVqragvgl" Zeichenfolge zu etwas anderem ändern und das würde einen anderen Schlüssel in der info.plist .. überprüfen, die wahrscheinlich null sein wird. Das filesize-Attribut wird mit einem int verglichen, so dass es wirklich keinen einfachen Weg gibt, es in der Binärdatei zu suchen. – samvermette

+0

Danke für die Antwort! – samvermette

+0

Aktualisierung: jetzt // \t NSDictionary * fileAttributes = [Dateimanager fileAttributesAtPath: PfadP traverseLink: YES]; ist veraltet ... verwenden: -> ... \t NSDictionary * fileAttributes = [fileManager AttributeOfItemAtPath: pathP Fehler: NULL]; ... anstatt – meronix

5

Ich habe nie für das iPhone programmiert, aber konnten Sie nicht einfach einen Hash der Datei nehmen und ihn mit einer Referenz vergleichen, möglicherweise den Hash-Wert salzen, um zu verhindern, dass jemand nur den Referenz-Hash auf den neuen ändert?

2

dass Code hat noch viele Werbegeschenke:

der String Info.plist ist leicht zu finden. NSFileSize ist auch sehr verdächtig ....

2

Wie hier gesagt Determining if an iPhone is Jail broken Programmatically es sieht aus wie einige der neuesten Cracked-Apps über install0us installiert haben ihre info.plist nicht modifiziert. (Zumindest die info.plist enthält keinen Signeridentity-Schlüssel). Wie können wir den Riss in einem solchen Fall erkennen?

+0

hast du versucht, die 2 Dateigrößen von info.plist zu vergleichen? – samvermette

+0

Nein, aber kann ich irgendeine Annahme über die Größe der info.plist machen, die einmal von einem iPhone-Benutzer aus dem Appstore heruntergeladen wurde? Wäre es dasselbe wie beim Upload in den AppStore (über iTunes Connect)? Die Tatsache, dass diese Datei manchmal in XML, manchmal als Binärdatei vorliegt, gibt mir kein klares Bild des gesamten Datenflusses für diese Datei:/ – yonel

+0

Die Dateigröße wäre die Datei in Ihrem .app-Paket Ihres Distributions-Builds. Ich bin mir nicht sicher, ob Apple nach dem Absenden der App etwas in der Datei info.plist ändert ... – samvermette

Verwandte Themen