info.plist、実行可能ファイル、package.info、プロビジョニング証明書、動的ライブラリ、コード リソースなどを含む IPA ファイルがあります。どのファイルが最初に実行され、どの順序で実行されるかを知りたいです。IPA にいくつかのコンテンツを追加したいと考えています。そのためには、既存の IPA がどのように機能するかを理解する必要があります。
前もって感謝します。
info.plist、実行可能ファイル、package.info、プロビジョニング証明書、動的ライブラリ、コード リソースなどを含む IPA ファイルがあります。どのファイルが最初に実行され、どの順序で実行されるかを知りたいです。IPA にいくつかのコンテンツを追加したいと考えています。そのためには、既存の IPA がどのように機能するかを理解する必要があります。
前もって感謝します。
IPA ファイルは、アプリケーションの単純な zip ファイルです。これには、バイナリ自体、Info.plist、コード署名ファイル、アイコン、およびその他のリソースが含まれています。
AppStore からアプリをダウンロードすると、IPA ファイルがメタ ファイルとともに /var/mobile/Media/Downloads にダウンロードされます。ダウンロードが完了すると、インストール デーモン (installd) が実行され、IPA が /var/mobile/Applications/<UUID here>/ に抽出されます。このディレクトリには次の場所があります。
その後、IPA ファイルが削除され、アプリケーション アーカイブを削除することでスペースが解放されます。
SpringBoard (ホームスクリーン アプリ) が読み込まれると、すべてのアプリの Info.plist が読み取られ、キャッシュされます。これから、表示名 (アイコンの下の名前)、アイコン自体、実行可能ファイルの名前などを取得します。
アプリのアイコンをクリックすると、実行可能ファイルがメモリに読み込まれている間、SpringBoard はアプリの Default.png をスプラッシュ スクリーンとして表示します。すべての AppStore アプリは Apple による署名時に暗号化されるため、このプロセス中に暗号化が解除されます。実行可能ファイルがメモリにロードされるとすぐに、dyld (動的リンカー) は、リンク先のフレームワークまたはライブラリ (UIKit、libobjc、libSystem など) をロードします。アプリに独自のライブラリを含めることはできません。実行可能ファイルはスタンドアロンである必要があります。次に、アプリの main() 関数が呼び出され、アプリのコードが実行されます。
知っておくべきことがいくつかあります。
アプリの実行可能ファイルを 1 バイトでも変更すると、コード署名が無効になり、カーネルはアプリの実行を拒否します。
ジェイルブレイクされたデバイスで実行していない限り、実行時であっても、実行可能ファイルを編集または変更することはできません。署名されていないコードを何らかの方法 (バイナリ modding またはランタイム dylib インジェクション) で実行しないと、アプリケーションの実行方法を変更することはできません。
IPA は、YOUR ACCOUNT によってのみインストールできます。IPA をダウンロードして実行することはできません。コード署名は無効です。
アプリケーションの実行方法を変更することは簡単ではありません。一部のアプリは、身元が確認されていない plist にすべての構成設定を保存しますが、これらのアプリはほとんどありません。ほとんどのアプリは、ハッシュ アルゴリズム (md5 や sha1 など) を使用して構成を検証したり、ファイルを保存したりします。他の多くのアプリは、単純に plist やその他の簡単に編集できるファイルタイプを使用していません。あまり知られていない形式や独自の形式を使用するか、構成ファイルを使用しません。
ソネシングに参加する前に、自分が何をしようとしているのかを理解してください。私はあなたが挑戦することを思いとどまらせているわけではありません。これをやり遂げるために克服しなければならない障害を理解できるように手助けしようとしているだけです。