Получить размер файла info.plist для предотвращения пиратства - PullRequest
8 голосов
/ 24 мая 2009

Я пытаюсь добавить антипиратский код в свое приложение. Предыдущий ответ на этот вопрос (который я не могу связать из-за моего статуса участника - отстой) можно легко отменить, поскольку строку «SignerIdentity» можно искать и заменять в двоичном файле с помощью шестнадцатеричного редактора.

Вместо этого проверка fileSize файла info.plist и сравнение его с эталонным значением звучит более убедительно (так как info.plist изменяется тут и там при взломе приложения). Как бы я это сделал? Я попробовал следующее, но он регистрирует 0.

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

Ответы [ 4 ]

7 голосов
/ 24 мая 2009

Вы можете помешать взломщикам noobish найти ссылки на «SignerIdentity» в вашем коде, применив ROT13 или аналогичный простой алгоритм затемнения http://en.wikipedia.org/wiki/ROT13

После применения ROT13 «SignerIdentity» станет «FvtareVqragvgl».

В любом случае, ответ на ваш вопрос (как узнать размер файла 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]);
    }           
}

Также имейте в виду, что размер (в байтах) Info.plist в каталоге проекта Xcode и Info.plist внутри пакета может отличаться. Возможно, вы захотите собрать игру один раз, затем посмотрите на размер <your app bundle.app>/Info.plist и обновите антипиратский код.

5 голосов
/ 24 мая 2009

Я никогда не программировал для iPhone, но разве вы не могли просто взять хеш этого файла и сравнить его со ссылкой, возможно, солить значение хеша, чтобы кто-то просто не изменил ссылочный хэш на новый? 1001 *

2 голосов
/ 11 января 2010

Как сказано здесь Определение, не сломан ли iPhone программно Похоже, что некоторые из последних взломанных приложений, установленных через install0us, не изменили свой info.plist. (по крайней мере, info.plist не содержит ключа подписи). Как мы можем обнаружить трещину в таком случае?

2 голосов
/ 20 сентября 2009

этот код еще много раздач:

Строка Info.plist легко найти. NSFileSize также очень подозрительно ....

...