Получите размер файла info.plist для предотвращения пиратства
Я пытаюсь вставить антипиратский код в свое приложение. Предыдущий ответ на этот вопрос (который я не могу связать из-за моего статуса участника - отстой) можно легко отменить, поскольку строку "SignerIdentity" можно искать и заменять в двоичном файле с помощью шестнадцатеричного редактора.
Вместо этого проверка fileSize файла info.plist и сравнение его с эталонным значением звучит более убедительно (так как info.plist тут и там изменяется при взломе приложения). Как бы я это сделал? Я попробовал следующее, но он регистрирует 0.
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *mainDictionary = [bundle infoDictionary];
NSLog(@"%d", [mainDictionary fileSize]);
4 ответа
Вы можете помешать взломщикам 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
а затем обновите свой антипиратский код.
Я никогда не программировал для iPhone, но не могли бы вы просто взять хеш этого файла и сравнить его со ссылкой, возможно, солитировать значение хеша, чтобы кто-то просто не изменил ссылочный хэш на новый?
Этот код еще много раздач:
Строка Info.plist легко найти. NSFileSize тоже очень подозрительно....
Как сказано здесь Определение того, сломался ли iPhone из-за джейла Программно это выглядит так, как будто некоторые из самых последних взломанных приложений, установленных через install0us, не модифицировали свой info.plist. (по крайней мере, info.plist не содержит ключа подписи). Как мы можем обнаружить трещину в таком случае?