用途:把重复性逆向分析步骤固化为可复用插件,例如批量标注、解密循环、自定义格式解析、特殊协议字段标注;需要交互式 UI(菜单/快捷键/面板)或工程加载即自动执行的常驻功能;团队内多机统一分析环境。一次性任务或仅换语言重写已有逻辑时不宜做插件,用脚本即可。
主要能力:Ghidra 侧支持 Python 脚本(@category 头注释,存 GhidraScripts 目录,Script Manager 运行)与 Java 扩展(GhidraDev 新建 Ghidra Module Project 选 Extension,实现 Plugin 类覆写 init/dispose 并注册菜单动作,gradle buildExtension 产出 .zip,目标机 File > Install Extensions 安装)。IDA 侧为 idapython 插件,放入插件目录(Windows %APPDATA%\Hex-Rays\IDA Pro\plugins\ 或安装目录 plugins\;Linux/macOS ~/.idapro/plugins/),启动自动加载,用 idaapi.register_action 与 attach_action_to_menu 注册菜单,ida_kernwin.ask_str/ask_buttons 做对话框。
使用方式:先做场景识别,命中交互 UI、加载即执行、多机分发、外部服务集成四条之一即做插件;记录场景、工具链与维护责任人。Ghidra 扩展构建产物 .zip 内含 extension.properties 声明适用版本范围,装到范围外会被拒载。无头测试可用 analyzeHeadless ... -postScript 或 IDA 无头模式,但批处理无 UI 事件循环,交互参数应改从命令行或配置文件读取。旧脚本先跑一遍验证基线输出,再包成插件,上线前后输出须一致。
适用场景:自动扫描常量表、花指令清除批处理、PE/ELF 自定义格式解析等。
限制与坑:Ghidra 11.x 与 IDA 9.x 存在破坏性 API 变更,需锁版本并覆盖新旧版本测试;Ghidra 11.3+ 需 JDK 21,内置解释器为 Jython 2.7(Python 2 语法,不支持 f-string,无法 import pip 包);IDA 商业版对第三方插件做签名验证,未签名插件不加载,开发期可用 Freeware 或无头模式测试;插件是长期维护承诺,易变逻辑应外置配置;修改型插件须先在副本 .i64/.idb 或独立工程验证,避免改坏不可逆。具体签名申请流程与部分 API 细节资料未完整提供。