
依存関係不要のPython CLIで、iOSの.ipaアーカイブを展開、検査、編集、再構築し、Mach-Oバイナリと署名バンドルを保持したままplistと文字列をXMLに変換します。
#IPAForge
IPAForgeは、iOSの.ipaアーカイブを展開、検査、編集、再構築するための依存関係のないPythonコマンドラインツールです。
アーカイブ全体を抽出し、編集可能なApple plistおよびローカリゼーション形式を読み取り可能なXMLに変換し、不透明なコンテンツやバイナリコンテンツをバイト単位で保持し、すべての変換をipaforge.ymlに記録することで、フレームワークを忠実に再構築できるようにします。
責任を持って使用してください: IPAForgeは相互運用性、セキュリティ研究、および正当なアプリケーション分析を目的としています。適用される法律、ライセンス、および利用規約を遵守してください。
.ipaアーカイブをデコードおよび再構築します。.stringsファイルを編集可能なXMLに変換します。.car、.nib、.momなどのApple独自形式を保持します。ipaforge.ymlにファイルごとの分類および変換メタデータを生成します。Payload/<AppName>.appバンドルを含む有効な.ipaアーカイブ。IPAForgeは単一のPythonファイルとして直接使用できます:
python3 ipaforge.py --help
ipaforge コマンドを PATH にインストールするには:
python3 ipaforge.py --install
バンドルされた配布ファイルをインストールせずに抽出するには:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
これにより、現在の作業ディレクトリ(通常は ./MyApp/)にフレームワークディレクトリが作成されます。
生成されたフレームワーク内の読み取り可能な XML ファイルを変更します。元のアーカイブデータと参照は original/ に保持され、変換されたファイルは ipaforge.yml で追跡されます。
ipaforge -b MyApp
デフォルトの出力は、カレントワーキングディレクトリ内の ./MyApp-signed.ipa です。
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| オプション | 説明 |
|---|---|
-d, --decode | IPA を編集可能なフレームワークディレクトリにデコードします。 |
-b, --build | デコードされたフレームワークディレクトリから IPA をビルドします。 |
-f, --force | 既存の出力ディレクトリまたはファイルを上書きします。 |
--no-meta | デコード時に ipaforge.yml を書き込みません。 |
--keep-binary | デコード時にすべてのファイルをバイナリのまま保持し、XML 変換を無効にします。 |
-c 0-9, --compression-level 0-9 | ZIP 圧縮レベルを設定します。デフォルト: 9。 |
--no-sign | 意図的に署名なしのアーカイブをビルドします。 |
--entitlements FILE | ビルドされた署名にエンタイトルメントを埋め込みます。 |
--p12 FILE | 実際の PKCS#12 開発者証明書で署名します。 |
--p12-password PASS | PKCS#12 証明書のパスワード。 |
--provision FILE | --p12 と共にプロビジョニングプロファイルを埋め込み、使用します。 |
-v, --verbose | デバッグログを有効にします。 |
-q, --quiet | エラーのみを出力します。 |
--version | IPAForge のバージョンを表示します。 |
-h, --help | ヘルプを表示します。 |
Windows では、モードを自動的に推測できます。.ipa 入力はデコードされ、フレームワークディレクトリはビルドされます。
ビルドモードでは、デフォルトで組み込みのアドホック署名ツールを使用してバンドルに署名します。Mach-O バイナリ用の CodeDirectory データと、アプリケーションバンドル用の新しい _CodeSignature/CodeResources ファイルを作成します。
純正の iOS デバイスにインストールするには、実際の開発者証明書と互換性のあるプロビジョニングプロファイルを使用してください:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
カスタムエンタイトルメントを埋め込むには:
ipaforge -b MyApp --entitlements entitlements.plist
意図的に署名なしのアーカイブを作成するには:
ipaforge -b MyApp --no-sign
未署名のアーカイブは通常、iOS ではインストールできません。
デコードされたフレームワークには通常、以下が含まれます:
MyApp/
├── Payload/
│ └── MyApp.app/
├── original/ # reference copies of signatures, profiles, and entitlements
├── readable/ # human-readable summaries for opaque formats and binaries
└── ipaforge.yml # file classifications and conversion metadata
original/ ディレクトリと ipaforge.yml は、再構築された IPA には決してパッケージ化されません。
IPAForge は抽出されたファイルを以下のようなカテゴリに分類します:
native-bplist — XML に変換され、バイナリ plist として再構築されるバイナリプロパティリスト。legacy-strings — XML に変換され、UTF-16 テキストとして再構築される従来の .strings ファイル。xml-plist — テキストとして保持される既存の XML plist ファイル。opaque-compiled — バイト単位で保持される Apple 独自のコンパイル済みフォーマット。native-binary — バイト単位で保持される Mach-O 実行ファイルおよびライブラリ。other-binary — バイト単位で保持される画像、音声、DER データ、その他のリソース。| コード | 意味 |
|---|---|
0 | 操作が成功しました。 |
1 | 無効なアーカイブや署名の失敗など、実行時エラー。 |
2 | コマンドラインの使用法エラー。 |
141 | パイプの読み取り側によって標準出力が早期に閉じられました。 |
IPAForge は信頼できないアーカイブの内容を処理します。このツールは個々のアーカイブメンバーおよびアーカイブ全体の非圧縮サイズに対して防御的な制限を適用しますが、それでも未知のファイルは隔離された環境で検査するべきです。
分析および署名を行う法的権利がない限り、アプリケーションを配布またはインストールしないでください。
この README は IPAForge 1.24.0 について説明しています。
このプロジェクトは MIT ライセンスの下でライセンスされています - 詳細については LICENSE ファイルを参照してください。