Получите размер файла info.plist для предотвращения пиратства

StackOverflow https://stackoverflow.com/questions/903157

Вопрос

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

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

NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *mainDictionary = [bundle infoDictionary];
NSLog(@"%d", [mainDictionary fileSize]);
Это было полезно?

Решение

Вы могли бы помешать взломщикам 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 не содержит никакого ключа signeridentity).Как мы могли бы обнаружить трещину в таком случае ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top