2

团队需要更改 Info.plist 以测试某些功能。但有时应用程序(非常)会默默地崩溃。

System Integrity Protection: enabled

Crashed Thread:        0

Exception Type:        EXC_CRASH (Code Signature Invalid)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace CODESIGNING, Code 0x1

现在,如果我们按照这里的建议测试签名:

codesign --verify -vvvv -R='anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and (certificate leaf[field.1.2.840.113635.100.6.1.2] exists or certificate leaf[field.1.2.840.113635.100.6.1.4] exists)'<应用程序路径>

spctl --verbose --assess<应用程序路径>

< path to app >: invalid Info.plist (plist or signature have been modified)

好的,但我真的很想修改它:

  • 更改 SIP 不是一种选择
  • 仅重新签名 Info.plist 是可以接受的,但是如何?

所以两个问题:

  1. 我们如何更改 Info.plist ?
  2. (可选)系统何时验证它?重启后可能吗?

这个问题有一个答案,在兄弟会:https ://superuser.com/questions/961797/how-to-change-info-plist-in-a-signed-package 。

4

1 回答 1

1

重新签署应用程序可以非常快:

codesign --force --verbose=4 --sign "Developer ID Application: <your name> (<team ID>)" <application>

诀窍是避免--deep选择。在我的 High Sierra 上大约需要 20 秒。

于 2019-01-02T08:58:59.447 回答