《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
查看: 7615|回复: 0

Keychain 相关 The executable was signed with invalid entitlements

[复制链接]

119

主题

582

帖子

2626

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2626
发表于 2019-3-24 02:07:40 | 显示全部楼层 |阅读模式
添加钥匙串文件KeychainAccessGroups.plist,然后新建Array, 新建String,填写要名称之后,在iOS8测试运行是没有问题的,但是在iOS10下运行提示如下错误
The executable was signed with invalid entitlements.
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile. (0xE8008016).
如果把工程设置里的Code_Sign_Entitlements给去掉的话,可以运行,但是肯定是访问不了Keychain。搞了一整天,终于研究出了解决方法
解决方法:选择工程->Capabilities->Keychain Sharing开启,这时会自动生成一个entitlements的文件,打开这个文件可以看到Keychain Access Groups里有一个值是$(AppIdentifierPrefix)younrame.testproject。我们在代码修改KeychainItemWrapper里accessGroup的值$(AppIdentifierPrefix)younrame.testproject,现在有一个疑问AppIdentifierPrefix的值是什么呢?这是开发者ID的前缀,但是具体是什么值我们并不知道,可以通过代码来获取。如下:
  1. - (NSString *)GetAppIdentifierPrefix {  
  2.     NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:  
  3.                            kSecClassGenericPassword, kSecClass,  
  4.                            @"bundleSeedID", kSecAttrAccount,  
  5.                            @"", kSecAttrService,  
  6.                            (id)kCFBooleanTrue, kSecReturnAttributes,  
  7.                            nil nil];  
  8.     CFDictionaryRef result = nil;  
  9.     OSStatus status = SecItemCopyMatching((CFDictionaryRef)query, (CFTypeRef *)&result);  
  10.     if (status == errSecItemNotFound)  
  11.         status = SecItemAdd((CFDictionaryRef)query, (CFTypeRef *)&result);  
  12.     if (status != errSecSuccess)  
  13.         return nil;  
  14.     NSString *accessGroup = [(NSDictionary *)result objectForKey:kSecAttrAccessGroup];  
  15.     NSArray *components = [accessGroup componentsSeparatedByString:@"."];  
  16.     NSString *strAppIdentifierPrefix = [[components objectEnumerator] nextObject];  
  17.     CFRelease(result);  
  18.     return strAppIdentifierPrefix;  
  19. }  
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2024-9-20 14:44 , Processed in 0.016874 second(s), 19 queries .

iOS安全论坛

© 2017-2020 iOS Hacker Inc. 京ICP备17074153号-2

快速回复 返回顶部 返回列表