首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SMJobKit (SMJobBless) BadBundleCodeSigning

SMJobKit (SMJobBless) BadBundleCodeSigning
EN

Stack Overflow用户
提问于 2016-01-15 06:33:44
回答 1查看 320关注 0票数 1

我试图在SMJobKit框架的帮助下通过SMJobBless执行特权助手,但是当我尝试安装服务时,这个错误抛出了Error Domain=SMJobKit.SMJError Code=4 "(null)"

当我运行函数checkForProblems时,它会在源代码中抛出[SMJobKit.SMJError.BadBundleCodeSigningDictionary],下面这行有一个注释:"kSecCodeInfoPList was not a dictionary"

应用程序的结构类似于主应用程序(沙箱) -> XPC服务->特权帮助器

代码签名设置为Mac Developer:…

在plist中我有…

允许添加和删除工具的客户端

代码语言:javascript
复制
anchor apple generic and identifier "*XPC SERVICE IDENTIFIER*" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = *DEVELOPER ID*)

安装后拥有的工具

代码语言:javascript
复制
anchor apple generic and identifier "*HELPER IDENTIFIER*" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = *DEVELOPER ID*)

它由SMJobBless python脚本生成

作为示例,我使用了更好的Authorization示例,但还没有成功

EN

回答 1

Stack Overflow用户

发布于 2021-10-28 08:51:06

特权帮助器工具不是XPC服务。XPC服务的定义特征之一是它在具有有限权限的沙箱中运行,相比之下,特权助手工具作为根用户运行。令人困惑的是,您想要与助手工具通信的方式几乎肯定是使用XPC。Apple在这里过载了一堆术语:

  • XPC是一种进程间通信技术
  • XPC马赫服务是一种使用马赫端口的XPC通信类型,可以由系统上的任何进程调用
  • XPC服务是在自己的沙箱中运行的包,必须使用XPC进行通信;只有包含包可以communicate
  • Privileged帮助程序工具是由SMJobBless安装的可执行文件(而不是包),它们不需要任何通信机制,但如果它们想要具有通信机制,可以使用XPC
  • 服务

您需要将您的应用程序包构建为:example.app/Contents/Library/LaunchServices/<helper tool>

EvenBetterAuthorizationSample按照我所描述的那样构造应用程序包。不幸的是,它已经过时了,苹果公司也没有推出新的Swift版本。如果您正在寻找更新的示例,SwiftAuthorizationSample可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34801065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档