.pyiジェネレーターGhidra .pyiジェネレーターは、Ghidra API全体に.pyi型スタブを生成します。これらのスタブファイルは、後でPycharmで使用して開発エクスペリエンスを向上させることができます。
ここでリリースされたスタブを使用するか、以下の指示に従って自分で生成することができます。
このリリースには、PEP 561スタブパッケージが含まれていghidra 。これは、 pip install ghidra-stubs*.whlで単純にインストールできます。任意の適合ツールは、タイプ分析のためにスタブパッケージを使用します。
スタブファイルをPycharmに手動で追加する場合は、インストール、アンインストール、およびインタープリターパスのアップグレードの指示に従ってください。
インストールしたら、通常どおりGhidraモジュールをインポートするだけで、Pycharmは残りを行います。
import ghidra Ghidra Builtinsのサポートを得るには、それらもインポートする必要があります。生成されたghidra_builtins.pyiスタブには、それらのタイプのヒントが存在します。実際のPythonモジュールではないため、実行時にインポートすると失敗します。しかし、 .pyiはあなたを助けるために必要なすべての情報をPycharmに与えます。
try :
from ghidra . ghidra_builtins import *
except :
pass実際のghidraモジュールが存在しないPython 3環境のGhidra_bridgeを使用している場合は、次のようなスニペットを使用できます。
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を使用して、Pycharmおよびその他のツールによってGhidraモジュールのタイプ情報を含むものとして認識されるPEP 561スタブパッケージをインストールできます。