.pyi发电机Ghidra .pyi发电机为整个Ghidra API生成.pyi型存根。这些存根文件稍后可以在Pycharm中用于增强开发体验。
您可以使用此处发布的存根,也可以按照下面的说明自己生成它们。
该版本包含PEP 561存根软件包,可以将其简单地安装在pip install ghidra-stubs*.whl中,以便在可用的真实ghidra模块的环境中。然后,任何一致的工具都将使用存根包进行类型分析目的。
如果要手动将存根文件添加到Pycharm中,请按照安装,卸载和升级解释器路径中的说明进行操作。
安装后,您需要做的就是照常导入Ghidra模块,而Pycharm将完成其余的工作。
import ghidra为了获得对Ghidra内置的支持,您也需要进口它们。这些类型提示存在于生成的ghidra_builtins.pyi存根中。由于它不是真正的Python模块,因此在运行时导入它将失败。但是.pyi为Pycharm提供了帮助您所需的所有信息。
try :
from ghidra . ghidra_builtins import *
except :
pass如果您正在使用python 3环境中使用Ghidra_bridge,则不存在真正的ghidra模块,您可以使用以下片段:
import typing
if typing . TYPE_CHECKING :
import ghidra
from ghidra . ghidra_builtins import *
else :
b = ghidra_bridge . GhidraBridge ( namespace = globals ())
# actual code follows here typing.TYPE_CHECKING是一个特殊的值,在运行时始终是False ,但在任何类型的检查或完成期间都True 。
完成后,只需代码并享受。

要正确从Ghidra提取所有类型,请确保提取API文档。
Help -> Ghidra API Help脚本取决于attr和typing软件包。现在,由于Python2.7的支持逐渐从vendor系统中删除,因此他们很难安装和获取软件包。
# Create Jython's site-pacakges directory.
jython_site_packages= ~ /.local/lib/jython2.7/site-packages
mkdir -p $jython_site_packages
# Create a PTH file to point Jython to our vendored site-packages
# Outside a virtualenv, use
echo " $( realpath ./vendor ) " > $jython_site_packages /python.pth
.pyi文件Script Directories中generate_ghidra_pyi.py (将位于IDE Helpers下).pyi文件的目录。 $GHIDRA_ROOT /support/analyzeHeadless /tmp tmp -scriptPath $( pwd ) -preScript generate_ghidra_pyi.py ./generate_ghidra_pyi.py在选择的目录内生成一个setup.py 。
这允许使用pip install安装PEP 561存根软件包,该软件包由Pycharm和其他工具识别为包含Ghidra模块的类型信息。