Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
idasql — Vibe 逆向工程与 IDA SQL:通过实时虚拟表为 IDA 提供 SQL 接口 | Kitploit
工具/GitHubGitHub/allthingsida/idasql
静态分析逆向工程调试器恶意软件分析二进制分析AI 辅助逆向固件分析
GitHuballthingsida/idasql

idasql

Vibe 逆向工程与 IDA SQL:通过实时虚拟表为 IDA 提供 SQL 接口

查看仓库
3632025天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

IDASQL

让任何 AI 智能体都能理解编译后的二进制文件。

IDASQL 是 IDA Pro 数据库的 SQL 接口,由 Elias Bachaalany 创建。它提供 30+ 个虚拟表,涵盖函数、交叉引用、字符串、类型、导入、反汇编和反编译。使用你的编码智能体中的 /idasql 技能即可完全无头工作——智能体在后台为你运行 IDA——或者打开 IDA 的界面,与你的编码智能体协作共同进行逆向工程。无需 IDAPython。无需脚本。只需 SQL。

为什么选择 SQL? SQL 是每个 AI 智能体都已经掌握的通用查询语言。IDASQL 与智能体无关:Claude、ChatGPT、Copilot、Cursor、自定义智能体,或者完全没有智能体。任何能够发出 SQL 查询的工具都可以分析二进制文件。

  • 无需索引。 IDA 已将所有内容编入索引。查询直接针对实时数据库即时运行。
  • 无需脚本。 30+ 个 SQL 表取代了数百行 IDAPython。
  • 无头、GUI 或两者兼用。 可完全无头运行、在 IDA 的界面内运行,或同时连接多个数据库。
  • 可读可写。 IDASQL 不仅仅是查询工具。它允许读取和写入 IDA 数据库最重要的方面:反编译注释、类型恢复、类型应用(结构和联合偏移)、检测类型转换,以及自动猜测并更新正确的函数原型。

IDASQL 支持同时分析、交叉引用以及在一个或多个数据库之间传输注释。你能做什么,仅受限于你的想象力和所用模型的能力。

工作原理

IDA Pro 已经拥有自己的数据库格式,用于描述函数、字符串、交叉引用、类型等。IDASQL 将这些内部结构映射到 实时 SQL 虚拟表。无需单独的导出或索引步骤——查询直接针对 IDA 的数据库执行,更改会实时反映。

模式启动方式适用场景
独立 CLIidasql -s binary.i64 -i直接 SQL、脚本、流水线
IDA 插件从 IDA 的 CLI 下拉菜单中选择 idasqlGUI 内使用 SQL,实时数据库
技能工作流在你的编码 CLI 中使用 /idasql:connectAI 驱动的分析——智能体自主发出 SQL 查询
You / Agent --> Natural language or SQL
root@kitploit:~
                    |
              /idasql skills (LLM translates intent to SQL)
                    |
                 IDASQL  -->  IDA database(s)
                    |
                 Results  -->  LLM summarizes & reasons
root@kitploit:~
<inline><p><b>本项目仅供教育和研究目的。请负责任地使用。</b></p></inline>```
$ 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)

一条命令。即时结果。无需编写脚本。

快速开始

在安装 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.

root@kitploit:~
该智能体在后台以无头模式启动 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.

root@kitploit:~
### 使用多个数据库

您可以同时使用两个或更多数据库。提示您的智能体:```
/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?

root@kitploit:~
该代理可同时处理所有数据库。您可以在它们之间进行交叉引用、比较和转移注释。

### 使用 IDA UI

以上所有操作在 IDA GUI 中同样有效。要将您的代理与打开的 IDA 会话配合使用:

1. 在 IDA 的 `idasql>` 提示符中,输入:   ```
   .http start
  1. IDA 输出: ``` IDASQL HTTP server: http://127.0.0.1:8174
    root@kitploit:~
  2. 在您的编码代理中: ``` /idasql:connect Let's work with this database: http://127.0.0.1:8174
    root@kitploit:~

现在 IDASQL 与你的 IDA 界面已经连接并协同工作。

安装

编码代理插件

IDASQL 技能让你的编码代理能够通过自然语言完全控制 IDA 数据库。

  • Claude Code -- 包含 15 项主题技能的完整插件,可从 allthingsida/idasql-skills 市场安装。
  • GitHub Copilot CLI -- 也通过同一插件支持 IDASQL 技能。
  • Codex (OpenAI) -- 通过相同的插件打包支持技能。有关 Codex 的安装步骤,请参阅 idasql-skills 仓库。

前提条件

  1. IDA Pro 已安装,其目录位于你的 PATH 中(Windows 上为 ida.exe,macOS/Linux 上为 ida)
  2. idasql 已从 Releases 下载,并放置在 IDA 二进制文件旁边
  3. 验证设置:idasql --version 应能在命令行中正常工作

安装(Claude Code)

在 Claude Code 中运行:```text /plugin marketplace add allthingsida/idasql-skills

