decompiler について
decompilerは、指定した関数をC風の疑似コードに変換するバイナリ解析スキルです。VulHunt MCPツールを使い、名前、アドレス、パターンで対象関数を指定できます。
主な機能
- 01関数をC風の疑似コードに変換
- 02名前またはアドレスで関数を指定
- 03正規表現やバイトパターンで検索
- 04一致する全関数を返す
活用シーン
- 01関数の実装とロジックの確認
- 02関数の制御フローの分析
- 03詳細な解析前に関数の用途を把握
MCP 対応
このスキルはVulHunt MCPツールでプロジェクトを開き、Luaクエリを実行して関数の疑似コードを取得します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vulhunt-re/ skills --skill decompilerインストール後、Claude Code で/decompilerを入力して読み込まれたか確認します。
詳細
デコンパイラー
バイナリ内の関数をデコンパイルし、C風の擬似コードにします。
使用する場面
- 関数のデコンパイル済みソースコードを表示する
- 関数のロジックと制御フローを分析する
- 詳細な分析に進む前に、関数の動作を把握する
手順
VulHunt MCP ツールを使用してプロジェクトを開き(open_project)、次の Lua クエリ(query_project)を実行します。必要に応じて調整してください。
local d = project:decompile(<target_function>)
return tostring(d)
<target_function> に指定できる値:
- 文字列。例:
"system" - AddressValue
- VulHunt API はアドレスを AddressValue として返します
- AddressValue を作成するには、たとえば
AddressValue.new(0x1234)を使用します
- 正規表現。例:
{matching = "<regex>", kind = "symbol", all = true} - バイトパターン。例:
{matching = "41544155", kind = "bytes", all = true}
allはブール値です。trueに設定すると、一致するすべての関数を含むテーブルが返されます。false(デフォルト)の場合は、最初に一致した値のみが返されます。対象の関数が1つだけの場合(つまり、allがtrueに設定されていない場合)、for ループは必要ありません。
デコンパイルされた C 風の擬似コードを文字列として返します。
関連スキル
- functions(
/functions)— デコンパイルする前に、名前、アドレス、パターン、または動作条件(特定の API を呼び出す関数など)で対象の関数を見つけるために、このスキルを使用します。 - code-pattern-matching(
/code-pattern-matching)— デコンパイル結果から特定のコードパターンを検索します。
コメント
Markdown 対応