Ghidra リバースエンジニアリング
アクション必須(読んだらすぐ実行)
NOW: ../field-journal/precedent-reverse.md を読む
NOW: Ghidra が必要か確認(IDAなし/オープンソース優先/バッチヘッドレス)
NEXT: ../tool-index.md を読み、ghidra / ghidra-mcp のパスを確認
NEXT: ツール不足 → ghidra-mcp をブートストラップ(manifest対応時)または手動でGhidraをインストール
ACT: サンプルをインポート → 自動解析 → 主要関数の逆コンパイル結果をエクスポート
適用シーン
- IDAライセンスがない場合のメインリバースエントリ
- バッチヘッドレス解析/CIでの逆コンパイル
- Ghidraスクリプト(Java/Python Jython/PyGhidra)による自動化
binary-diff / patch-diff-exploit とのghidriff連携
IDAとの役割分担
| 要件 | 優先 |
|---|
| 既存のIDA MCPによる深堀り | ida-reverse/ |
| オープンソース/バッチ/教育 | 本スキル |
| CLIのみで簡易調査 | radare2/ |
ワークフロー
1. プロジェクトと自動解析
□ 新規プロジェクト作成 → ファイルインポート → 解析(デフォルトアナライザ)
□ 言語/コンパイラ識別結果とベースアドレスを記録
□ エントリポイント、エクスポートテーブル、文字列クロスリファレンスをマーク
2. 主要関数
□ 文字列/インポートAPIから逆引き
□ 逆コンパイルウィンドウでアルゴリズムを解析
□ 関数/変数のリネーム;Plateコメントを記述
□ 動的解析が必要な場合、Frida/GDBに引き継ぎ(reverse-engineering 動的解析セクション)
3. ヘッドレス(バッチ)
analyzeHeadless /path/to/project Proj -import sample.bin -postScript ExportDecomp.py
4. MCP(設定済みの場合)
□ ghidra MCPのポートを確認(通常8765、tool-indexに従う)
□ MCPツールを使用して逆コンパイル結果やクロスリファレンスを取得。ポートの推測は禁止
ツールチェーン
| ツール | 用途 | ブートストラップ |
|---|
| Ghidra | 逆コンパイルメインツール | 手動リリース/パッケージマネージャ |
| ghidra-mcp | AIブリッジ | ブートストラップ能力名 ghidra-mcp |
| ghidriff | パッチ差分 | patch-diff-exploit 参照 |
参考
references/ghidra-cheatsheet.md
../ida-reverse/ ../radare2/ ../binary-diff/
ルーティングコンテキスト
上流: MASTER R22
下流: 動的検証 → Frida/GDB;エクスプロイト → pwn-chain
同列: ida-reverse(商用深堀)
タスク完了セルフチェック