2011-09-21 78 views
5

我想從已使用codesign簽名的Mac應用中刪除數字簽名。有一個沒有記錄的編碼簽名選項,--remove-signature,它的名字似乎是我所需要的。但是,我無法讓它工作。我意識到它是無證的,但我真的可以使用這些功能。也許我做錯了什麼?錯誤? in codesign --remove-signature feature

codesign -s MyIdentity foo.app 

正常工作時,簽署應用

codesign --remove-signature foo.app 

做磁盤活動幾秒鐘,然後說

foo.app: invalid format for signature 

和foo.app已發展到1.9 GB! (具體來說,它是foo.app/Contents/Resources/MacOS中的可執行文件,從1.1 MB增加到1.9 GB。)

當我嘗試簽署/取消簽名二進制支持工具而不是。應用程序。

任何想法?


背景:這是我自己的應用程序;我並沒有試圖打敗複製保護或類似的東西。

我想分發一個已簽名的應用程序,這樣應用程序的每次更新都不需要用戶批准來讀取/寫入該應用程序在Keychain中的條目。但是,有些人需要通過將自己的文件夾添加到/ Resources來修改應用程序。如果他們這樣做,簽名變得無效,並且應用程序不能使用它自己的鑰匙串條目。

該應用程序可以很容易地檢測到這種情況是否發生。如果應用程序可以刪除它的簽名,一切都會好起來的。那些進行這種修改的人需要給已修改的,現在未簽名的應用程序權限來使用鑰匙串,但這對我來說很好。

回答

0

我同意當你做--remove-signature時會發生一些奇怪的事情。

但是,您應該改變用戶在Resources中放置額外文件的方式,而不是嘗試解除代碼簽名。相反,指定某個路徑,通常

~/Library/Application Support/Name_Of_Your_App/ 

也許

~/Library/Application Support/Name_Of_Your_App/Resources/ 

,並要求用戶把多餘的文件存在。然後,在您的代碼中,當您需要讀取文件時,除了Resources中的文件外,還要檢查目錄。

+0

的用戶可能具有不同的額外文件的應用程序的多個副本,並且可以四處移動應用程序。如果他們的額外文件在應用程序中,則一切正常。否則,我必須以某種方式跟蹤基於應用程序位置的不同文件,然後如果應用程序移動它停止工作。一塌糊塗。 – user532477

-2

我相信你可以通過簡單地刪除應用程序包中的_CodeSignature文件夾來刪除簽名。

+0

不僅僅是,二進制文件也被簽名 – dreamlab

8

有點晚了,但我已經更新了名爲unsign一個公共領域的工具,它會修改可執行文件,以清除簽名。

https://github.com/steakknife/unsign

+1

只要你清楚地詳細說明OP如何使用它來完成他們正在嘗試做的事情,那麼你創作的代碼(甚至是部分代碼)是很好的。否則,它被認爲是垃圾郵件。 – Louis