.pyi Generator Der Ghidra .pyi -Generator generiert .pyi -Typ Stubs für die gesamte Ghidra -API. Diese Stub -Dateien können später in Pycharm verwendet werden, um die Entwicklungserfahrung zu verbessern.
Sie können entweder die hier veröffentlichten Stubs verwenden oder die folgenden Anweisungen befolgen, um sie selbst zu generieren.
Die Version enthält PEP 561-Stubpaket, das einfach mit pip install ghidra-stubs*.whl in die Umgebung installiert werden kann, in der das echte ghidra Modul verfügbar ist. Jedes Konformanttool verwendet dann das Stubpaket für Typanalysezwecke.
Wenn Sie die Stub -Dateien manuell zu Pycharm hinzufügen möchten, befolgen Sie die Anweisungen in Installation, Deinstallation und Upgrade Interpreter -Pfade.
Nach der Installation müssen Sie nur die Ghidra -Module wie gewohnt importieren, und Pycharm wird den Rest erledigen.
import ghidra Um die Ghidra -Bauuntersuchungen zu unterstützen, müssen Sie sie auch importieren. Der Typ Hinweise für diejenigen, die in der generierten ghidra_builtins.pyi Stub existieren. Da es sich nicht um ein echtes Python -Modul handelt, wird es fehlschlagen, es zur Laufzeit zu importieren. Aber der .pyi gibt Pycharm alle Informationen, die es Ihnen benötigen, um Ihnen zu helfen.
try :
from ghidra . ghidra_builtins import *
except :
pass Wenn Sie Ghidra_Bridge aus einer Python 3 -Umgebung verwenden, in der kein echtes ghidra -Modul vorhanden ist, können Sie ein Snippet wie das folgende verwenden:
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 ist ein besonderer Wert, der zur Laufzeit immer False ist, True während jeder Art von Typprüfung oder -abschluss.
Einmal fertig, codieren und genießen.

Um alle Typen aus Ghidra richtig zu extrahieren, stellen Sie sicher, dass Sie die API -Dokumentation extrahieren.
Help -> Ghidra API Help Das Skript hängt sowohl vom attr als auch typing ab. Sie werden nun im Verzeichnis vendor übertragen, da die Unterstützung von Python2.7 nach und nach aus dem Ökosystem fallen gelassen wird, wodurch es schwierig ist, Pakete zu installieren und abzuholen.
# 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 -DateienScript Directories im Ghidra -Skriptmanager hinzugenerate_ghidra_pyi.py (befindet sich unter IDE Helpers ).pyi Dateien speichern möchten. $GHIDRA_ROOT /support/analyzeHeadless /tmp tmp -scriptPath $( pwd ) -preScript generate_ghidra_pyi.py ./ generate_ghidra_pyi.py generiert ein setup.py im ausgewählten Verzeichnis.
Auf diese Weise können pip install ein PEP 561 -Stubpaket installiert, das von Pycharm und anderen Tools als Typinformationen für das Ghidra -Modul enthält.