
अपने डिकंपाइलर में AI के साथ इंटरैक्ट करने के लिए एक डिकंपाइलर-स्वतंत्र प्लगइन। GPT-4, Claude, और लोकल मॉडल समर्थित हैं!
The Decompiler Artificially Intelligent Language Assistant (DAILA) डिकंपाइलरों में AI सिस्टम के उपयोग हेतु एक एकीकृत इंटरफ़ेस है। DAILA के साथ, आप विभिन्न AI सिस्टम, जैसे स्थानीय और दूरस्थ LLM, का उपयोग कई डिकंपाइलरों में एक ही स्क्रिप्टिंग और GUI इंटरफ़ेस के माध्यम से कर सकते हैं। DAILA को HITCON CMT 2023 की कीनोट वार्ता में प्रदर्शित किया गया था और NDSS 2026 के कार्य "Decompiling the Synergy: An Empirical Study of Human–LLM Teaming in Software Reverse Engineering" में अध्ययन किया गया था। यदि आप पेपर रिपॉजिटरी की तलाश में हैं, तो इसे यहाँ पाएँ।

अधिक ऑनलाइन सहायता के लिए नीचे हमारे Discord से जुड़ें (BinSync सर्वर पर होस्ट किया गया):
DAILA डिकंपाइलर के साथ अमूर्त रूप से DecLib लाइब्रेरी के माध्यम से इंटरैक्ट करता है। यह DAILA को निम्नलिखित डिकंपाइलरों का समर्थन करने की अनुमति देता है:
DAILA LiteLLM में समर्थित किसी भी LLM का समर्थन करता है, जैसे:
DAILA विभिन्न प्रकार के स्थानीय मॉडलों का भी समर्थन करता है, जैसे VarBERT, जो S&P 2024 में प्रकाशित डिकंपाइलेशन में वेरिएबल्स का नाम बदलने के लिए एक स्थानीय मॉडल है।
हमारे लाइब्रेरी बैकएंड को pip के माध्यम से और हमारे डिकंपाइलर प्लगइन को हमारे इंस्टॉलर के माध्यम से स्थापित करें:
pip3 install dailalib && daila --install
यह लाइट मोड है। यदि आप VarBERT का उपयोग करना चाहते हैं, तो आपको पूर्ण संस्करण स्थापित करना होगा:
pip3 install 'dailalib[full]' && daila --install
यह आपके लिए VarBERT API के माध्यम से VarBERT मॉडल भी डाउनलोड करेगा। यदि आप DAILA को ऐसी मशीन पर स्थापित कर रहे हैं जिसके पास इंटरनेट एक्सेस नहीं होगा, जैसे सुरक्षित नेटवर्क, तो आप Docker Container अनुभाग में हमारी Docker छवि का उपयोग कर सकते हैं।
Ghidra को काम करने के लिए आपको कुछ अतिरिक्त चरण करने होंगे। सबसे पहले, आपको PyGhidra मोड में चलना होगा। आप अपनी Ghidra स्थापना निर्देशिका में जाकर ./support/pyghidraRun चलाकर ऐसा कर सकते हैं।
इसके बाद, DAILA प्लगइन सक्षम करें:
Windows > Script Manager मेनू पर जाएँdaila खोजें और स्क्रिप्ट सक्षम करेंGhidra संस्करण के काम करने के लिए आपके पास python3 को अपने path में रखना आवश्यक है। हम वस्तुतः इसे Python 2 के अंदर से कॉल करते हैं।
आपको $USER_HOME/ghidra_scripts को Ghidra में एक मान्य स्क्रिप्ट पथ के रूप में सक्षम करने की भी आवश्यकता हो सकती है।
यदि उपरोक्त विफल हो जाता है, तो आपको मैन्युअल रूप से स्थापित करने की आवश्यकता होगी।
मैन्युअल रूप से स्थापित करने के लिए, पहले रिपॉजिटरी में pip3 install dailalib चलाएँ, फिर daila_plugin.py फ़ाइल को अपने डिकंपाइलर की प्लगइन निर्देशिका में कॉपी करें।
DAILA को दो तरीकों से उपयोग करने के लिए डिज़ाइन किया गया है:
Ghidra के अपवाद के साथ (नीचे देखें), जब आप अपना डिकंपाइलर प्रारंभ करते हैं तो आपके पास एक नया कॉन्टेक्स्ट मेनू होगा, जिसे आप किसी फ़ंक्शन में कहीं भी राइट-क्लिक करने पर एक्सेस कर सकते हैं:
यदि आप Ghidra का उपयोग कर रहे हैं, तो बैकएंड सर्वर प्रारंभ करने के लिए Tools->DAILA->Start DAILA Backend पर जाएँ।
ऐसा करने के बाद, आप ऊपर दिखाए गए कॉन्टेक्स्ट मेनू का उपयोग कर सकते हैं।
आप dailalib पैकेज को आयात करके अपनी स्क्रिप्ट में DAILA का उपयोग कर सकते हैं।
यहाँ 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 की एक प्रति होती है।
अब आपको GUI देखने के लिए X11 को कंटेनर में अग्रेषित करना होगा। ऐसा करने के लिए, आपको कंटेनर को निम्नलिखित फ्लैग के साथ चलाना होगा:
docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix mahaloz/daila:latest
कंटेनर में, आप /tools/ghidra_10.4_PUBLIC/ghidraRun से Ghidra लॉन्च कर सकते हैं।
अब DAILA प्लगइन सक्षम करने के लिए Ghidra अतिरिक्त चरण का पालन करें और आपका काम हो गया!
DAILA LiteLLM API का समर्थन करता है, जो बदले में OpenAI जैसे विभिन्न बैकएंड का समर्थन करता है।
वाणिज्यिक LLM API का उपयोग करने के लिए, आपको अपनी स्वयं की API कुंजी प्रदान करनी होगी।
उदाहरण के रूप में, OpenAI API का उपयोग करने के लिए, आपके पास OpenAI API कुंजी होनी चाहिए।
यदि आपके डिकंपाइलर के पास OPENAI_API_KEY पर्यावरण चर तक पहुंच नहीं है, तो आपको API कुंजी सेट करने के लिए DAILA के डिकंपाइलर विकल्प का उपयोग करना होगा।
Settings में, आप किसी भी OpenAI-आधारित LLM एंडपॉइंट को जोड़/उपयोग कर सकते हैं, जैसे Llama2 का उपयोग करना।
वर्तमान में, DAILA निम्नलिखित प्रॉम्प्ट का समर्थन करता है:
VarBERT S&P 2024 पेपर ""Len or index or count, anything but v1": Predicting Variable Names in Decompilation Output with Transfer Learning" से एक स्थानीय BERT मॉडल है। VarBERT डिकंपाइलेशन में वेरिएबल्स (स्टैक, रजिस्टर और आर्गुमेंट्स दोनों) का नाम बदलने के लिए है। VarBERT को लाइब्रेरी के रूप में उपयोग करने के तरीके को समझने के लिए, कृपया VarBERT API दस्तावेज़ देखें। DAILA में इसका उपयोग करना किसी फ़ंक्शन पर क्लिक करते समय GUI कॉन्टेक्स्ट-मेनू का उपयोग करने जितना सरल है।
आप नीचे DAILA के अंदर चल रहे VarBERT का डेमो पा सकते हैं:
IDA

Binja

Ghidra

angr management
