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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CodeCut — オブジェクトファイルの境界を特定するためのGhidraプラグイン。 | Kitploit
ツール/GitHubGitHub/jhuapl/codecut
静的分析リバースエンジニアリングバイナリ解析機械学習
GitHubjhuapl/codecut

CodeCut

オブジェクトファイルの境界を特定するためのGhidraプラグイン。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Ghidra用CodeCutプラグイン

DeepCut / CodeCut GUI のための Ghidra プラグイン

動作原理

CodeCut を使用すると、Ghidra 内で関数をオブジェクトファイルに割り当て、オブジェクトファイルレベルでバイナリを操作できます。関数は、Ghidra データベースの Namespace フィールドを設定することでオブジェクトファイルに割り当てられます。DeepCut は初期のオブジェクトファイル境界を確立しようと試み、ユーザーは CodeCut テーブルウィンドウを使用してそれを調整できます。

これがなぜ有用か

ほとんどのバイナリは複数のソースコードファイルに由来します。リバースエンジニアリング時、REアナリストはどの関数が関連しているか、つまり同じソースファイルに属していた可能性が高いかについての感覚を養うことがよくあります。CodeCut を使用すると、アナリストは「この関数のブロックは OS 関数だと思う」といった仮説を立てることができます。その領域に未探索の関数がある場合、それらは単なる FUN_XXXXXXXX ではなく OS::FUN_XXXXXXXX として逆アセンブルや逆コンパイルに表示されます。これにより、コンテキスト内で表示されたときに関数が何に使用される可能性があるかをより迅速に理解できます。

プラグインのインストール

通常の Ghidra 拡張機能のインストール手順に従ってください。CodeCut と DeepCut の拡張機能 zip を $GHIDRA_INSTALL_DIR/Extensions にコピーし、Ghidra のメインウィンドウで File -> Install Extensions を選択して、CodeCut と DeepCut のボックスにチェックを入れます。Ghidra は再起動が必要であることを通知します。Ghidra は現在、プラグインがベースバージョンのメジャー/マイナーバージョンと一致することを要求するだけで、パッチバージョンは要求しないため、偶数メジャー/マイナーバージョンのみをリリースする予定です。

注記: 再起動して CodeBrowser ウィンドウをロードすると、Ghidra は新しいプラグインを見つけたことを通知し、設定するかどうかを尋ねます。このウィンドウには CodeCut のみが表示されます。これは DeepCut が「ワンショット」アナライザーであるためです(これもインストールされています)。

ネイティブ Python パスの設定と Python 依存関係

CodeCut と DeepCut はどちらもネイティブの PyGhidra 拡張機能に依存しており、Jython とは互換性がありません。CodeCut はモジュール名の推測にネイティブ Python を使用します。DeepCut のモデル推論はネイティブ Python で実行されます。

ネイティブ Python 依存関係

CodeCut:

  • nltk

DeepCut:

  • torch
  • torch-geometric
  • networkx
  • scipy

依存関係をインストールするには、以下を実行します:

root@kitploit:~
pip install nltk
pip install torch torch-geometric networkx scipy

PyGhidra にリンクされている Python インストールを使用してください。

DeepCut 解析の実行

DeepCut は、初期の自動解析 後 にワンショットアナライザーとして実行するのが最適です。Analysis -> One Shot -> Deepcut を選択します。DeepCut の実行後、Symbol Table ビューの Namespace フィールドを確認することで結果を表示できます。

CodeCut の使用

DeepCut の実行後、CodeCut Table ビューでオブジェクトファイルレベルでの操作が可能になります。Window -> CodeCut Table を選択してテーブルを表示します。CodeCut テーブルは基本的にシンボルテーブルの結合セットであり、各モジュールに1つずつ対応します。

CodeCut テーブルウィンドウで Analysis -> Guess Module Names を選択すると、CodeCut にモジュール名の推測(文字列参照に基づく)をさせることができます。これは、ターゲットの実行ファイルにデバッグ文字列が多い場合に役立ちます。名前推測スクリプトは、まずソースファイル名の検索を試み、次に複数回繰り返される文字列(バイグラムやトライグラムを含む)にフォールバックします。

オブジェクトを右クリックして Split Namespace Here / Combine Namespaces を選択すると、オブジェクトファイルを分割/結合できます。関数をドラッグアンドドロップすることで、オブジェクトファイル間で関数を移動(オブジェクトファイルの境界を変更)できます。

再コンパイル可能な C へのエクスポート

CodeCut には、CodeCut テーブルでモジュールを右クリックしたときの Export メニューの下に、モジュール全体またはモジュールのサブ範囲を再コンパイル可能な C としてエクスポートするための2つのオプションがあります。この機能は EXPERIMENTAL(実験的)とマークされており、十分にテストされていません。

CodeCut グラフ

CodeCut には、バイナリ内のモジュールの相互作用/階層を表示するためのグラフオプションが追加されました。CodeCut テーブルで関数を右クリックして Add Namespace to Graph を選択すると、名前空間をグラフビューに追加できます。右クリックして Show Namespaces in Graph Filter を選択すると、グラフからモジュールを削除できます。

制限事項

クリックする場所に注意

右側のモジュール名を右クリックできるように見えますが、CodeCut は実際にはテーブルでハイライトされている関数に注目しています。たとえば、object3 の関数がハイライトされている状態で、左側の灰色の object2 ボックスを右クリックして Combine/Split または Rename Namespaces を選択した場合、CodeCut は object3 でハイライトされている関数に対して操作を実行します。

アドレス範囲の特異性

CodeCut は、開始アドレスによって名前空間を並べ替えようとします。CodeCut がモジュールを順序どおりにリストしていないように見えることがありますが、これは通常、Ghidra の逆アセンブリの不規則性によるものです。たとえば、次のようなメモリマップがあるとします:

root@kitploit:~
object2:  0x00010000 - 0x00018000
object3:  0x00018004 - 0x00020000
...
object50: 0x00480000 - 0x00480a00

0x00480000 の関数がアドレス 0x00016008 に分岐またはジャンプするとします。これは新しい関数エントリポイントであるはずですが、1つの関数だけがそれを使用する場合、Ghidra はそれを関数エントリポイントとしてラベル付けせず、FUN_00480000 の一部と見なすだけかもしれません。これは、object50 の実際の範囲が 0x00016008 - 0x00480a00 であることを意味します。そのため、object50 はテーブル内で object2 と object3 の間に表示されます。CodeCut は、このデバッグに役立つようにモジュール範囲を Ghidra のアプリケーションログに出力します。この場合、0x00016008 を関数として定義すると、object50 の境界が正しい値になり、object50 はテーブル内の正しい場所に表示されます。

後からの関数定義

DeepCut 解析の実行後に定義された関数は、デフォルトで Global 名前空間に追加されます。将来的には、それらを最も近い名前空間に自動的に追加する機能を追加するか、単一の関数を特定の名前空間に直接より簡単に割り当てるメカニズムを提供する予定です。

ビルド

具体的なビルド手順は、DeepCut および CodeCut のサブフォルダーに記載されています。

ツールをダウンロード