Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
frida-ios-dump-modern — 最新のFrida 17.5.2 APIをサポートする、アップデート版のFrida iOSダンプツール | Kitploit
ツール/GitHubGitHub/jwalker/frida-ios-dump-modern
iOSセキュリティモバイルアプリペンテストリバースエンジニアリングマルウェア分析モバイルセキュリティバイナリ解析
GitHubjwalker/frida-ios-dump-modern

frida-ios-dump-modern

最新のFrida 17.5.2 APIをサポートする、アップデート版のFrida iOSダンプツール

リポジトリを見る
97ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

モダン iOS IPA ダンパー

Frida 17.5.2+ 向けに構築された、モダンな iOS アプリケーションメモリ復号ツールです。iOS 14-16 と複数の脱獄環境を完全サポートしています。

ステータス: ✅ 動作確認済み・テスト済み - Frida 17.5.2 を使用して iOS アプリのダンプと復号化に成功した環境:

  • iOS 14.7.1 + Taurine 脱獄 (iPad mini 5)
  • iOS 16.7.12 + palera1n 脱獄 (iPhone 8)

特徴

  • ✅ Frida 17.5.2+ に対応 (NativePointer.readByteArray を使用)
  • ✅ Taurine 脱獄 (iOS 14.7.1) で動作
  • ✅ palera1n 脱獄 (iOS 16.7.12) で動作
  • ✅ palera1n の /cores/binpack/ 脱獄パスに対応
  • ✅ メモリダンプ + 手動 cryptid パッチによる高速復号化
  • ✅ 非推奨 API 呼び出しなし
  • ✅ クリーンで保守しやすいコード
  • ✅ IPA パッケージングを自動化
  • ✅ Python paramiko を使用 (外部ツール不要)
  • ✅ 詳細な進捗レポート

なぜこのツールなのか?

元の frida-ios-dump(2020年最終更新)は非推奨の Frida API を使用しており、Frida 17.5.2 では動作しません。このツールはモダンな Frida API を使用してゼロから構築され、Taurine 互換の Frida パッチで特にテストされています。

要件

macOS/ホスト側の要件

  • Python 3.8+
  • Frida 17.5.2+
  • paramiko (Python SSH ライブラリ - 自動インストール)
  • iproxy (libimobiledevice 経由の USB 接続用)

iOS デバイス側の要件

  • 脱獄済み iOS デバイス (iOS 14.7.1 + Taurine でテスト済み)
  • パッチ適用済み frida-server が実行中であること (Frida パッチは will add my patch repo を参照)
  • SSH アクセスが有効であること

インストール

root@kitploit:~
cd /Users/username/git/frida-ios-dump-modern

# Create virtual environment with uv:
uv venv
source .venv/bin/activate

# Install dependencies
uv pip install -r requirements.txt

# Make script executable
chmod +x dump.py

USB 接続のセットアップ

root@kitploit:~
# Install libimobiledevice if needed
brew install libimobiledevice

# Start USB tunnel (in a separate terminal)
iproxy 2222 22

使用方法

1. インストール済みアプリの一覧表示

root@kitploit:~
python dump.py -l

2. アプリのダンプ

重要: Taurine 脱獄の制限により、ダンプ前にアプリを起動しておく必要があります。

root@kitploit:~
# 1. Launch the app on your device manually
# 2. Run the dumper:

python dump.py com.example.app

# With custom SSH password:
python dump.py com.example.app -P your_password

# With custom output directory:
python dump.py com.example.app -o /path/to/output

3. 例: Ventusky のダンプ

root@kitploit:~
# 1. Open Ventusky on your iOS device
# 2. Run:
python dump.py com.in-meteo.ventusky -P mypassword

動作の仕組み

