
最新のFrida 17.5.2 APIをサポートする、アップデート版のFrida iOSダンプツール
Frida 17.5.2+ 向けに構築された、モダンな iOS アプリケーションメモリ復号ツールです。iOS 14-16 と複数の脱獄環境を完全サポートしています。
ステータス: ✅ 動作確認済み・テスト済み - Frida 17.5.2 を使用して iOS アプリのダンプと復号化に成功した環境:
/cores/binpack/ 脱獄パスに対応元の frida-ios-dump(2020年最終更新)は非推奨の Frida API を使用しており、Frida 17.5.2 では動作しません。このツールはモダンな Frida API を使用してゼロから構築され、Taurine 互換の Frida パッチで特にテストされています。
paramiko (Python SSH ライブラリ - 自動インストール)iproxy (libimobiledevice 経由の USB 接続用)will add my patch repo を参照)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
# Install libimobiledevice if needed
brew install libimobiledevice
# Start USB tunnel (in a separate terminal)
iproxy 2222 22
python dump.py -l
重要: Taurine 脱獄の制限により、ダンプ前にアプリを起動しておく必要があります。
# 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
# 1. Open Ventusky on your iOS device
# 2. Run:
python dump.py com.in-meteo.ventusky -P mypassword
/tmp に書き込みこれが iOS 16 で機能する理由:
このツールは以下を作成します:
出力構造の例:
/tmp/Ventusky_decrypted/
├── Payload/
│ └── Ventusky.app/
│ ├── Ventusky (decrypted main binary)
│ ├── Frameworks/
│ │ └── *.framework (decrypted frameworks)
│ └── ... (other app resources)
└── Ventusky_decrypted.ipa
このツールは、以下を含む Taurine パッチ適用済み Frida サーバーで動作するように設計されています:
# 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 &"
# List apps to find correct bundle ID:
python dump.py -l
# Launch the app manually on your device first
# This is required due to Taurine jailbreak restrictions
# 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 でメタデータエラーが発生する場合:
問題を診断する:
# 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
確認すべき重要ポイント:
このツールは、実行時に展開されたメモリ領域をダンプしないよう、ディスクから元のファイルサイズを読み取ります。
朗報: このツールはダンプ中に cryptid=0 を自動設定するため、手動パッチは不要になりました!
iOS 16 互換性: このツールはハイブリッド方式を採用:
これにより、iOS 16 で "Is this a file manually extracted from the DYLD shared cache?" や "Objective-C Metadata looks mangled" といったエラーを防ぎます。
ダンプを検証する:
# 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 パッチが機能しなかった場合:
# 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
期待される結果:
技術詳細 - iOS 16 チェインドフィックスアップ:
このツールはモダンな Frida 17.5.2 API を使用しています:
このツールが役立つ場合、またはさらなるアップデートが必要な場合は、プロジェクト "Boba needs" へのサポートをご検討ください:
MIT ライセンス - セキュリティ研究および教育目的で無料で使用できます。
このツールは以下の目的を対象としています:
| 旧 API (非推奨) | 新 API (モダン) | 備考 |
|---|
Module.ensureInitialized() | 不要 | ObjC は自動初期化 |
Module.findExportByName(null, 'name') | Module.findGlobalExportByName('name') | グローバルエクスポート |
Process.getModuleByName() | Process.findModuleByName() | 見つからない場合は null を返す |
| 手動 POSIX ファイル I/O | new File(path, 'wb') | 組み込みの File API |
Memory.writeByteArray() | file.write(arrayBuffer) | バイナリの直接書き込み |