用途
connect 是 allthingsida/idasql-skills 中的会话连接与初始化技能,目标是在深入逆向分析之前,完成与 IDA 数据库的连接、会话引导与技能路由。资料说明其使用场景包括:开始分析、路由到其他技能、设置 CLI/HTTP/MCP 连接。
主要能力
- 数据库连接:idasql 通过
-s <file>接受已有的 IDA 数据库(.idb/.i64)或原始二进制(.exe/.dll/固件等)。指向原始二进制时会触发全新的 idalib 分析与字符串列表重建,无需手动执行idat -A -B/ida -B预处理。 - 多种运行模式:支持
-q执行 SQL 查询或分号分隔脚本、-f从文件执行 SQL、-i交互式 REPL、--export导出表到 SQL 文件、--http [port]启动 HTTP REST 服务器(默认 8080)、--mcp [port]启动 MCP 服务器(默认随机端口)。 - 写入与持久化:
-w/--write在退出时保存数据库以持久化改动。 - 自动启动固定:
.pin http|mcp [bindinterface] [port]可固定服务器,使 IDA 插件在数据库打开时自动启动;端口可选,省略时(存为 0)每次启动使用新的随机端口,固定端口则每次在同一稳定端口启动。.pin on|off切换自动启动,.pin clear移除。 - 服务端鉴权与绑定:
--token提供 HTTP/MCP 服务器模式所需鉴权令牌(若服务器需要),--bind指定绑定地址(默认 127.0.0.1)。
使用方式
会话引导契约给出的启动流程为:
- 连接数据库(
-s、-i或--http)。若旧版.idb升级并返回status:"upgraded",需用 JSON 中的reopen_with路径重启后再执行定位。 - 运行定位查询
SELECT * FROM binary;。 - 校验关键实体:
SELECT COUNT(*) AS funcs FROM funcs;、SELECT COUNT(*) AS xrefs FROM xrefs;、SELECT COUNT(*) AS strings FROM strings;。 - 在编写复杂 SQL 前内省目标表结构:
PRAGMA table_xinfo(funcs);、PRAGMA table_xinfo(xrefs);。 - 依据路由矩阵转到领域技能。
示例命令:
idasql -s test.i64 -q "SELECT name, size FROM funcs LIMIT 10"
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
idasql -s firmware.bin -q "SELECT * FROM binary"
idasql -s test.i64 --mcp 9000
binary 表是以 (key TEXT, value TEXT, type TEXT) 键值形式组织的数据库定位信息,摘要行最先输出。可用于确认当前连接绑定的二进制/实例,例如通过 filename、idb_path、md5、sha256 等键。示例:
SELECT * FROM binary;
SELECT key, value FROM binary WHERE key IN ('filename','idb_path','md5','sha256');
SELECT value FROM binary WHERE key = 'idasql_version';
适用场景
该技能适用于:对未知二进制进行定位与分诊、在会话建立后转交到 disassembly / xrefs / decompiler / types / annotations / debugger / storage / functions / data / ui-context / idapython / re-source 等技能,以及在自动化场景中固定 HTTP/MCP 服务器。技能路由矩阵将用户意图映射到主技能与典型首个查询,例如“这个二进制是做什么的”映射到 analysis 并执行 SELECT * FROM entries;。当提示跨越多个领域时,执行顺序为:在 connect 中定位、主领域技能、相邻技能补充。
限制与注意事项
- 必须提供
-s <file>;不要用idat预先构建 IDB。 - 旧版
.idb升级时若以退出码 3 结束并输出{"status":"upgraded","reopen_with":"..."},需用reopen_with路径重复同一操作;此时服务器模式会在绑定前退出。 - 希望编辑在退出时持久化(包括 HTTP/MCP 服务器关闭)需使用
--write。 - 所有
/query响应使用标准脚本信封结构;快速失败为默认行为,仅 REPL/插件.http服务器识别查询字符串中的?continue_on_error=1,CLI--http处理器忽略该参数,MCP 没有该参数。 - get_ui_context_json() 仅在插件 GUI 运行时可用,idalib/CLI 模式不可用;不可用时应说明 UI 上下文不可用并继续非 UI 的 SQL 工作流。
- dirtree_entries 为只读诊断用途;递归文件夹删除与原始恢复/链接操作有意不作为 SQL 表面。
- 资料未提供该技能的收费、价格、平台支持范围等具体信息。