IDA データベースを SQL/AI エージェントで解析する(IDASQL)
IDA Pro の DB を SQL で読み書きし、HTTP/MCP 経由で AI エージェントに関数注釈や xref 調査を任せる。Python 実行は既定オフ、待ち受けは localhost。
何を解決するか / いつ使うか
- マルウェア解析で、文字列・API 参照・構造体メンバーを横断検索したいとき。
- Claude Code などに IDA をバックグラウンド起動させ、相互参照の順位付けや不審 URL の洗い出しを手伝わせたいとき(AI で自社サービスをセルフペネトレーションする とは別の「解析補助」用途)。
- GUI 操作とエージェント接続を、ローカル HTTP サーバーで橋渡ししたいとき。
手順の概要
- GitHub の
allthingsida/idasqlを導入する(商用含め無料。独自の Human-Origin Source License。改変の独自保守や AI 入力からの派生実装には書面許可が必要な条項あり)。 - IDA 9.2 / 9.3 / 9.4 向けにビルドが分かれる(9.4 は Windows Arm64 ネイティブ版あり)。v0.0.18.1 で 9.3 の読み込み不具合が修正済み。
- エージェント連携の二系統
- 別配布の
idasql-skillsを Claude Code 等に入れ、エージェントが IDA を起動して注釈付けする。 - GUI の idasql プロンプトで
.http startし、起動したサーバーにエージェントを接続する。
- 別配布の
- 指示例(投稿で挙げられたもの)
"password"文字列を参照する関数を xref 数で順位付け。CreateFileWの呼び出し元とエラー処理の要約。- 埋め込み不審 URL と参照元関数の特定。
- 安全寄りの既定
- IDAPython 実行は既定無効。v0.0.19 では
runtime_settingsのenable_idapythonを UPDATE で 1 にしてセッションごとに有効化(7月版の PRAGMA 指定はエラーになる)。 - サーバー待ち受けは既定
127.0.0.1。HTTP/REPL には任意で認証トークン。MCP サーバーには認証が無いと README に明記されている点に注意。
- IDAPython 実行は既定無効。v0.0.19 では
- v0.0.19 付近の追加: FLIRT シグネチャー適用、名前付き地点までのチェックポイント(取り消し)、IDAPython からの SQL 実行など。構造体メンバー型は
types_members.member_typeへの INSERT/UPDATE で変更可能。
注意点
- MCP 無認証+エージェント接続は、AI エージェントに資格情報を渡す 4 パターンと使い分けと同様、localhost 以外に晒さない・ホストのファイアウォールで閉じる。
- 解析対象は悪性の可能性が高い。隔離環境で使い、ライセンス条項(派生・改変)は組織ポリシーで確認する。
- 版によって設定方法が変わる(PRAGMA → runtime_settings など)。導入時は当該版 README を正とする。