.pyi Le générateur Ghidra .pyi génère des stubs de type .pyi pour toute l'API Ghidra. Ces fichiers Stum peuvent ensuite être utilisés dans PyCharm pour améliorer l'expérience de développement.
Vous pouvez soit utiliser les talons publiés ici, soit suivre les instructions ci-dessous pour les générer vous-même.
La version contient le package PEP 561, qui peut simplement être installé avec pip install ghidra-stubs*.whl dans l'environnement dans lequel le module ghidra réel est disponible. Tout outil conformant utilisera ensuite le package de stub à des fins d'analyse de type.
Si vous souhaitez ajouter manuellement les fichiers Stub à PyCharm, suivez les instructions dans les chemins d'intervalle d'installation, de désinstallation et de mise à niveau.
Une fois installé, tout ce que vous avez à faire est d'importer les modules Ghidra comme d'habitude, et PyCharm fera le reste.
import ghidra Pour obtenir un support pour les Butins Ghidra, vous devez également les importer. Le type indique pour ceux qui existent dans le talon ghidra_builtins.pyi généré. Puisqu'il n'est pas un véritable module Python, l'importation de l'exécution échouera. Mais le .pyi donne à PyCharm toutes les informations dont elle a besoin pour vous aider.
try :
from ghidra . ghidra_builtins import *
except :
pass Si vous utilisez Ghidra_bridge à partir d'un environnement Python 3 où aucun module ghidra réel n'existe, vous pouvez utiliser un extrait comme celui qui suit:
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 est une valeur spéciale qui est toujours False au moment de l'exécution mais True pendant tout type de vérification ou d'achèvement de type.
Une fois terminé, il suffit de code et de profiter.

Pour extraire correctement tous les types de Ghidra, assurez-vous d'extraire la documentation de l'API.
Help -> Ghidra API Help Le script dépend à la fois des packages attr et typing . Ils sont désormais vendus dans le répertoire vendor car le support Python2.7 est progressivement supprimé de l'écosystème, ce qui rend difficile l'installation et la récupération des packages.
# 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
.pyiScript Directories dans le gestionnaire de script Ghidragenerate_ghidra_pyi.py (sera situé sous IDE Helpers ).pyi . $GHIDRA_ROOT /support/analyzeHeadless /tmp tmp -scriptPath $( pwd ) -preScript generate_ghidra_pyi.py ./ generate_ghidra_pyi.py génère un setup.py à l'intérieur du répertoire sélectionné.
Cela permet d'utiliser pip install pour installer un package PEP 561 Stume qui est reconnu par PyCharm et d'autres outils en contenant des informations de type pour le module Ghidra.