我正在处理一个需要修改现有 OSX 应用程序dylib二进制文件的项目(几个字节来纠正过时的 URL)。我无权访问应用程序源代码和代码签名证书。修补应用程序后,一切正常,只是它不会plist从~/Library/Preferences.
如果我这样做,即使没有修补/修改应用程序:
codesign -s "Local Codesign" -f ./lib<name>.dylib
并执行它不从中读取其属性的应用程序
~/Library/Preferences/<application id>.plist
包括以前打开的文件或连接的服务器。如果我复制回原件(开发人员签名),dylib那么一切正常:再次读回属性。
一件奇怪的事情:即使我的本地签名二进制plist文件无法读取文件,如果我更改某些内容,更改也会被写回。因此,如果这是与 OSX 安全相关的东西,它似乎只会影响读取。
现在我的问题和假设:
- 当我假设这是某种 OSX 安全机制确保
plist无法从非同一开发人员签名的二进制文件访问应用程序数据时,我是否正确?如果是,为什么它只能写入和保护读取? - 在修改 OSX 二进制文件时,你们有没有发现类似的问题?
- 我该如何调试这种行为?
- 是的:任何解决方案?
欢迎任何意见和反馈。