deep-links 是一个与 IDA 反汇编与逆向分析工作流配合使用的技能,目标是把 IDA 分析答案中提到的函数、地址、字符串、类型、导入等目标转换为可点击的 ida:// 深链接,让用户可以直接从回答跳转到 IDA 中的对应位置。
用途与定位 decp-links 服务于“答案即入口”的交互:当回答中列出函数、地址、字符串或类型时,读者点击名称即可在 IDA 中打开相应资源。它强调链接应指向回答真正讨论的对象,而不是为大型转储的每一行都添加链接。
主要能力
- 生成受校验的深链接:链接只能通过 SQL 从 deep_links 表生成,可单独查询或与其它表 JOIN。禁止手工拼接 ida:// 字符串,因为该表会校验目标并输出与 IDA 自身一致的格式。
- 覆盖多种资源类型:resource 支持 functions、addresses、strings、segments、names、imports、exports、types、bookmarks。地址可通过 addr 或 rva 指定,另一项依据 image_base 计算。
- 视图控制:view 可取 disasm、graph、pseudocode、hexdump 或列表视图。函数默认 pseudocode(无反编译器时回退 disasm),其它地址默认 disasm,类型默认 types。仅在用户明确要求时才打开列表窗口(functions、strings、imports)。
- 链接格式与呈现:在正文、列表或表格单元格中写成 label,标签必须是同一行的精确符号,不得转述或使用“点击这里”;标签内的 [、]、| 需用反斜杠转义;链接不得放入代码块或反引号内;地址以纯文本形式保留在旁边(如 0x401130)。
- 按需跳转:仅当用户要求“打开”“跳转”“在 IDA 中显示”时执行导航。在 IDA 插件中可用 SELECT ida_open_link(...),从 shell 可用 idasql link open -- '<uri>'。若无法代为执行,应向用户提供填好 uri 的完整命令。
- 歧义消解:当两个数据库可能共享同一文件名时,应附上 binary 表中的 sha256 或 idb_path 以指明是哪一个。
使用方式 单条链接:在 WHERE 子句中同时给出 resource 与目标,例如 resource='functions'、addr=0x401130、view='pseudocode',查询 uri。 多条链接:将目标表与 deep_links 按 resource 和 addr JOIN,使每一行携带自己的地址。 同一函数的多个视图:以视图列表为外层 CROSS JOIN deep_links,按视图逐行生成。 按名称查类型:将 types 表与 deep_links 按 resource='types' 和 name JOIN。 字符串、导入、名称、段、书签及给定地址列表等更多写法见技能附带的 references/recipes.md。 不接受无约束的 SELECT * FROM deep_links,必须给出 resource 及其目标;IN (...) 列表不能直接传入该表,应改为与列表 JOIN。
导航与运行条件 在 IDA 插件中,导航开关 enable_deep_link_navigation 默认开启;在 idasql CLI 下默认关闭,需执行 UPDATE runtime_settings SET value='1' WHERE key='enable_deep_link_navigation' 开启,之后 CLI 会驱动已打开该数据库的 IDA 9.4 实例。从 shell 使用 idasql link open -- 'ida:///...' 时需为 URI 加引号,因为 & 在 shell 中分隔命令;cmd.exe 中应使用双引号。若没有 IDA 打开该数据库,link open 会启动 IDA、等待分析完成后再导航。idasql link list 可列出正在运行的 IDA 9.4 实例及其数据库。
限制与失败处理 深链接依赖 IDA 9.4;若 pragma_table_list 中没有 deep_links,说明该 idasql 构建不支持深链接,此时不应生成任何链接,并应说明需要 IDA 9.4。目标地址不在函数内时 valid=0 并给出原因(uri 为 NULL),此时可改用 resource='addresses'。view 与资源不兼容时,应使用该资源的默认或允许视图。导航失败可能源于 CLI 开关未开、没有运行的 IDA 实例、多个实例打开同名数据库(可用 --pid 或关闭其中一个)、IDA 忙或无响应(可重试、指定 --pid 或 --launch-anyway)、数据库的 .id0 已存在、链接指向非 .i64/.idb 文件、链接含控制字符或 Unicode 方向控制符、IDA 以提权或其它用户身份运行等。点击无反应通常是因为系统未注册该协议处理器,相关配置见 references/handler-setup.md。
适用场景 适合在 IDA 逆向分析过程中,由分析助手输出结论并希望读者直接跳转到函数、地址、字符串、类型或导入等目标的场景;也适合在表格或清单中成组呈现与某个问题相关的若干符号。它不适用于没有 IDA 9.4 或 idasql 不支持深链接的环境,也不应被用来为大量无关条目批量添加链接。其余细节(如 URI 语法、处理器注册、输出契约与 UI 上下文)可分别参考技能附带的 uri-grammar.md、handler-setup.md、connect 与 ui-context 文档。