我有一个要安装的插件Ghidra
。
当前安装插件的方法是转到file->Install Extension
项目窗口中的 ,然后在那里添加我的插件。但是,在我的场景中,我无法访问 GUI,我想Ghidra
为 Headless Analysis进行部署。
出于某种原因,仅仅将插件文件复制到<ghidra_home>\Ghidra\Extensions
并不能解决问题,而且看起来它只是部分安装了插件,只有 GUI 方式才能完成整个工作。
知道如何以编程方式为 Ghidra 安装插件吗?
我有一个要安装的插件Ghidra
。
当前安装插件的方法是转到file->Install Extension
项目窗口中的 ,然后在那里添加我的插件。但是,在我的场景中,我无法访问 GUI,我想Ghidra
为 Headless Analysis进行部署。
出于某种原因,仅仅将插件文件复制到<ghidra_home>\Ghidra\Extensions
并不能解决问题,而且看起来它只是部分安装了插件,只有 GUI 方式才能完成整个工作。
知道如何以编程方式为 Ghidra 安装插件吗?
按照官方文件解压扩展.zip
到<GhidraInstallDir>/Ghidra/Extensions
文件夹应该是足够的。
正如您在评论中指定的,这是关于Ghidra C++ 类和运行时类型信息分析器
的特定插件,它只有在通过"New extension plugins detected. Would you like to configure them?"
启动 Ghidra GUI的初始对话框后才能工作。
此对话框是该方法的一部分,ghidra.framework.project.tool.GhidraTool#checkForNewExtensions
实际安装过程发生ghidra.framework.project.tool.GhidraTool#addInstalledExtensions
。
问题是,无头加工过程中没有可用的工具,即state.tool
是null
,似乎这些方法不被预期在一具无头上下文中运行。我不太明白是什么让它在之后工作,但总的来说,我有理由相信这是特定插件的问题,而且它需要ServiceManager
为分析器提供服务(这应该在解压后的无头模式)。
所以这是这个特定插件的一个问题,它在一个已经存在的问题中有所暗示