root@kitploit:~
然后从该市场安装 `idasql` 插件。有关 Codex 及其他安装路径,请参阅 [idasql-skills README](https://github.com/allthingsida/idasql-skills#installation)。

#### 技能

| 技能 | 描述 |
|-------|-------------|
| `connect` | 连接到 IDA 数据库:CLI、HTTP 服务器、会话引导、技能路由、全局契约。 |
| `disassembly` | 查询 IDA 反汇编:函数、段、指令、块、操作数、图形。 |
| `data` | 查询 IDA 字符串、字节和二进制数据:搜索、重建、字节模式。 |
| `xrefs` | 分析 IDA 交叉引用:调用者、被调用者、导入项、数据引用、grep 搜索。 |
| `decompiler` | 反编译 IDA 函数:伪代码、ctree AST、局部变量、标签。 |
| `annotations` | 编辑 IDA 数据库:注释、重命名、类型、书签、枚举/结构体渲染。 |
| `types` | IDA 类型系统:创建/修改/应用结构体、联合体、枚举、typedef、parse_decls。 |
| `debugger` | IDA 调试器:断点、字节修补、条件、补丁清单。 |
| `storage` | 通过 netnode_kv 在 IDA 数据库中进行持久化键值存储。 |
| `idapython` | 通过 idasql 执行 IDAPython:代码片段、沙箱、输出捕获。 |
| `functions` | 完整的 idasql SQL 函数参考目录。 |
| `analysis` | 分析 IDA 二进制文件:分类、安全审计、加密/网络检测、多表查询。 |
| `resource` | 重建 IDA 二进制文件资源:递归注释、结构恢复、类型重建。 |
| `ui-context` | 捕获实时 IDA UI 上下文:屏幕、选中区域、控件焦点、地址锚点。 |

#### 示例提示词```
/idasql:analysis analyze this binary; tell me the most called functions.
/idasql:data find functions that reference "password" strings and rank by xrefs.
/idasql:xrefs show callers of CreateFileW and summarize error handling.
/idasql:data identify suspicious hardcoded URLs and the functions that reference them.

/idasql 技能可在你的编码 CLI 中驱动分析 -- 无需 IDAPython 脚本。

CLI 帮助``` $ idasql Error: Database path required (-s)

idasql v0.0.18 - SQL interface to IDA databases

Usage: idasql -s [-q ] [-f ] [-i] [--export ]

Options: -s IDA database (.idb/.i64) OR raw binary (.exe/.dll/firmware/etc.) — raw binaries trigger fresh idalib analysis and string-list rebuild — legacy 32-bit .idb files upgrade to .i64 and require an explicit reopen --token Auth token for HTTP/MCP server mode (if server requires it) -q Execute SQL query or semicolon-separated script -f Execute SQL from file -i Interactive REPL mode -w, --write Save database on exit (persist changes) --export Export tables to SQL file (local mode only) --export-tables=X Tables to export: * (all, default) or table1,table2,... --http [port] Start HTTP REST server (default: 8080, local mode only) --bind Bind address for HTTP/MCP server (default: 127.0.0.1) --mcp [port] Start MCP server (default: random port, use in -i mode) Or use .mcp start in interactive mode -h, --help Show this help --version Show version

Examples: idasql -s test.i64 -q "SELECT name, size FROM funcs LIMIT 10" idasql -s test.i64 -q "SELECT * FROM binary; SELECT COUNT(*) FROM funcs;" idasql -s test.i64 -f queries.sql idasql -s test.i64 -i idasql -s test.i64 --export dump.sql idasql -s test.i64 --http 8080 idasql -s sample.exe --http # raw PE: idalib auto-analyzes, then serves SQL (default port 8080) idasql -s firmware.bin -q "SELECT * FROM binary" idasql -s test.i64 --mcp 9000

Thank you for using IDA. Have a nice day!

root@kitploit:~
Legacy 32-bit `.idb` inputs are upgraded by idalib to a sibling `.i64`. When that
happens, idasql exits before serving SQL, returns exit code `3`, and prints one
JSON object to stdout with `status:"upgraded"` and `reopen_with`. Repeat the same
operation with `-s <reopen_with>`.

</details>

### 从源码构建

#### 先决条件

- CMake 3.20+
- C++20 编译器
- IDA SDK 9.0+(设置 `IDASDK` 环境变量)```bash
cmake -S . -B build -DIDASQL_WITH_MCP=ON -DIDASQL_BUILD_EXAMPLES=OFF
cmake --build build --config Release

有用的 CMake 开关:

下载工具
开关默认值说明
IDASQL_WITH_MCPON通过 fastmcpp 构建 MCP 服务器支持。如需更小/离线构建,或不需要 --mcp / .mcp 时,可禁用。
IDASQL_BUILD_CLION构建独立的 idasql 命令行工具。
IDASQL_BUILD_PLUGINON构建 IDA 插件。
IDASQL_BUILD_EXAMPLESON构建 examples/ 下的示例程序。

说明:

  • Hex-Rays 支持始终被编译进来并在运行时检测。若 Hex-Rays 不可用,基于反编译器的表/函数将不会被注册。
  • HTTP REST 支持始终被编译进来;可在 CLI 中使用 --http,或在 REPL/插件 CLI 中使用 .http start。
  • IDAPython SQL 执行已编译进来,但默认在运行时禁用。可通过 PRAGMA idasql.enable_idapython = 1; 按会话启用。
  • IDASQL_WITH_MCP=ON 会获取 fastmcpp;OFF 则移除 MCP 支持以及 --mcp / .mcp 命令。
  • XSQL_WITH_THINCLIENT 被强制为 ON,HTTPLIB_USE_OPENSSL_IF_AVAILABLE 被强制为 OFF,因为 IDASQL 使用本地明文 HTTP。

可用表

30+ 个虚拟表,涵盖函数、字符串、类型、交叉引用、反汇编、反编译等。

核心

表说明
funcs函数 - 名称、地址、大小、结束地址、标志(INSERT/UPDATE/DELETE)
segments段 - 名称、起始/结束地址、权限、类别(INSERT/UPDATE/DELETE)
names命名位置 - 地址、名称、标志(INSERT/UPDATE/DELETE)
entries入口点 - 导出/程序/TLS 回调(序号、地址、名称)
imports导入 - 模块、名称、地址、序号
xrefs交叉引用 - 从/到地址、类型、is_code
blocks基本块 - 起始/结束地址、func_addr、大小
fchunks函数分块 - 带属主的分割/尾部块
instructions反汇编 - 地址、助记符、操作数、itype、func_addr(UPDATE 操作数 format_spec / DELETE)
instruction_operands规范化指令操作数 - opnum、文本、类型、值;按 addr 和 func_addr 优化
heads所有头部项(代码 + 数据)- 优化的地址查找/范围导航

字符串与字节

表说明
strings字符串 - 地址、内容、长度、类型
bytes原始字节 - value/word/dword/qword 可写(UPDATE 打补丁,DELETE 还原)、original_value、is_patched(通过 WHERE is_patched = 1 快速枚举补丁)

反编译器

表说明
pseudocode通过 Hex-Rays 反编译的伪代码
ctreeHex-Rays ctree AST 节点
ctree_lvarsHex-Rays 反编译得到的局部变量
ctree_call_args每个调用点的 Hex-Rays 调用参数详情
ctree_labelsHex-Rays ctree 标签(goto 目标)

类型

表说明
types类型库 - 结构体、联合体、带成员的枚举(INSERT/UPDATE/DELETE)
types_members结构体/联合体成员详情(INSERT/UPDATE/DELETE)
types_enum_values枚举成员值(INSERT/UPDATE/DELETE)
types_func_args函数类型参数详情
local_types本地类型库条目

标注

表说明
comments注释 - 地址、常规注释与可重复注释(INSERT/UPDATE/DELETE)
bookmarks书签 - 槽位、地址、描述(INSERT/UPDATE/DELETE)
breakpoints断点 - 地址、类型、是否启用、条件(完整 CRUD)
hidden_ranges折叠/隐藏范围 - 起始/结束、描述、页眉、页脚

搜索

表说明
grep统一实体搜索表(pattern、name、kind、addr、ordinal、parent_name、full_name)

数据库信息

表说明
binary数据库摘要/概览 - 处理器、位数、地址范围、计数
db_info数据库元数据键值对
ida_infoIDA 分析信息键值对
problemsIDA 分析问题/警告
signaturesFLIRT 签名状态
fixups修复/重定位条目
mappings地址空间映射

存储

表说明
netnode_kv持久化键值存储(netnode)

分析

表说明
disasm_calls调用图 - 每个函数的调用者/被调用者对
disasm_loops循环检测 - 头块与回边

SQL 函数

函数说明
decompile(addr)反编译指定地址处的函数(返回伪代码)
disasm_at(addr)指定地址处的规范反汇编列表
get_ui_context_json()UI 上下文 JSON — 在 GUI 插件中实时生效;在 CLI/idalib 下为“不适用”桩实现

统一实体搜索

使用 grep 表对命名函数、标签、段、类型和成员进行可组合的 SQL 搜索。```sql -- Search anything starting with "Create" SELECT name, kind, printf('0x%X', addr) as addr FROM grep WHERE pattern = 'Create%' LIMIT 20;

-- Search anywhere in name (plain text performs a contains search) SELECT name, kind, full_name FROM grep WHERE pattern = 'File' AND kind IN ('function', 'import') LIMIT 20;

-- Find struct members SELECT name, parent_name, full_name FROM grep WHERE pattern = 'dw%' AND kind = 'member';

-- Pagination SELECT name, kind, full_name FROM grep WHERE pattern = 'Create%' ORDER BY kind, name LIMIT 20 OFFSET 20;

root@kitploit:~
## 集成

### HTTP REST API

用于简单集成的无状态 HTTP 服务器。无协议开销。```bash
idasql -s database.i64 --http 8080

输入内容为空,没有可翻译的文本。请提供 chunk 33 的实际 Markdown 内容。```bash curl http://localhost:8080/status curl -X POST http://localhost:8080/query -d "SELECT name FROM funcs LIMIT 5" curl -X POST http://localhost:8080/query -d "SELECT * FROM binary; SELECT COUNT(*) FROM funcs;"

root@kitploit:~
所有 `/query` 响应均使用标准脚本信封 — 单条语句 = 包含一个条目的数组:```
{
  "success": true,
  "statement_count": <N>,
  "results": [
    { "statement_index": 0, "success": true, "columns": [...], "rows": [...], "row_count": <N>, "elapsed_ms": <ms>, "error": null },
    ...
  ],
  "row_count_total": <N>,
  "elapsed_ms_total": <ms>,
  "first_error_index": null
}

默认情况下是快速失败(fail-fast);传入 continue_on_error=true(例如 ?continue_on_error=1)即可忽略之前的失败,运行每一条语句。results[i].error 是每条语句失败的权威信息;first_error_index 指向最早失败的索引,若没有失败则为 null。当切分器失败时(例如未闭合的引号),响应为 success:false、statement_count:0、results:[],并附带顶层 parse_error。

对于多个数据库,请分别运行独立的实例:```bash idasql -s malware.i64 --http 8080 idasql -s kernel.i64 --http 8082

root@kitploit:~
Endpoints: `/status`, `/help`, `/query`, `/shutdown`

#### 从 REPL 启动 HTTP 服务器

从 REPL 或 IDA 插件 CLI 中以交互方式启动 HTTP 服务器:```
idasql -s database.i64 -i
idasql> .http start
HTTP server started on port 8142
URL: http://127.0.0.1:8142
...
Press Ctrl+C to stop and return to REPL.

在 IDA 插件中(非阻塞):``` idasql> .http start HTTP server started on port 8142 idasql> .http stop HTTP server stopped

root@kitploit:~
服务器使用随机端口(8100-8199),以避免与 `--http` 冲突。

### 自动启动(固定)

`.pin` 在 IDB(netnode `$ idasql config`)中持久化存储服务器偏好,以便
**IDA 插件在打开该数据库时自动启动** HTTP 或 MCP 服务器——
非常适合多实例场景,每个数据库都能保持稳定、已知的端口。```
idasql> .pin set http 8080        # pin HTTP at 127.0.0.1:8080 (autostart on)
idasql> .pin set mcp 0.0.0.0 9500 # bind override + port (port optional; omit or 0 = fresh random port each launch)
idasql> .pin list                 # show pinned config
idasql> .pin off http             # disable autostart but keep host/port
idasql> .pin clear all            # remove all pins

固定后,重新打开数据库会自动启动服务器——你会在加载时于 IDA 输出窗口中看到此信息:``` IDASQL v0.0.18: Query engine initialized IDASQL CLI: Installed IDASQL: autostart -> IDASQL HTTP server: http://127.0.0.1:8099 Type '.http stop' to stop the server.

root@kitploit:~
`.pin`(或 `.pin list`)显示两个服务的当前配置:```
idasql> .pin
Autostart pins:
  http 127.0.0.1:8099  (autostart: on)
  mcp  (not set)
  • 加载时自动启动仅在 IDA 插件中生效。 .pin 命令本身 在 CLI 和插件中均可用(CLI 仅读取/写入 pin)。
  • .http start / .mcp start 在未显式指定端口时复用已固定的主机/端口。
  • 从 CLI 中,.pin 更改仅在以 -w/--write 启动时持久保存 (与任何其他 IDB 编辑一样)。

MCP 服务器

对于支持 MCP 的客户端(Model Context Protocol,一种 AI 工具集成标准):

--mcp 和 .mcp 在使用 -DIDASQL_WITH_MCP=ON 构建时可用,该选项默认开启。使用 -DIDASQL_WITH_MCP=OFF 构建可省略 MCP 支持。```bash

Standalone mode

idasql -s database.i64 --mcp idasql -s database.i64 --mcp 9500 # specific port

Or in interactive mode

idasql -s database.i64 -i .mcp start

root@kitploit:~
配置你的 MCP 客户端:```json
{
  "mcpServers": {
    "idasql": { "url": "http://127.0.0.1:<port>/sse" }
  }
}

工具:idasql_query(直接 SQL 查询或分号分隔的脚本)

xsql 工具家族

IDASQL 是一个工具家族的一员,该家族通过相同的 SQL 接口暴露不同的二进制分析和调试信息平台,所有工具都构建在共享的 libxsql 虚拟表框架之上。你在一个工具上学会的查询在很大程度上可以沿用到其他工具——例如,相同的 SELECT name, size FROM funcs ORDER BY size DESC LIMIT 10 在任何地方都能运行。

逆向工程平台

  • bnsql — 将 Binary Ninja 数据库以 SQL 形式呈现。
  • ghidrasql — 将 Ghidra 数据库以 SQL 形式呈现。

调试信息与编译器数据

  • pdbsql — 将 Windows PDB 符号文件以 SQL 形式呈现。
  • dwarfsql — 将 DWARF 调试信息以 SQL 形式呈现。
  • clangsql — 将 Clang AST 以 SQL 形式呈现。

核心

  • libxsql — 上述所有工具所基于的 C++ SQLite 虚拟表框架。

构建工具

  • libxsql - 仅头文件的 C++17 库,用于将 C++ 数据结构暴露为 SQLite 虚拟表。提供用于定义表的流畅构建器 API、约束下推以及 HTTP 瘦客户端支持。

  • fastmcpp - 可选的 MCP 服务器实现,在使用 -DIDASQL_WITH_MCP=ON 构建时使用。

许可证与使用条款

简而言之:只要你保留声明并遵守许可证条款,你就可以阅读、构建、评估、基准测试、打包和使用未经修改的 idasql,包括商业用途。你可以在许可证的贡献用途规则范围内分叉或修补它,以准备错误修复、优化、功能、测试或文档改进,以便回馈上游。

未经 Elias Bachaalany 事先书面许可,你不得维护偏离原版的私有分支、移植、重新命名、克隆、API 兼容替代品、竞争性实现,或将 idasql 用作 AI 输入来重建或改进衍生实现。在许可证定义的范围内,并非从 idasql 复制、实质性衍生或大量借鉴的独立实现不受禁止。

许可请求:请在 allthingsida/idasql/issues 打开 GitHub issue。

如果 idasql 对某个分发的项目有实质性影响,请保留人类来源:在 README/文档中以及适用时的“关于/致谢”UI 中显著标注 idasql 和 Elias Bachaalany。许可证包含一个示例/FAQ 部分,介绍常见的允许用途和需要许可的用途。第三方依赖(libxsql、IDA SDK 及其传递依赖)仍受其各自许可证的约束。

请参阅完整的 Human-Origin Source License v1.0。