mcpField
G
ghidra-agent-cli

ghidra-agent-cli

github.com/bytelandtechnology安全579 次安装25 周前更新
代码仓库

关于 ghidra-agent-cli

为 Headless Ghidra 技能系列中的 Agent 说明辅助 CLI 的命令、参数和产物语义。它管理逆向分析工作区,并提供 Ghidra、Frida、进度及门禁操作。

主要功能

  1. 01初始化工作区并管理阶段状态
  2. 02维护 YAML 分析产物
  3. 03发现、分析及操作 Ghidra
  4. 04提供 Frida 设备与运行辅助命令
  5. 05检查门禁并记录执行信息

适用场景

  1. 01为目标二进制初始化分析工作区
  2. 02维护基线、运行时及元数据文件
  3. 03通过 CLI 执行 Ghidra 分析操作
  4. 04检查产物并查看门禁报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bytelandtechnology/headless-ghidra --skill ghidra-agent-cli

安装后在 Claude Code 中输入/ghidra-agent-cli确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
.releaserc.json
Cargo.lock
Cargo.toml
CHANGELOG.md
frida-scripts/
call-tree-trace.js
decomp-compare.js
dispatch-vtable-trace.js
frida-invoke.js
frida-run.js
frida-trace.js
fuzz-input-gen.js
hotpath-coverage.js
io-capture.js
io-compare.js
signature-analysis.js
ghidra-scripts/
AddressFormats.java
AddressStrings.java
AnalyzeVtables.java
ApplyRenames.java
ApplySignatures.java
AutoAnalyze.java
build-bundle.sh
DecompileFunction.java
ExportBaseline.java
ExportCallGraph.java
IdentifyLibraries.java
ImportBinary.java
ImportTypesAndSignatures.java
ghidra-scripts/lib/
snakeyaml-2.6.jar

详细介绍

ghidra-agent-cli

描述

ghidra-agent-cli 是 Headless Ghidra 技能系列随附的辅助工具。 它负责管理命令树、工作区布局、YAML 构件语义、输出封装格式,以及受支持的 Ghidra、Frida、进度和 gate 操作的运行时行为。

本文档介绍该辅助工具面向 Agent 的命令语义。它不 定义 P0–P4 工作流顺序、阶段路由或编排策略。这些内容由 headless-ghidra/SKILL.md 和各阶段技能定义。普通用户只需安装并使用该技能系列;在工作流期间,无需手动安装、构建或运行此 CLI。

前置条件

  • Node.js >= 18
  • 可通过 ghidra-agent-cli ghidra discover 找到本地 Ghidra 安装
  • 使用 frida * 命令时可选安装 Frida

可用性

此辅助工具随技能系列一同安装,并且必须与 headless-ghidra 和各阶段技能保持同级。如果无法使用 ghidra-agent-cli, 请让用户重新安装或刷新整个技能系列,而不要在目标工作区内单独安装 CLI 包。

由发布流程管理的辅助工具包版本:[email protected]。此标记 属于打包元数据;分析工作流期间不要让用户手动安装它。

调用

ghidra-agent-cli [GLOBAL FLAGS] <COMMAND> [COMMAND FLAGS]

输入

全局标志:

  • --format yaml|json|toml — 输出格式(默认:yaml)
  • --target <id> — 目标选择器
  • --workspace <path> — 工作区根路径
  • --config-dir <PATH> — 覆盖配置目录
  • --data-dir <PATH> — 覆盖数据目录
  • --state-dir <PATH> — 覆盖状态目录
  • --cache-dir <PATH> — 覆盖缓存目录
  • --log-dir <PATH> — 覆盖日志目录
  • --lock-timeout <SECS> — 获取锁的超时时间,单位为秒(默认:30)
  • --no-wait — 获取锁时不等待
  • --help — 显示帮助文本

大多数命令都需要 --target <id>,或通过 context use 设置活动上下文。

输出

命令会以所选格式输出结构化封装内容:

status: ok
message: "<summary>"
data: <structured payload>

错误

错误采用稳定的结构化格式:

{
  "code": "E_ERROR",
  "message": "description of what went wrong",
  "source": "main",
  "format": "json"
}

已知代码:

  • E_ERROR — 一般错误
  • E_GATE_FAILED — gate 检查失败
  • E_LOCK_TIMEOUT — 获取锁超时

命令组

