Domanda

Sto cercando di mettere il codice anti-pirateria nella mia app. La risposta precedente a questo (che non riesco a collegare a causa del mio status di membro - fa schifo) può essere facilmente contrastata, dal momento che la stringa "SignerIdentity" può essere cercata e sostituita nel binario utilizzando un editor esadecimale.

Al contrario, controllando la dimensione del file del file info.plist e confrontandolo con un valore di riferimento suona più solida (dal momento che l'info.plist è sempre modificato qua e là quando screpolature l'applicazione). Come potrei farlo? Ho provato quanto segue ma registra 0.

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

Soluzione

Si potrebbe evitare che i cracker noobish di trovare i riferimenti a "SignerIdentity" nel codice applicando ROT13 o un algoritmo di oscuramento semplice simile http://en.wikipedia.org/wiki/ROT13

Dopo aver applicato ROT13, "SignerIdentity" sarebbe diventato "FvtareVqragvgl".

In ogni caso, la risposta alla tua domanda (come si ottiene la dimensione del file Info.plist):

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]);
    }           
}

Si tenga anche presente che la dimensione (in byte) del Info.plist nella directory del progetto Xcode e il Info.plist all'interno del fascio possono essere diversi. Probabilmente si vuole costruire il gioco una volta, poi guardare le dimensioni di <your app bundle.app>/Info.plist e quindi aggiornare il codice antipirateria.

Altri suggerimenti

Non ho mai programmato per l'iPhone, ma non poteva semplicemente prendere un hash del file e confrontarlo con un riferimento, forse la salatura il valore hash per evitare che qualcuno solo cambiando l'hash riferimento a quello nuovo?

che il codice ha ancora molti omaggi:

l'Info.plist stringa è facile da trovare. NSFileSize è anche molto sospetta ....

Come detto qui Determinare se un iPhone è Jail rotto programmazione sembra che alcune delle più recenti applicazioni installate tramite cracking Install0us non hanno la loro Info.plist modificato. (Almeno l'info.plist non contiene alcuna chiave signeridentity). Come potremmo rilevare la crepa in un caso del genere?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top