.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模塊的類型信息。