SuperAPI AI 工具集

connect

编程与开发

查看项目

更新于 10-16 07:42

技能介绍

用途

connect 是 allthingsida/idasql-skills 中的会话连接与初始化技能,目标是在深入逆向分析之前,完成与 IDA 数据库的连接、会话引导与技能路由。资料说明其使用场景包括:开始分析、路由到其他技能、设置 CLI/HTTP/MCP 连接。

主要能力

  1. 数据库连接:idasql 通过 -s <file> 接受已有的 IDA 数据库(.idb/.i64)或原始二进制(.exe/.dll/固件等)。指向原始二进制时会触发全新的 idalib 分析与字符串列表重建,无需手动执行 idat -A -B / ida -B 预处理。
  2. 多种运行模式:支持 -q 执行 SQL 查询或分号分隔脚本、-f 从文件执行 SQL、-i 交互式 REPL、--export 导出表到 SQL 文件、--http [port] 启动 HTTP REST 服务器(默认 8080)、--mcp [port] 启动 MCP 服务器(默认随机端口)。
  3. 写入与持久化:-w / --write 在退出时保存数据库以持久化改动。
  4. 自动启动固定:.pin http|mcp [bindinterface] [port] 可固定服务器,使 IDA 插件在数据库打开时自动启动;端口可选,省略时(存为 0)每次启动使用新的随机端口,固定端口则每次在同一稳定端口启动。.pin on|off 切换自动启动,.pin clear 移除。
  5. 服务端鉴权与绑定:--token 提供 HTTP/MCP 服务器模式所需鉴权令牌(若服务器需要),--bind 指定绑定地址(默认 127.0.0.1)。

使用方式

会话引导契约给出的启动流程为:

  1. 连接数据库(-s、-i 或 --http)。若旧版 .idb 升级并返回 status:"upgraded",需用 JSON 中的 reopen_with 路径重启后再执行定位。
  2. 运行定位查询 SELECT * FROM binary;。
  3. 校验关键实体:SELECT COUNT(*) AS funcs FROM funcs;、SELECT COUNT(*) AS xrefs FROM xrefs;、SELECT COUNT(*) AS strings FROM strings;。
  4. 在编写复杂 SQL 前内省目标表结构:PRAGMA table_xinfo(funcs);、PRAGMA table_xinfo(xrefs);。
  5. 依据路由矩阵转到领域技能。

示例命令:

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 表面。
  • 资料未提供该技能的收费、价格、平台支持范围等具体信息。