
مكوّن إضافي مستقل عن نوع أداة التفكيك للتفاعل مع الذكاء الاصطناعي داخل أداة التفكيك لديك. يدعم GPT-4 وClaude والنماذج المحلية!
مساعد اللغة الذكي الاصطناعي لأدوات التفكيك (DAILA) هو واجهة موحّدة لأنظمة الذكاء الاصطناعي لاستخدامها في أدوات التفكيك. باستخدام DAILA، يمكنك الاستفادة من أنظمة ذكاء اصطناعي متنوعة، مثل نماذج اللغات الكبيرة المحلية والبعيدة، كل ذلك عبر واجهات البرمجة النصية والواجهات الرسومية نفسها على العديد من أدوات التفكيك. ظهر DAILA في المحاضرة الرئيسية في HITCON CMT 2023 وتمت دراسته في عمل NDSS 2026 "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering". إذا كنت تبحث عن مستودع الورقة البحثية، ستجده هنا.

انضم إلى ديسكوردنا أدناه لمزيد من المساعدة عبر الإنترنت (المستضاف على خادم BinSync):
يتفاعل DAILA مع أداة التفكيك بشكل تجريدي من خلال مكتبة DecLib. وهذا يتيح لـ DAILA دعم أدوات التفكيك التالية:
يدعم DAILA أي نموذج لغوي كبير مدعوم في LiteLLM، مثل:
يدعم DAILA أيضًا نماذج محلية من أنواع مختلفة، مثل VarBERT، وهو نموذج محلي لإعادة تسمية المتغيرات في مخرجات التفكيك نُشر في S&P 2024.
ثبّت الواجهة الخلفية لمكتبتنا عبر pip والمكوّن الإضافي لأداة التفكيك عبر المثبّت الخاص بنا:
pip3 install dailalib && daila --install
هذا هو الوضع الخفيف. إذا كنت تريد استخدام VarBERT، فيجب عليك تثبيت النسخة الكاملة:
pip3 install 'dailalib[full]' && daila --install
سيقوم هذا أيضًا بتنزيل نماذج VarBERT لك من خلال VarBERT API. إذا كنت تقوم بتثبيت DAILA على جهاز لن يكون لديه وصول إلى الإنترنت، مثل شبكة آمنة، يمكنك استخدام صورة Docker الخاصة بنا في قسم حاوية Docker.
تحتاج إلى القيام ببعض الخطوات الإضافية لجعل Ghidra يعمل. أولاً، يجب أن تكون في وضع PyGhidra. يمكنك القيام بذلك
بالانتقال إلى دليل تثبيت Ghidra وتشغيل ./support/pyghidraRun.
بعد ذلك، قم بتمكين المكوّن الإضافي DAILA:
Windows > Script Managerdaila وقم بتمكين السكربتيجب أن يكون python3 في مسارك لكي تعمل نسخة Ghidra. نحن حرفيًا نستدعيه من داخل Python 2.
قد تحتاج أيضًا إلى تمكين $USER_HOME/ghidra_scripts كمسار سكربتات صالح في Ghidra.
إذا فشل ما سبق، فستحتاج إلى التثبيت يدويًا.
للتثبيت اليدوي، قم أولاً بتشغيل pip3 install dailalib على المستودع، ثم انسخ ملف daila_plugin.py إلى دليل المكوّنات الإضافية لأداة التفكيك لديك.
صُمم DAILA ليُستخدم بطريقتين:
باستثناء Ghidra (انظر أدناه)، عند بدء تشغيل أداة التفكيك ستجد قائمة سياق جديدة يمكنك الوصول إليها عند النقر بزر الماوس الأيمن في أي مكان داخل دالة:

إذا كنت تستخدم Ghidra، فانتقل إلى Tools->DAILA->Start DAILA Backend لبدء تشغيل الخادم الخلفي.
بعد القيام بذلك، يمكنك استخدام قائمة السياق كما هو موضح أعلاه.
يمكنك استخدام DAILA في السكربتات الخاصة بك عن طريق استيراد حزمة dailalib.
إليك مثال باستخدام OpenAI API:
from dailalib import LiteLLMAIAPI
from declib.api import DecompilerInterface
deci = DecompilerInterface.discover()
ai_api = LiteLLMAIAPI(decompiler_interface=deci)
for function in deci.functions:
summary = ai_api.summarize_function(function)
إذا كنت تحاول تثبيت DAILA لتثبيت لمرة واحدة لن يستخدم الإنترنت بعد التثبيت، مثل شبكة آمنة، يمكنك استخدام حاوية Docker الخاصة بنا.
يمكنك إما بناء الحاوية بنفسك، وحفظ الصورة في ملف tarball، ثم تحميلها على الجهاز المستهدف، أو يمكنك استخدام صورتنا المجهزة مسبقًا.
يمكنك بناء الحاوية بنفسك بتشغيل docker build . -t daila في جذر هذا المستودع.
يمكنك أيضًا تنزيل صورتنا المجهزة مسبقًا بتشغيل docker pull mahaloz/daila:latest (الصورة مخصصة لـ x86_64 Linux).
تحتوي الحاوية على DAILA ونسخة من Ghidra.
الآن تحتاج إلى تمرير X11 إلى الحاوية حتى تتمكن من رؤية الواجهة الرسومية. للقيام بذلك، تحتاج إلى تشغيل الحاوية بالخيارات التالية:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
داخل الحاوية، يمكنك تشغيل Ghidra من /tools/ghidra_10.4_PUBLIC/ghidraRun.
الآن اتبع الخطوات الإضافية لـ Ghidra لتمكين المكوّن الإضافي DAILA وستكون جاهزًا!
يدعم DAILA واجهة برمجة تطبيقات LiteLLM، والتي تدعم بدورها خلفيات متنوعة مثل OpenAI.
لاستخدام واجهة برمجة تطبيقات LLM تجارية، يجب عليك توفير مفتاح API الخاص بك.
كمثال، لاستخدام OpenAI API، يجب أن يكون لديك مفتاح OpenAI API.
إذا لم تكن أداة التفكيك لديك قادرة على الوصول إلى متغير البيئة OPENAI_API_KEY، فيجب عليك استخدام خيار أداة التفكيك في DAILA لتعيين مفتاح API.
في Settings، يمكنك أيضًا إضافة/استخدام أي نقطة نهاية LLM مبنية على OpenAI، مثل استخدام Llama2.
حاليًا، يدعم DAILA الأوامر التالية:
VarBERT هو نموذج BERT محلي من الورقة البحثية المنشورة في S&P 2024 ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning". يختص VarBERT بإعادة تسمية المتغيرات (سواء المخزنة في المكدس أو السجلات أو الوسائط) في مخرجات التفكيك. لفهم كيفية استخدام VarBERT كمكتبة، يرجى الاطلاع على توثيق VarBERT API. استخدامه في DAILA ببساطة هو استخدام قائمة السياق في الواجهة الرسومية عند النقر على دالة.
يمكنك العثور على عرض توضيحي لـ VarBERT يعمل داخل DAILA أدناه:
IDA

Binja

Ghidra

angr management