分组用途
workspace初始化目标工作区并管理阶段状态
scope管理 scope.yaml
functions / callgraph / types / vtables / constants / strings / imports管理基线 YAML 元数据
third-party管理 third-party/identified.yaml、明确的无第三方审查以及原始源代码元数据
runtime管理 runtime/run-manifest.yaml 和 runtime/run-records/*.yaml
hotpath管理 runtime/hotpaths/call-chain.yaml
metadata管理 P3 元数据 YAML,例如 metadata/renames.yaml 和 metadata/signatures.yaml
substitute管理 substitution/functions/<fn_id>/ 下的 P4 替换记录
git-check在门禁要求时,验证制品 YAML 文件是否已准备好供审查
execution-log追加和检查执行记录
progress为旧版反编译进度 YAML 提供兼容性辅助功能
gate运行聚合门禁检查并检查门禁报告
ghidra发现 Ghidra、导入/分析、导出基线、应用更改、导入自定义头文件/签名、反编译、重建
frida提供设备、采集、比较、跟踪、运行和调用辅助功能
inspect只读二进制检查辅助功能
context活动上下文辅助功能
paths显示解析后的工作区/运行时路径
validate / help验证和帮助界面

工作区模型

ghidra-agent-cli 使用以下活动工作区布局:

targets/<target-id>/
└── ghidra-projects/

artifacts/<target-id>/
├── pipeline-state.yaml
├── scope.yaml
├── intake/
├── baseline/
│   ├── functions.yaml
│   ├── callgraph.yaml
│   ├── types.yaml
│   ├── vtables.yaml
│   ├── constants.yaml
│   ├── strings.yaml
│   └── imports.yaml
├── runtime/
│   ├── project/
│   ├── fixtures/
│   ├── run-manifest.yaml
│   ├── run-records/
│   └── hotpaths/call-chain.yaml
├── third-party/
│   ├── identified.yaml
│   ├── pristine/<library>@<version>/
│   └── compat/<library>@<version>/
├── metadata/
│   ├── renames.yaml
│   ├── signatures.yaml
│   ├── types.yaml
│   ├── constants.yaml
│   ├── strings.yaml
│   └── apply-records/
├── substitution/
│   ├── template/
│   ├── next-batch.yaml
│   └── functions/<fn_id>/
│       ├── capture.yaml
│       └── substitution.yaml
├── gates/
└── scripts/

workspace init 会创建基础工作区结构,并初始化 pipeline-state.yaml 和 scope.yaml。后续阶段会填充其余 工件。

工件语义

工件含义
pipeline-state.yaml当前目标、当前阶段、记录的二进制文件路径
scope.yaml明确的范围模式和入口列表
baseline/*.yaml从 Ghidra 导出或通过 CLI 命令整理的基线元数据
runtime/run-manifest.yamlP1 可复现运行清单和运行记录索引
runtime/run-records/*.yamlP1 具体的可执行文件或测试框架运行观察结果
runtime/hotpaths/call-chain.yaml基于 P1 Frida 派生的热路径调用链优先级来源
third-party/identified.yaml已识别的库、版本、证据、源路径、原始路径和函数分类;libraries: [] 表示已明确审查且无第三方依赖
third-party/pristine/<library>@<version>/未修改的第三方源代码快照,必须保持原始状态
third-party/compat/<library>@<version>/与原始源代码分离的兼容性修改
metadata/*.yamlP3 恢复的名称、签名、类型、常量和字符串,供通过 CLI 应用到 Ghidra 之前使用
metadata/apply-records/*.yamlP3 序列化元数据应用尝试的记录
substitution/next-batch.yamlP4 替换工作列表
substitution/functions/<fn_id>/*.yamlP4 函数夹具、捕获数据、替换记录、状态和后续数据
gates/*-report.yaml持久化的门禁检查报告

示例

# Initialize a target
ghidra-agent-cli workspace init --target libfoo --binary ./libfoo.so

# Set scope and inspect state
ghidra-agent-cli --target libfoo scope set --mode full --entries 0x1000,0x2000
ghidra-agent-cli --target libfoo workspace state show

# Export and inspect baseline YAML
ghidra-agent-cli --target libfoo ghidra import
ghidra-agent-cli --target libfoo ghidra auto-analyze
ghidra-agent-cli --target libfoo ghidra export-baseline
ghidra-agent-cli --target libfoo functions list

# Import custom headers and signatures into the current Ghidra program
ghidra-agent-cli --target libfoo ghidra import-types-and-signatures --header ./include/custom_types.h --header ./include/custom_api.h

# Runtime, metadata, substitution, and gate checks
ghidra-agent-cli --target libfoo runtime record --key entrypoint --value 0x401000
ghidra-agent-cli --target libfoo hotpath add --addr 0x401000 --reason runtime
ghidra-agent-cli --target libfoo metadata enrich-function --addr 0x401000 --name main --prototype 'int(void)'
ghidra-agent-cli --target libfoo substitute add --fn-id fn_001 --addr 0x401000 --replacement 'return 0;'
ghidra-agent-cli --target libfoo gate check --phase P1

# Frida helpers
ghidra-agent-cli frida device-list
ghidra-agent-cli frida trace --target ./bin/app --functions open,read

边界

  • 使用此技能回答:命令名称、标志、输出格式、工件路径、 文件语义和 CLI 行为。
  • 不要将此技能作为 P0–P4 阶段顺序、阶段归属或工作流决策的权威来源。 这些内容由 headless-ghidra 技能系列负责。

评论

支持 Markdown