.pyi مولد .pyi مولد Ghidra .pyi . يمكن استخدام ملفات كعب هذه في وقت لاحق في Pycharm لتعزيز تجربة التطوير.
يمكنك إما استخدام Stubs Subs هنا ، أو اتباع الإرشادات أدناه لإنشاءها بنفسك.
يحتوي الإصدار على حزمة PEP 561 Stub ، والتي يمكن ببساطة تثبيتها مع pip install ghidra-stubs*.whl في البيئة التي تتوفر فيها وحدة ghidra الحقيقية. سيستخدم أي أداة مطابقة بعد ذلك حزمة الكعب لأغراض تحليل النوع.
إذا كنت ترغب في إضافة ملفات كعب الكعب يدويًا إلى Pycharm ، اتبع الإرشادات الواردة في التثبيت وإلغاء التثبيت وترقية مسارات مترجم المترجم.
بمجرد التثبيت ، كل ما عليك فعله هو استيراد وحدات Ghidra كالمعتاد ، وسوف يقوم Pycharm بالباقي.
import ghidra للحصول على دعم لـ Ghidra Buildins ، تحتاج إلى استيرادها أيضًا. نوع تلميحات لتلك الموجودة في ghidra_builtins.pyi التي تم إنشاؤها. نظرًا لأنها ليست وحدة بيثون حقيقية ، فإن استيرادها في وقت التشغيل سيفشل. لكن .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 التي يتم التعرف عليها بواسطة PyCharm وغيرها من الأدوات التي تحتوي على معلومات النوع لوحدة Ghidra.