2017-07-02 24 views
-1

私は実行可能な署名付きMacアプリを持っています。私はNSMutableDataを署名付きコードの内容で初期化しました。その後、実行可能ファイルの一部を修正し、変更された実行可能ファイルを保存しました。私は、この変更された実行可能ファイルで元のアプリケーションを実行しようとすると、アプリケーションがクラッシュしました。クラッシュからクラッシュログがあるmac app実行可能ファイルからコード署名を削除する

System Integrity Protection: disabled 

Crashed Thread:  0 Dispatch queue: com.apple.main-thread 

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

Termination Reason: Namespace CODESIGNING, Code 0x2 

は、無効なため、コード署名のクラッシュしたことは明らかであるログ。 私はこのアプリケーションのソースコードを持っていないので、誰かの古いアプリでいくつかのバグを修正しようとしています。

私の質問は、どのように目的のCのバイナリのコード署名を削除するのですか?

+0

コード署名の全体のポイントは、このようなことを不可能にすることです。これは、アプリが改ざんされていないことを確認する方法です。 –

+0

@ItaiFerber私の目的は、このアプリケーションをApp Storeで配信することはできません。ホッパーディスアセンブラでは、実行ファイルからコードシグネチャを削除し、新しい実行ファイルとして保存することができます。だから、それをどのように客観的に行うのか? –

+1

ここであなたの実際の目標は何ですか? – Ssswift

答えて

2

すべての道徳的な説教者のために、私の人生を啓蒙し、人生の道徳的な道を示してくれてありがとう。

これはよく私が言うことができるものから、すべての文書化されていないが、あなたは経由で署名コードを削除することができる場合があります

 codesign --remove-signature appName 

別の方法:復号化されたファイルをアップパッチ適用

(削除LC_CODE_SIGNATURE) ------------------------------

ファイルが間引かれていることを確認してください(iboto -arch i386)続行する前に。 注:インテルマッハ-Oバイナリを0xCEFAEDFE PPCマッハ-Oで始まるバイナリが0xFEEDFACE

    • で始まる番号を変更します。次の手順を実行する必要があり、コード署名を削除するには

      のロードコマンド(オフセット0x10/16、4Bサイズで開始)。

    • 0x2Cは0x1 - > 0x2Bを減算します。

    • ロードコマンドのサイズを変更するには、(0x14の/ 20、4Bの大きさをオフセットから始まります)。
    • それはFC 17 00 00として読み込む場合は、それが実際の値から0x000017FC
    • 減算の0x10または16であるあなたが値を取得するためにバイトをスワップする必要がインテル... のために覚えています。上記の場合 - > 0x000017EC
    • (Intelの場合)再度スワップバイト。 0x000017ECは、このようにEC 17 00 00
    • はLC_CODE_SIGNATUREの負荷コマンド入力から16のバイトを変更しています。 16 x 0x00に置き換えてください。 このエントリは、Intelでは0x1D000000、PPCでは0x0000001Dで始まります。
    • これは、ロードコマンド(8B)とロードコマンド(8B)の内容を変更します。 この場合、合計負荷指令はオールウェイズなければならない: インテル:0x1D00000010000000 PPC:0x0000001D00000010
    • が実際のコード署名を削除します。 これは、IntelとPPCの両方で0xFADE0CC0で始まります。 コード署名全体を0x00バイトに置き換えます。
関連する問題