mcpField
R
rev-ios-dump

rev-ios-dump

github.com/p4nda0sセキュリティ2.3k1.2k 回インストール25 週間前に更新
リポジトリ

rev-ios-dump について

rev-ios-dump は、iOS のセキュリティ分析やリバースエンジニアリング向けのスキルです。Frida を使い、脱獄済みデバイスで実行中のアプリから復号済みバイナリを取得し、静的解析などに利用できます。

主な機能

  1. 01実行中プロセスから復号済みバイナリを取得
  2. 02復号済み IPA ファイルの生成
  3. 03アプリ内の暗号化フレームワークの取得
  4. 04ダンプ結果の復号状態を確認

活用シーン

  1. 01Mach-O を IDA、Ghidra、Hopper に読み込む
  2. 02Objective-C ヘッダーの抽出
  3. 03バイナリ内の機密文字列の検索
  4. 04Frida フックやシンボル解析用ファイルの準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/p4nda0s/reverse-skills --skill rev-ios-dump

インストール後、Claude Code で/rev-ios-dumpを入力して読み込まれたか確認します。

詳細

rev-ios-dump - iOS アプリの復号(砸壳)

ジェイルブレイク済みデバイスから復号済みの iOS アプリケーションバイナリをダンプし、セキュリティ分析とリバースエンジニアリングに使用します。


概要

App Store で配布される iOS アプリは、Apple の FairPlay DRM で暗号化されています。静的解析(IDA/Ghidra/Hopper)を行うには、まず実行時にバイナリを復号する必要があります。これは一般に「砸壳」(シェルのダンプ)と呼ばれています。このスキルでは Frida を使って実行中のプロセスに計装し、メモリ上の復号済み Mach-O をダンプします。


前提条件

要件詳細
ジェイルブレイク済み iOS デバイスSSH アクセスが有効になっていること
frida-serverデバイスにインストールされ、実行中であること
Python 3ホストマシンにインストールされていること
frida + frida-toolspip3 install frida frida-tools
USB またはネットワークアクセスデバイスへの SSH 接続
frida-server の実行を確認する
# Check frida-server on device via SSH
ssh mobile@<device_ip> "ps aux | grep frida-server"

# If not running, start it
ssh mobile@<device_ip> "/usr/sbin/frida-server -D &"

# Verify from host
frida-ls-devices
frida-ps -H <device_ip>

ツール:frida-ios-dump

リポジトリ:https://github.com/P4nda0s/frida-ios-dump

インストール
git clone https://github.com/P4nda0s/frida-ios-dump.git
cd frida-ios-dump
pip3 install -r requirements.txt

# Build the TypeScript agent (required before first run)
npm install --ignore-scripts
npx frida-compile dump.ts -o dist/dump.js

注:このバージョンでは TypeScript ベースの Frida エージェントを使用します。dump.py を実行する前に、dist/dump.js をコンパイルする必要があります。


手順

手順 1:対象アプリの Bundle ID を特定する

デバイス上で次のいずれかの方法を使用します。

# Method 1: List running apps via Frida
frida-ps -H <device_ip> -a

# Method 2: SSH into device and check
ssh mobile@<device_ip> "find /var/containers/Bundle/Application -name Info.plist -exec plutil -p {} \; 2>/dev/null | grep CFBundleIdentifier"

または、デバイス上の CocoaTop を使って実行中のプロセスとその Bundle ID を特定します。

手順 2:対象アプリが実行中であることを確認する

対象アプリはデバイス上で実行中である必要があります。frida-ios-dump は実行中のプロセスにアタッチして、復号済みメモリをダンプします。

手順 3:ダンプを実行する
cd frida-ios-dump

python3 dump.py -H <device_ip> -u mobile -P <password> <bundle_id>

パラメーター:

フラグ説明
-Hデバイスの IP アドレス
-uSSH ユーザー名(通常は mobile)
-PSSH パスワード(ジェイルブレイク直後は通常 alpine)
<bundle_id>対象アプリの Bundle ID(例:app.ish.iSH)

例:

python3 dump.py -H 192.168.1.100 -u mobile -P alpine app.ish.iSH
手順 4:出力を確認する

ダンプが成功すると、カレントディレクトリに .ipa ファイルが生成されます。

ls -la *.ipa

# Unzip to inspect
unzip -o <app_name>.ipa -d dumped_app/

# Verify decryption — cryptid should be 0
otool -l dumped_app/Payload/<AppName>.app/<BinaryName> | grep -A4 LC_ENCRYPTION_INFO

cryptid 0 と表示されていれば、バイナリは正常に復号されています。


トラブルシューティング

エラー原因対処方法
Failed to spawnアプリがインストールされていないか、Bundle ID が間違っているfrida-ps -H <ip> -a で Bundle ID を確認します
Unable to connect to remote frida-serverfrida-server が実行されていないか、ポートがブロックされているデバイスで frida-server を起動し、ファイアウォールを確認します
SSH connection refusedSSH が有効になっていないか、認証情報が間違っているssh mobile@<ip> で SSH アクセスを確認します
Timeout waiting for processアプリがクラッシュしたか、完全に起動していないまずアプリを手動で起動してから、再試行します
frida.ServerNotRunningErrorfrida-server のバージョンが一致していないfrida-server のバージョンをホスト側の frida のバージョンに合わせます
出力に cryptid 1 と表示されるダンプに失敗し、バイナリが暗号化されたままになっているダンプ中にアプリが実行中であることを確認し、再試行します
Permission deniedSSH キーまたはパスワードに問題がある-u と -P のフラグを確認するか、SSH キー認証を使用します
バージョン不一致の修正

frida-server とホスト側の frida は、メジャーバージョンを一致させる必要があります。

# Check host version
frida --version

# Download matching frida-server from:
# https://github.com/frida/frida/releases
# Choose: frida-server-<version>-ios-arm64.xz

出力の使用方法

復号済み IPA を取得した後:

  1. 静的解析 — 復号済み Mach-O を IDA/Ghidra/Hopper に読み込みます
  2. クラスダンプ — ObjC ヘッダーを抽出します:class-dump <binary> > headers.h
  3. 文字列分析 — 機密性の高い文字列、URL、キーを検索します
  4. Frida フッキング — 動的解析には rev-frida スキルと併用します
  5. シンボルの復元 — シンボルが削除されたバイナリの分析には rev-symbol スキルと併用します

注意事項

  • ダンプ処理中は、デバイスのロックを解除したままにし、アプリをフォアグラウンドに表示しておく必要があります。
  • 複数のフレームワークを含むアプリの場合、frida-ios-dump はアプリバンドル内の暗号化されたフレームワークをすべてダンプします。
  • 高度なジェイルブレイク検出機能を備えたアプリは、ダンプの完了前に終了することがあります。その場合は、まずジェイルブレイク検出の回避を検討してください。

コメント