用途:ghidra-cli 是面向逆向工程任务的命令行工具,用于二进制分析、反编译、函数检查、交叉引用分析、模式发现以及二进制处理。
架构:Rust/clap 编写的 CLI 通过 TCP 连接运行在 Ghidra JVM 中的 GhidraCliBridge.java 脚本。没有单独的守护进程,Java 桥接本身即持久化服务器。每个项目一个桥接,以 ~/.local/share/ghidra-cli/bridge-{md5}.port 为键;导入、分析、查询命令在桥接未运行时自动启动;命令顺序处理,因为 Ghidra API 非线程安全。
主要能力:桥接生命周期(start/stop/restart/status/ping);项目管理;导入与分析;程序管理;函数操作(list、get、decompile、disasm、calls、xrefs、rename、create、delete);字符串、符号、内存、交叉引用、类型、注释操作;查找(string、bytes、function、calls、crypto、interesting);调用图(calls、callers、callees、export);比较(programs、functions);导出(imports、exports、functions、strings);补丁(bytes、nop、export);脚本执行(run、python、java);批处理;通用查询;统计与配置。
使用方式:全局标志包括 --json、--pretty、-v/-vv/-vvv、-q/--quiet。格式自动检测:TTY 用紧凑人类可读,管道用 json-compact,可覆盖。快速开始示例:ghidra import ./binary --project myproject;ghidra analyze --project myproject --program mybinary;随后查询复用运行中的桥接,如 ghidra function list --project myproject、ghidra decompile main --project myproject。查询命令通用选项有 --project、--program、--filter、--fields、-o、--limit、--offset、--sort、--count、--json。输出格式支持 compact、full、json、json-compact、json-stream/ndjson、csv/tsv、table、count、ids/minimal、tree、hex、asm、c。过滤表达式支持 >、<、>=、<=、=、!=、contains、in、and、or。可通过 ghidra set-default 设置默认 project 和 program。
适用场景:需要脚本化或自动化 Ghidra 逆向分析时,例如批量反编译、查找加密常量、分析调用图、导出函数与字符串、打补丁。命令既可人读也可供 agent 解析。
限制:桥接非线程安全,命令顺序执行;首次命令较慢(桥接启动加分析需数秒);.NET IL 字节码反编译会警告,建议先用 ilspy-cli 检测;文档注明若干已知行为,如 x-ref list 运行时忽略可选目标并列出全部 xref、comment type 实际回退为 EOL、patch 的 --count 目前未转发给桥接(NOP 为单地址行为)。部分功能细节资料未展开。