用途:这是 Headless Ghidra 第三方代码分析流程的第二阶段(P2),承接 P1,用于审阅基线与运行时产物,识别或排除被测目标中的第三方代码,并记录本地原始源码目录、版本、置信度与证据,同时为函数分类,供后续元数据补全使用。源码下载或获取不在 CLI 内完成,CLI 只记录 source_path、pristine_path、version、confidence 和 evidence。
输入:artifacts/<target-id>/baseline/ 下的 functions.yaml、callgraph.yaml、types.yaml、constants.yaml、vtables.yaml、strings.yaml、imports.yaml;runtime/run-manifest.yaml、runtime/hotpaths/call-chain.yaml;以及已存在的 third-party/identified.yaml。
输出:artifacts/<target-id>/third-party/identified.yaml;artifacts/<target-id>/third-party/pristine/<library>@<version>/;可选的本地适配改动 third-party/compat/<library>@<version>/。
主要命令:ghidra-agent-cli 的 functions list/show、imports list、constants list、strings list、vtables list、types list、callgraph list/callers/callees、third-party add/none/set-version/list/classify-function/vendor-pristine、execution-log append、gate check --phase P2。
退出期望:存在第三方代码时,identified.yaml 至少记录一个中等或更高置信度的库;未发现第三方代码时记录 libraries: [];每个登记的库都有本地 source_path 与 pristine 目录;pristine 源码保持未修改,本地适配编辑放在 compat/ 下;下一阶段要有足够的版本与函数分类证据来恢复名称、签名和类型。
限制:不要直接修改基线 YAML 导出;没有记录支撑来源就不要声称不受支持的证据;受支持的基线读取、第三方写入或执行日志不要绕过 ghidra-agent-cli;若 CLI 缺少某能力,不要自行创建或运行新的 Ghidra 脚本,应暂停并先询问用户。P2 门禁通过后进入 headless-ghidra-discovery。