判斷 ipa 檔所屬簽名類型

  • 300
  • 0
  • iOS
  • 2016-02-15

摘要:判斷 ipa 檔所屬簽名類型

因為小弟文彩不好,總是不喜歡在技術文章講太多廢話,於是本文大家就諒解我不怎麼講解吧,XD

 

最近公司要求小弟在應用程式中加入對自身簽署證書的校驗,防止ipa檔被破解。於是小弟就想到ipa中embedded.mobileprovision這個檔案(欸,不要問我這個檔案是什麼)

於是 : 

          


- (void)readMobileprovision{
    NSData *provisioningProfile = nil;
    NSData *raw = [NSData dataWithContentsOfFile:[NSBundle.mainBundle URLForResource:@"embedded" withExtension:@"mobileprovision"]];
    char *start = memmem(raw.bytes,
                         raw.length,
                         "",
                           8);
        if (end) {
            provisioningProfile = [NSData dataWithBytes:start length:8 + end - start];
        }
    }

    if (provisioningProfile) {
        NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:provisioningProfile
                                                                        options:NSPropertyListImmutable
                                                                         format:0
                                                                          error:0];
        NSLog(@"\n\n\nTeam name: %@", plist[@"TeamName"]);

        if ([plist[@"ProvisionsAllDevices"] boolValue]) {
            NSLog(@"Enterprise");
        } else if ([plist[@"ProvisionedDevices"] count] > 0) {
            if ([plist[@"Entitlements"][@"get-task-allow"] boolValue]) {
                NSLog(@"Development");
            } else {
                NSLog(@"Ad Hoc");
            }
        } else {
            NSLog(@"App Store");
        }
    }
}

tips : 如果讀取檔案失敗,那就表明ipa已經被破解了