
Vibe Reverse Engineer with IDA Pro: ライブ仮想テーブルを介したSQLによるIDAのインターフェース。見た目に騙されないでください! :)
あらゆるAIエージェントにコンパイル済みバイナリを理解する能力を。
IDASQLは、Elias Bachaalanyによって作成された、IDA Proデータベース用のSQLインターフェースです。関数、クロスリファレンス、文字列、型、インポート、逆アセンブリ、逆コンパイルをカバーする30以上の仮想テーブルを公開します。コーディングエージェントから/idasqlスキルを使用して完全にヘッドレスで作業するか(エージェントがバックグラウンドでIDAを実行します)、IDAのUIを開いてコーディングエージェントと協力して一緒にリバースエンジニアリングすることができます。IDAPythonは不要。スクリプトも不要。SQLだけです。
なぜSQLなのか? SQLは、すべてのAIエージェントがすでに話せる普遍的なクエリ言語です。IDASQLはエージェント非依存です:Claude、ChatGPT、Copilot、Cursor、カスタムエージェント、あるいはエージェントなしでも。SQLクエリを発行できるツールなら何でもバイナリを分析できます。
IDASQLは、1つまたは複数のデータベース間で同時に分析、クロスリファレンス、アノテーションの転送をサポートします。できることは、あなたの想像力と使用するモデルの能力によってのみ制限されます。
IDA Proにはすでに、関数、文字列、クロスリファレンス、型などを記述する独自のデータベース形式があります。IDASQLはこれらの内部構造をライブなSQL仮想テーブルにマッピングします。別途エクスポートやインデックス作成のステップはありません -- クエリはIDAのデータベースに対して直接実行され、変更はライブで反映されます。
| モード | 開始方法 | 最適な用途 |
|---|---|---|
| スタンドアロンCLI | idasql -s binary.i64 -i | 直接SQL、スクリプト、パイプライン |
| IDAプラグイン | IDAのCLIドロップダウンからidasqlを選択 | GUI内でのSQL、ライブデータベース |
| スキルワークフロー | コーディングCLIで/idasql:connect | AI駆動の分析 -- エージェントが自律的にSQLクエリを発行 |
You / Agent --> Natural language or SQL
|
/idasql skills (LLM translates intent to SQL)
|
IDASQL --> IDA database(s)
|
Results --> LLM summarizes & reasons
$ idasql -s WerFaultTool.exe.i64 -q "SELECT * FROM funcs LIMIT 5"
Opening: WerFaultTool.exe.i64...
Database opened successfully.
+------+-------------------------------------------------+------+----------+-------+
| addr | name | size | end_addr | flags |
+------+-------------------------------------------------+------+----------+-------+
| 16 | WerFaultTool.AboutForm::.ctor | 13 | 29 | 4096 |
| 32 | WerFaultTool.AboutForm::Dispose | 30 | 62 | 4096 |
| 64 | WerFaultTool.AboutForm::InitializeComponent | 295 | 359 | 4096 |
| 400 | WerFaultTool.WerFaultGUI::.ctor | 936 | 1336 | 4096 |
| 1344 | WerFaultTool.WerFaultGUI::CreateDynamicControls | 231 | 1575 | 4096 |
+------+-------------------------------------------------+------+----------+-------+
5 row(s)
1つのコマンド。即座に結果。スクリプト不要。
インストール後、IDASQL CLI とプラグインを導入し、お気に入りのコーディングエージェントを起動してプロンプトでリバースエンジニアリングを開始できます。IDASQL は完全にヘッドレスで動作します -- エージェントが IDA Pro をオーケストレーションし、起動、解析、デコンパイル、注釈付け、保存を行います -- または IDA GUI 内でホストされ、エージェントとリアルタイムで共同作業できます。
お気に入りのコーディングエージェント(例: Claude Code)を開き、次のように入力します:
/idasql:connect Please open sample_malware.exe in the background and let's analyze it together.
エージェントはIDASQLをバックグラウンドでヘッドレスに起動します。この時点から、データベースと自然にチャットできます。例えば:
/idasql:annotations Fully annotate the function I'm looking at, also use the decompiler skill.
モデルは、関数を理解するための最適なアプローチを自律的に推論し、完全にリバースエンジニアリングして、注釈を付けます。
完了したら、エージェントに保存とシャットダウンを指示します:
/idasql:connect Please save all databases and shut down IDASQL.
2つ以上のデータベースを同時に操作できます。エージェントに次のようにプロンプトを入力します:
/idasql:connect In this folder, there are many *.exe files. Please use parallel agents to open IDASQL in the background and report how many functions each has.
次に、フォローアップします:
Tell me, how many strings all these databases have in common?
エージェントはすべてのデータベースと同時に連携します。データベース間で相互参照、比較、アノテーションの転送が可能です。
上記のすべては IDA GUI からも同様に機能します。開いている IDA セッションでエージェントを連携させるには:
IDA の idasql> プロンプトで、次を入力します:
.http start
IDAの出力:
IDASQL HTTP server: http://127.0.0.1:8174
コーディングエージェントで:
/idasql:connect Let's work with this database: http://127.0.0.1:8174
これで IDASQL と IDA UI が接続され、連携して動作するようになりました。
IDA 9.4 では、回答から IDA へ直接リンクできます。deep_links テーブルは、任意の
関数、アドレス、文字列、型を IDA 自身の Copy Link 形式の ida:// リンクに変換し、
さらに追加パラメータ idb_path(データベースのフルパス)を付加します。IDA はこれを
無視しますが、idasql のクリックハンドラはこれを使って正しいデータベースで IDA を
起動します。関数リンクはデコンパイラを開き(デコンパイラがない場合は逆アセンブリ)、
その他のリンクは逆アセンブリを開きます:
SELECT f.name, dl.uri
FROM funcs f
JOIN deep_links dl ON dl.resource = 'functions' AND dl.addr = f.addr AND dl.view = 'pseudocode'
ORDER BY f.size DESC LIMIT 5;
コーディングエージェントはこれらをクリック可能な名前としてレンダリングします。クリックでIDAを開くには:
idasql link register # handle ida:// links (a replaced handler, such as hcli's, is saved)
idasql link unregister # remove it and restore the saved handler
idasql link open -- "ida:///sample.exe.i64/functions?rva=0x1130&view=pseudocode"
idasql link list # running IDA 9.4 instances and their databases
idasql link open は、データベースを開いている実行中の IDA を操作します。リンクの正確な
idb_path が優先され、同名のデータベースを持つ実行中の IDA は、そのファイルが
このマシン上に存在しない場合にのみ使用されます。どの IDA もそれを開いていない場合、データベース(.i64 または
.idb のみ)に対して IDA を起動し、解析を待って(--timeout <seconds>、1 から 3600)、ナビゲートします。実行中の
インスタンスが応答しない場合、またはデータベースのアンパックされた .id0 が存在する場合(IDA がすでに
それを開いている可能性があります)は、2 つ目の IDA の起動を拒否します。--launch-anyway はそれを上書きします。
デコードされた各部分に制御文字を含むリンクは拒否されます。--config <file> は
動詞の前に置きます(idasql link --config <file> open ...)。IDA 内では、
SELECT ida_open_link(uri) が現在のセッションをナビゲートします。
クリックがハンドラーに到達するかどうかはターミナル次第です。Windows Terminal は、
safeUriSchemes 設定にリストされていない限り、カスタムスキームを開く前に確認を求めます
("safeUriSchemes": ["ida"])。
IDASQL スキルは、コーディングエージェントに自然言語を通じて IDA データベースを完全に制御する能力を与えます。
allthingsida/idasql-skills マーケットプレイスからインストールします。IDA Pro がインストールされ、そのディレクトリが PATH に含まれていること(Windows では ida.exe、macOS/Linux では ida)
idasql を Releases からダウンロードします。お使いの IDA バージョンに一致する ida92、ida93、または ida94 アーティファクトを選択してください:
*-plugin.zip は、Windows x86-64、Linux x86-64、macOS ARM64 バイナリを含む HCLI 互換のプラグインアーカイブです。*-cli-manual.zip は、ホストアーキテクチャ別に整理されたスタンドアロン CLI 実行ファイルを含みます。*-arm64-plugin-manual.zip は、IDA 9.3 および 9.4 で利用可能で、Linux ARM64 と、IDA 9.4 用の Windows ARM64 プラグインバイナリを手動インストール用に含みます。プラグインバイナリは SDK バージョン固有です。ida92、ida93、または ida94 ビルドを別の IDA バージョンで再利用しないでください。
セットアップを確認:idasql --version がコマンドラインから動作するはずです
Claude Code 内で、次を実行します:
/plugin marketplace add allthingsida/idasql-skills
次に、そのマーケットプレイスから idasql プラグインをインストールします。Codex やその他のインストール方法については、idasql-skills README を参照してください。