首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行/调试开源macOS‘`Privileges`’应用程序w/ XPC服务/守护进程和DockTile插件

如何运行/调试开源macOS‘`Privileges`’应用程序w/ XPC服务/守护进程和DockTile插件
EN

Stack Overflow用户
提问于 2022-06-29 22:12:26
回答 1查看 115关注 0票数 1

我正在尝试在SAP's Privileges.app中进行一些修改。不幸的是,他们的(可以理解的)支持政策是

这个项目是“原样”,没有任何支持,没有任何改变。欢迎您做出改进,但我们没有任何问题或支持。

不幸的是,这个应用程序使用了我在专业经验中从未见过的两个构造,一个XPC服务+助手(启动守护进程?)还有一个DockTile插件。当从Xcode启动时,我很难从根本上让这个应用程序正常工作--它启动了,但似乎在(可能?)之间存在一些问题。沙箱,签名,也许还有权利?当然,我已经更新了签名以使用我自己的团队,所有的东西都会正确编译/链接/启动,但是当XPC服务试图安装助手工具时,它会失败

代码语言:javascript
复制
2022-06-29 17:03:56.284544-0500 PrivilegesXPC[13079:128535] [logging-persist] cannot open file at line 45530 of [9ff244ce07]
2022-06-29 17:03:56.284570-0500 PrivilegesXPC[13079:128535] [logging-persist] os_unix.c:45530: (0) open(/var/db/DetachedSignatures) - Undefined error: 0
2022-06-29 17:04:21.060214-0500 PrivilegesXPC[13079:128537] SAPCorp: ERROR! Failed to connect to helper tool: NSCocoaErrorDomain / 4097
2022-06-29 17:04:31.471555-0500 Privileges[13064:127420] SAPCorp: ERROR! Error Domain=NSPOSIXErrorDomain Code=25 "Inappropriate ioctl for device"
2022-06-29 17:04:45.717751-0500 Privileges[13064:129162] SAPCorp: ERROR! Installation of the helper tool failed: Error Domain=CFErrorDomainLaunchd Code=4 "(null)"

据我所知,最后两个错误是从失败抛出的

代码语言:javascript
复制
    success = SMJobBless(
        kSMDomainSystemLaunchd,
        CFSTR("corp.sap.privileges.helper"),
        self->_authRef,
        &error
    );

但我没能确定这是为什么失败的。不幸的是,在Inappropriate ioctl for device周围搜索错误并没有什么成果。

如果有谁在处理应用程序方面有经验的话,我会非常感激他们使用这些更深奥的移动部件来分享一些东西。如果有任何方法来调试运行在DockTile插件中的代码--据我所知,它运行在SystemUIServer中,那么就可以得到额外的分数,但是我不能从Xcode中附加到它(即使是根)。

EN

回答 1

Stack Overflow用户

发布于 2022-07-13 15:24:52

我想我已经解决了这个问题。这是我遇到的几个路障。

  1. SMJobBless对代码签名有一些非常特殊的期望--在某些论坛帖子中可以找到对此的引用,还有一个样本工程,它也是用实用程序脚本引用的--它不运行在现代macOS上,因为它是为Python2编写的--它不再默认安装,也很难找到。但是,在痛苦地将Python2语言转换为Python3之后,您会发现这并不是唯一改变的东西,许多工具(codesignotool)在ARM64上的输出都不一样,这时您最终会遇到一个善良的灵魂改变了SMJobBless.py .只是为了发现这个项目实际上并不需要?!不确定它是否包含在XPC中,而不是应用程序中,但不管是哪种方式,似乎都不需要它。
  2. 如果您以前运行了Privileges,它将安装它的升级助手,这将阻碍本地Xcode构建复制自己--这很重要,因为前面提到的代码签名。您需要清除这些工件$ sudo rm /Library/PrivilegedHelperTools/corp.sap.privileges.helper -rf $ sudo rm /Library/LaunchDaemons/corp.sap.privileges.helper.plist 仅仅删除它们是不够的,似乎需要删除某种运行时launchd状态。我不清楚launchctl的咒语是否会清除这一点,可能是调用launchctl kickstart -k <foo>之类的吗?最后,我重新启动了,这似乎是个好办法。
  3. 似乎您需要一个特定的签名证书来允许SMJobBless和XPC通信所做的各种签名验证是有效的。特别是,您似乎需要一个Developer ID Application,它恰好与从GitHub回购中提取的.xcodeproj中编码的内容相匹配。这意味着您不能启用自动管理签名,因为您不会得到这种类型的证书(尽可能接近我可以告诉-请纠正我如果我错了)。
  4. 一旦您对所有这些进行了排序,由于您没有使用SAP证书签名,您的证书将有一个不同的唯一团队ID,因此您需要在PrivilegesHelper/PrivilegesHelper-Info.plist PrivilegesXPC/Info.plist中分别更新SMAuthorizedClientsSMPrivilegedExecutables (查找7R5ZEU67FQ和用团队ID替换)。

我想这基本上就明白了。希望这能帮到别人

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

https://stackoverflow.com/questions/72808399

复制
相关文章

相似问题

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