iOS 16 互換アプローチ (ハイブリッド方式)

  1. アタッチ: Frida を介して実行中のアプリプロセスに接続
  2. 列挙: アプリ内の読み込み済みモジュール (バイナリ) をすべて列挙
  3. ディスク上のバイナリを読み取り: デバイスのファイルシステムから元の暗号化バイナリを読み取り
    • iOS 16 では重要: LC_DYLD_CHAINED_FIXUPS データを保持
    • 元の DATA セグメントをフィックスアップチェーンごと保持
  4. 復号化済みセグメントの読み取り: メモリから暗号化された TEXT セグメントのみを読み取り
    • iOS は実行時にコードを復号化
    • バイナリ全体ではなく、復号化された部分だけを読み取ります
  5. 置換 & パッチ:
    • ディスク上のバイナリの暗号化された TEXT セグメントを、復号化されたメモリで置換
    • LC_ENCRYPTION_INFO で cryptid=0 を設定
    • すべての DATA セグメントは変更されません (フィックスアップを保持)
  6. ダンプ: ハイブリッドバイナリをデバイス上の /tmp に書き込み
  7. ダウンロード: paramiko を介した SCP でデバイスからファイルを転送
  8. パッケージング: 解析可能な復号化済み IPA ファイルを作成

これが iOS 16 で機能する理由:

  • iOS 16 はチェインドフィックスアップを使用 - ポインタは "チェーン" として保存され、dyld が実行時に解決
  • メモリからのダンプでは解決済みポインタが得られますが、ツールはフィックスアップチェーンを期待
  • ディスク上のバイナリを読み取り、暗号化された TEXT のみを置換することで、元のフィックスアップを保持
  • これは bagbak や他のモダンなダンパーが使用するのと同じアプローチです

出力

このツールは以下を作成します:

  • 個別の復号化済みバイナリ
  • 復号化済みバイナリを含む完全なアプリバンドル
  • 解析可能な IPA ファイルにパッケージング

出力構造の例:

root@kitploit:~
/tmp/Ventusky_decrypted/
├── Payload/
│   └── Ventusky.app/
│       ├── Ventusky (decrypted main binary)
│       ├── Frameworks/
│       │   └── *.framework (decrypted frameworks)
│       └── ... (other app resources)
└── Ventusky_decrypted.ipa

Taurine 脱獄との互換性

このツールは、以下を含む Taurine パッチ適用済み Frida サーバーで動作するように設計されています:

  1. iOS 14 でのスレッド停止なし: カーネルパニックを防止
  2. launchd インジェクションなし: Taurine の制限を尊重
  3. 手動でのアプリ起動が必要: ダンプ前にアプリを手動で起動する必要があります

トラブルシューティング

"USB デバイスが見つかりません"

root@kitploit:~
# Check frida-server is running on device:
ssh -p 2222 root@localhost "ps aux | grep frida-server"

# Restart frida-server if needed:
ssh -p 2222 root@localhost "killall frida-server; frida-server &"

"アプリが見つかりません"

root@kitploit:~
# List apps to find correct bundle ID:
python dump.py -l

"アプリが起動していません"

root@kitploit:~
# Launch the app manually on your device first
# This is required due to Taurine jailbreak restrictions

SSH 認証に失敗する場合

root@kitploit:~
# Test SSH connection:
ssh -p 2222 root@localhost

# If password prompt works, use -P flag:
python dump.py com.example.app -P your_password

iOS 16: Hopper で "Objective-C Metadata looks mangled" と表示される場合

パッチ適用後に iOS 16 でメタデータエラーが発生する場合:

問題を診断する:

root@kitploit:~
# Run diagnostic on dumped binary
./diagnose_ios16.sh /tmp/AppName_decrypted/Payload/AppName.app/AppName

# Compare with working iOS 14 binary
./diagnose_ios16.sh /path/to/working/ios14/binary

確認すべき重要ポイント:

  1. ファイルサイズがディスク上の元のバイナリと一致している
  2. LC_DYLD_CHAINED_FIXUPS (iOS 16 固有) を確認
  3. パッチ後に cryptid が 0 であることを確認

このツールは、実行時に展開されたメモリ領域をダンプしないよう、ディスクから元のファイルサイズを読み取ります。

