iOS アプリ リバース エンジニアリング: iOS アプリ シェル テクノロジー

iOSリバースエンジニアリングには「iOSアプリ復号化」と呼ばれる重要な技術があります。iOS 5 バージョン以降、Apple はアプリケーション暗号化メカニズムを導入しました。これにより、ほとんどのアプリケーションは逆分析のためにシェル化される必要があります。したがって、開発者、リバース エンジニア、セキュリティ研究者はすべて、このテクノロジを理解する必要があります。これは、iOS のリバースに不可欠なプロセスであるためです。まず、広い意味でのパッキングとアンパッキングの概念を見てみましょう。

梱包と開梱

パックとアンパックはソフトウェアのセキュリティとリバース エンジニアリングに関連する概念であり、iOS プラットフォームに限定されるものではなく、他のオペレーティング システムやプラットフォームにも当てはまります。これらにはソフトウェアの保護技術と分析技術が含まれますが、これら 2 つの概念の基本的な意味を以下に紹介します。

包装

パッキングとは、実行可能ファイル (アプリケーション、ライブラリ ファイルなど) を 1 つ以上の追加のシェル (シェル) とマージして、新しい実行可能ファイルを形成することを指します。このシェルの主な目的は、ソフトウェアのセキュリティを強化し、不正なアクセスと変更を防止し、ソフトウェアのアンチデバッグとアンチリバース エンジニアリングを実行することです。パッキング テクノロジは通常、ソフトウェア開発者または製造者によって知的財産やソース コードを保護するために使用されます。

Windows プラットフォームでは、特別なアルゴリズムを使用して、EXE 実行可能プログラムまたは DLL ダイナミック リンク ライブラリ ファイルのエンコーディング (圧縮や暗号化など) を変更して、ファイル サイズを削減したり、プログラム エンコーディングを暗号化したり、ウイルス対策ソフトウェアによる検出を回避したりできます。現在、より一般的に使用されているシェルには、UPX、ASPack、PePack、PECompact、UPack などが含まれます。

開梱

解凍とは、パックされた実行可能ファイルを元の解凍された状態に復元して、さらに分析、リバース エンジニアリング、または変更できるようにすることを指します。アンパックは通常、セキュリティ研究者、リバース エンジニア、またはハッカーによって、保護されたソフトウェアの内部ロジックを取得するために、パックされたソフトウェアの保護メカニズムをバイパスするために使用されます。

iOS シェルリングとは何ですか?

ここに画像の説明を挿入します

 

iOS プラットフォームと比較すると、梱包プロセスは Apple の公式 Web サイトから行われます。iOS シェルとは、リバース エンジニアリングがアプリケーションの暗号化保護を解除し、暗号化されていないバージョンに復元することです。このプロセスを通じて、リバース エンジニアはアプリケーションの元のバイナリを取得できるため、コードの分析と変更が容易になります。シェル スマッシングにより、リバース エンジニアはアプリケーションの内部動作を詳しく調べることができますが、法的および倫理的な枠組み内で運用する必要もあります。

iOSシェル破壊ツール

iOS シェルを実装するには、通常、リバース エンジニアリングによるアプリケーション バイナリの分析と復号化に役立つ特定のツールを使用する必要があります。よく使用されるツールをいくつか示します。

クラッチ: これは一般的に使用される iOS シェル破壊ツールで、リバース エンジニアがアプリケーションを自動的に復号化するのに役立ちます。さまざまなデバイスで簡単に使用できるよう、複数の CPU アーキテクチャをサポートしています。
dumpdecrypted: これは、ジェイルブレイクされたデバイス上で実行できるもう 1 つの人気のあるシェル スマッシング ツールで、アプリの復号化されたバージョンを抽出するのに役立ちます。
frida-ios-dump: iOS アプリケーションを復号化し、暗号化されていないバイナリをエクスポートするために使用できる Frida フレームワークに基づくツール。

殻を破った後は何ができるでしょうか?

アプリケーションが正常にシェル化されると、リバース エンジニアリングはさらに多くのことを行うことができます。シェルスマッシングの具体的な用途は次のとおりです。

コード分​​析: リバース エンジニアは、暗号化されていないコードを読み取ることでアプリケーションのロジックとアルゴリズムを深く理解でき、開発者が新しいテクノロジーを学ぶのに役立ちます。
カスタマイズされた開発: シェル化後、開発者はアプリケーションのカスタマイズされた機能、プラグイン、拡張機能を開発して、アプリケーションの機能を強化できます。
動作の変更: リバース エンジニアは、広告の無効化、有料検証のバイパスなど、アプリケーションの動作を変更できます。
脆弱性の発見: シェルを実行した後、セキュリティ研究者はアプリケーションをより簡単に分析し、潜在的な脆弱性やセキュリティ リスクを発見できます。

例: iOS シェルでのクラッチの使用

以下は、Clutch ツールを使用して iOS シェルをクラックする例です。

まず、iOS デバイスがジェイルブレイクされていて、Clutch ツールがインストールされていることを確認してください。ターミナルを開き、SSH を使用してデバイスに接続します。次のコマンドを実行して、指定したアプリケーションを解凍します。

Clutch -i

これにより、インストールされているすべてのアプリとそのアプリ ID が一覧表示されます。

アンシェルしたいアプリケーションを選択し、次のコマンドを実行します。

Clutch -d 应用ID

これにより、シェル プロセスが開始され、アプリのバイナリが復号化されます。

シェル処理が完了すると、指定したディレクトリで復号化されたアプリケーションを見つけることができます。

おすすめ

転載: blog.csdn.net/zh405123507/article/details/132472843