.pyi Generator Генератор ghidra .pyi генерирует заглушки типа .pyi для всего API Ghidra. Эти файлы STUB могут позже использоваться в Pycharm для улучшения опыта разработки.
Вы можете либо использовать заглушки, выпущенные здесь, либо следовать инструкциям ниже, чтобы создать их самостоятельно.
Выпуск содержит пакет PEP 561 STUB, который можно просто установить с помощью pip install ghidra-stubs*.whl в среду, в которой доступен настоящий модуль ghidra . Любой соответствующий инструмент будет затем использовать пакет STUB для целей анализа типа.
Если вы хотите вручную добавить файлы STUB в Pycharm, следуйте инструкциям в установке, удалите пути интерпретатора.
После установки все, что вам нужно сделать, это импортировать модули Ghidra, как обычно, а Pycharm сделает все остальное.
import ghidra Чтобы получить поддержку Ghidra Buildins, вам также нужно импортировать их. Тип подсказки для тех, кто существует в сгенерированной ghidra_builtins.pyi . Поскольку это не настоящий модуль Python, импорт его во время выполнения пройдет. Но .pyi дает Pycharm всю информацию, необходимую для вас.
try :
from ghidra . ghidra_builtins import *
except :
pass Если вы используете ghidra_bridge из среды Python 3, где нет реального модуля 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 пакетов. В настоящее время они продаются в справочнике vendor , так как поддержка Python2.7 постепенно отбрасывается из экосистемы, что затрудняет установку и получение пакетов.
# 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 в менеджере скрипта Ghidragenerate_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 STUB, который распознается Pycharm и другими инструментами в качестве информации о типе для модуля Ghidra.