ダンプ後: 検証

朗報: このツールはダンプ中に cryptid=0 を自動設定するため、手動パッチは不要になりました!

iOS 16 互換性: このツールはハイブリッド方式を採用:

  1. ディスクから元のバイナリを読み取り (チェインドフィックスアップを保持)
  2. 暗号化された TEXT セグメントのみを復号化済みメモリで置換
  3. cryptid=0 を自動設定
  4. すべての DATA セグメントを元のフィックスアップチェーンごと保持

これにより、iOS 16 で "Is this a file manually extracted from the DYLD shared cache?" や "Objective-C Metadata looks mangled" といったエラーを防ぎます。

ダンプを検証する:

root@kitploit:~
# Check that cryptid is 0 (should be automatic now)
otool -l Payload/App.app/App | grep cryptid
# Should show: cryptid 0

# Check file has all segments
otool -l Payload/App.app/App | grep "segname __"
# Should show: __TEXT, __DATA_CONST, __DATA, __LINKEDIT

# Open in Hopper - should work without warnings!

手動パッチ (レガシー - 現在は不要):

何らかの理由で自動 cryptid パッチが機能しなかった場合:

root@kitploit:~
# Check if patching needed
otool -l Payload/App.app/App | grep cryptid
# If shows cryptid 1, run:

python patch_cryptid.py Payload/App.app/App
mv Payload/App.app/App.patched Payload/App.app/App

期待される結果:

  • ✅ Hopper が "ciphered" や "mangled metadata" の警告なしで開く
  • ✅ すべての Objective-C クラスとメソッドが表示される
  • ✅ プロシージャ名が正しく解決される (sub_XXXXX ではない)
  • ✅ iOS 14 (Taurine) と iOS 16 (palera1n) の両方で動作

技術詳細 - iOS 16 チェインドフィックスアップ:

  • 問題: iOS 16 はポインタ認証に LC_DYLD_CHAINED_FIXUPS を使用
  • 課題: メモリからのダンプでは解決済みポインタが得られ、フィックスアップチェーンは得られない
  • 解決策: ハイブリッド方式
    1. ディスクから元の暗号化バイナリを読み取り (フィックスアップチェーンあり)
    2. メモリから復号化済み TEXT セグメントのみを読み取り
    3. ディスク上のバイナリの暗号化 TEXT を復号化済みメモリで置換
    4. ディスク上の DATA セグメントを保持 (フィックスアップチェーンは無傷)
    5. cryptid=0 を自動設定
  • 結果: 復号化済みコード + 元のフィックスアップチェーンを持つバイナリ = Hopper も大喜び!

旧 frida-ios-dump との API の違い

このツールはモダンな Frida 17.5.2 API を使用しています:

サポート

このツールが役立つ場合、またはさらなるアップデートが必要な場合は、プロジェクト "Boba needs" へのサポートをご検討ください:

☕ ボバをごちそうしてください

ライセンス

MIT ライセンス - セキュリティ研究および教育目的で無料で使用できます。

クレジット

  • Taurine パッチ適用済み Frida での使用向けに構築 (ケーススタディは近日公開)
  • AloneMonkey によるオリジナルの frida-ios-dump に触発
  • Frida 17.5.2+ 向けのモダンな API 実装

セキュリティに関する注意事項

このツールは以下の目的を対象としています:

  • セキュリティ研究
  • CTF チャレンジ
  • 教育目的
  • ???
  • 利益
ツールをダウンロード
旧 API (非推奨)新 API (モダン)備考
Module.ensureInitialized()不要ObjC は自動初期化
Module.findExportByName(null, 'name')Module.findGlobalExportByName('name')グローバルエクスポート
Process.getModuleByName()Process.findModuleByName()見つからない場合は null を返す
手動 POSIX ファイル I/Onew File(path, 'wb')組み込みの File API
Memory.writeByteArray()file.write(arrayBuffer)バイナリの直接書き込み