2011-09-21 12 views
5

私はcodesignで署名されたMacアプリケーションからデジタル署名を削除したいと思います。 codesign、--remove-signatureには文書化されていないオプションがあります。これは、名前によって必要と思われるものです。しかし、私はそれを働かせることはできません。私はそれが文書化されていないことを認識していますが、私は実際にその機能を使用することができます。多分私は何か間違っているのですか?バグ? in codesland --remove-signature feature

codesign -s MyIdentity foo.app 

作品は通常、数秒間

codesign --remove-signature foo.app 

は、ディスクアクティビティないアプリに署名し、

foo.app: invalid format for signature 

を言うとfoo.appは1.9ギガバイトに成長してきました! (具体的には、1.1 MBから1.9 GBまで拡大するfoo.app/Contents/Resources/MacOSの実行ファイルです)

バイナリサポートツールの署名/署名を解除しようとすると、同じことが起こります.app。

アイデア?


背景:これは自分のアプリです。私はコピープロテクションやそのようなものを倒そうとしていません。

署名付きアプリを配布して、アプリのアップデートにキーチェーン内のアプリのエントリを読み書きするユーザーの承認が不要になるようにしたいと思います。しかし、一部の人は/ Resourcesに自分のフォルダを追加することでアプリを修正する必要があります。そうした場合、署名は無効になり、アプリは独自のKeychainエントリを使用できなくなります。

このような状況が発生した場合、アプリは簡単に検出できます。アプリがそれから署名を取り除くことができるならば、すべてがうまくいくでしょう。この変更を行った人は、変更された署名のないアプリにKeychainを使用する権限を与える必要がありますが、それは私にとっては大丈夫です。

答えて

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