Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ida_kcpp — ida_kernelcache上でC++サポートを強化するためのIDAPythonモジュール | Kitploit
ツール/GitHubGitHub/cellebrite-labs/ida_kcpp
静的分析iOSセキュリティリバースエンジニアリングモバイルセキュリティバイナリ解析
GitHubcellebrite-labs/ida_kcpp

ida_kcpp

ida_kernelcache上でC++サポートを強化するためのIDAPythonモジュール

リポジトリを見る
14215352ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

ida_kcpp

iOSカーネルキャッシュのリバースエンジニアリングをはるかに便利にするIDAPythonモジュールです。

iOSカーネルキャッシュの大部分はC++で書かれており、明示的な直接呼び出しではなく多くの仮想テーブル参照を使用する複雑なバイナリコードにコンパイルされています。ida_kcppはida_kernelcacheのクラス階層再構築を活用します。IDBをマッピングし、バイナリ関数と元の仮想メソッドを同期します。これにより、C++仮想メソッド呼び出しをダブルクリックしてナビゲートし、そのxrefを見つけ、ライブリサーチ中にすべてを同期させ続けることで、iOSカーネルキャッシュ内を移動できるようになります。

ida_kcppはida_medigateに触発されていますが、iOSカーネルキャッシュの独自の構造を活かし、より強力で便利なリサーチ環境を提供します。

general_view

インストール

  • ida_kernelcache (Cellebriteのフォーク)をインストールする
  • オプションですが、強く推奨: デコンパイラからのアクセスによる構造体フィールドのxref追跡のためにida-referee (Cellebriteのフォーク)をインストールする

どちらもPyPIにはないため、それぞれのリポジトリのインストール手順に従ってください。

ida-setupを使用する場合:

ida-setup plugin install -e /path/to/ida-kcpp

または手動で:

  1. ida-netnode をインストールします
  2. ida_kernelcache と ida_kcpp が IDA の Python パスに含まれていることを確認します。

~/.idapro/idapythonrc.py に追加することでも可能です:

import sys
sys.path.append(IDA_KCPP_PATH)
sys.path.append(IDA_KERNELCACHE_PATH)
  1. ~/.idapro/plugins/ida_kcpp_plugin.py を ida_kcpp_plugin.py にシンボリックリンクする

使用方法

事前解析

  1. 解析対象の kernelcache を開きます。ida_kernelcache がまだ実行されていない場合は、edit >> Plugins >> Kernel Cache CPP >> ida_kernelcache process kernel を実行してください。
  2. Edit >> Plugins >> Kernel Cache CPP >> Perform Initial sync... を実行します(警告のメッセージボックスがいくつか表示される場合がありますが、今は無視して構いません)。このステップでは、仮想関数名のプレフィックスをその関数が属するクラスに設定することで、仮想関数名をリネームします。また、すべての仮想関数をデコンパイルし、その this 引数を設定し、関連する ::vmethods メンバーをデコンパイルされた型への関数ポインタに変更します。このステップには時間がかかる場合があります...
  3. これで「Synced IDB」ができましたが、注意してください - プラグインはまだ有効化されていません。

同期済み IDB に対するプラグインの有効化

ida_kcpp は名前とプロトタイプを自動的に伝播し、IDA のナビゲーションの一部も変更するため、自動的には有効化されませんが、任意のタイミングで有効化または無効化できます。

edit >> Plugins >> Kernel Cache CPP >> Activate Plugin をクリックして ida_kcpp を有効化します(これにより Hexrays フックがインストールされ、ida_kernelcache.collect_class_info() も実行されます)。

プラグインの無効化

Edit >> Plugins >> Kernel Cache CPP >> Deactivate Plugin をクリックします。

機能概要

仮想関数シンクロナイザー

仮想関数のリネーム

仮想関数をリネームする際、マングル名(例: __ZNK10AppleA7IOP9method_86Ev_99)を編集することも、人間が読める名前(AppleA7IOP::method_86)に変更することもできます。後者は自動的にマングルされます。関連する ANCESTOR::vmethods メンバーもリネームされ、同じ仮想メソッドを実装するすべての仮想関数もリネームされます。

仮想関数プロトタイプの更新

仮想関数プロトタイプの変更についても同様です。この場合、関連する ANCESTOR::vmethods メンバーのプロトタイプが、設定されたばかりの型への関数ポインタに変更され、this は ANCESTOR * として設定されます。また、ANCESTOR の DESCENDANTS における関連するすべての仮想メソッド実装のプロトタイプも変更され、その this は DESCENTANT * として設定されます。

改善された XREFS

  • すべての仮想関数から、その抽象的な ::vmethods メンバーへの xref を追加します。
  • ida_referee を使用することで、すべてのフィールド、特に ::vmethods メンバー(仮想呼び出し)の使用箇所をデコンパイラ内で追跡できます。
    • また、仮想関数から CTRL+SHIFT+Y ホットキーで、関連する ::vmethod メンバーの xrefs ウィンドウを直接開けるようにしました。IDA のバグにより、これは逆アセンブリウィンドウからのみ機能し、デコンパイラからは機能しません。

改善されたナビゲーション

  • デコンパイラ: 仮想関数呼び出しをダブルクリックすると、仮想メソッドの実装を選択できるウィンドウがポップアップ表示されます。

    image-20220707161129479

  • Local Types ビュー(Shift+F1):

    • 仮想メソッドをダブルクリックすると実装に移動します(注: IDA 9 ではリネームダイアログも表示されますが、閉じることができます)
    • 仮想メソッド上で Cmd+Enter を押しても実装に移動します(ダブルクリックよりクリーンな代替手段)
    • :: を含む構造体名をダブルクリックしてもジャンプしない IDA のバグを修正しました。

今後の改善

  1. IDA7.2 の C++ クラス互換性のサポート追加。レガシーな理由によりまだ行っていない ida_kernelcache の構造体レイアウトの変更が必要です
  2. 競合のための名前/プロトタイプ解決インターフェースの追加。

メタ情報

Cellebrite Labs の Uriel Malin、Ievgen Solodovnykov、Omer Porzecanski によって作成されました。 macOS 上の Python 3.13 を備えた IDA 9.2 向けに開発およびテストされています

ツールをダウンロード