
IDA और VS Code के लिए एक एकीकरण जो दोनों को जोड़ता है ताकि IDAPython स्क्रिप्ट्स को आसानी से निष्पादित और डीबग किया जा सके।
IDACode आपके IDA वातावरण में Visual Studio Code को छोड़े बिना Python स्क्रिप्ट को निष्पादित और डीबग करना आसान बनाता है। VS Code एक्सटेंशन मार्केटप्लेस पर पाया जा सकता है।
IDACode अभी भी बहुत प्रारंभिक अवस्था में है और बग्स की उम्मीद की जानी चाहिए। कृपया यदि आपको कोई समस्या आती है तो एक नया इश्यू खोलें।
debugpy का उपयोग करता है, यह आउटपुट विंडो को स्वाभाविक रूप से VS Code के आउटपुट पैनल के साथ सिंक करता है।IDACode को Windows और macOS पर IDA 8.4/9.0 और Python 3.12 के साथ परीक्षण किया गया है (पुराने Python संस्करणों में डीबगिंग में समस्याएं हैं)।
IDA प्लगइन के लिए निर्भरताएँ सेटअप करने के लिए चलाएँ:
# सही Python संस्करण का उपयोग सुनिश्चित करें
# IDACode संस्करण 3.0.0 के अनुसार नवीनतम debugpy का समर्थन करता है, अपग्रेड करना सुनिश्चित करें!
python -m pip install --user debugpy tornado
या तो इस रिपॉजिटरी को क्लोन करें या यहाँ से रिलीज़ पैकेज डाउनलोड करें। ida.zip इस रिपॉजिटरी में ida फ़ोल्डर की सामग्री को दर्शाता है। सभी फ़ाइलों को IDA के प्लगइन निर्देशिका में कॉपी करें।
अगला कदम अपने वातावरण से मेल खाने के लिए सेटिंग्स कॉन्फ़िगर करना है (वैकल्पिक)। तदनुसार idacode_utils/settings.py संपादित करें:
HOST: यह होस्ट पता है। यह हमेशा 127.0.0.1 होता है जब तक आप इसे दूरस्थ स्थान से सुलभ नहीं बनाना चाहते। ध्यान रखें कि यह प्लगइन प्रमाणीकरण का उपयोग नहीं करता है।PORT: यह वह पोर्ट है जिस पर आप IDA को सुनना चाहते हैं। इसका उपयोग IDA और VS Code के बीच वेबसॉकेट संचार के लिए किया जाता है।DEBUG_PORT: यह वह पोर्ट है जिस पर आप आने वाले डीबग सत्रों के लिए सुनना चाहते हैं।LOGGING: यह निर्धारित करता है कि डीबगर को फ़ाइलों में लॉग करना चाहिए या नहीं। यह विशेष रूप से उपयोगी है जब आप IDACode के साथ समस्याओं का सामना कर रहे हों। यदि आपको कुछ मिलता है तो कृपया एक नया इश्यू सबमिट करें। फ़ाइलें हमेशा आपकी अस्थायी निर्देशिका में स्थित होती हैं (जैसे Windows: %TEMP%)। फ़ाइलों को debugpy.*.log कहा जाता है।अब आप प्लगइन्स मेनू में IDACode पर क्लिक करके प्लगइन प्रारंभ कर सकते हैं।
VS Code एक्सटेंशन मार्केटप्लेस पर उपलब्ध है। एक्सटेंशन को कॉन्फ़िगर करने के लिए कृपया एक्सटेंशन के README को देखें।
प्लगइन मेनू में IDACode पर क्लिक करें। आपको निम्नलिखित पाठ दिखाई देना चाहिए:
IDACode listening on 127.0.0.1:7065
संस्करण 0.2.0 के अनुसार IDACode "Execute on save" (सहेजने पर निष्पादित) का समर्थन करता है जो डिफ़ॉल्ट रूप से सक्षम है। VS Code वर्तमान दस्तावेज़ को सहेजते ही स्वचालित रूप से आपकी स्क्रिप्ट को IDA में निष्पादित करेगा (उदाहरण के लिए CTRL+S के साथ)। इस व्यवहार को सेटिंग्स में अक्षम किया जा सकता है। Ctrl-Shift-P का उपयोग करके VS Code एक्सटेंशन डेवलपमेंट कंसोल खोलें और नीचे कमांड्स की सूची देखने के लिए "idacode" दर्ज करें। VS Code की "Run" या "Debug" कार्यक्षमता का उपयोग न करें, क्योंकि इसके बजाय आपको IDA में "HTTP misformed" संदेश मिलेगा।
आपके पास 4 कमांड्स हैं:

एक बार जब आप एक फ़ोल्डर खोलते हैं जिसमें आप अपनी स्क्रिप्ट रखना चाहते हैं (जब VS Code आपसे पूछे तो आपको अनिवार्य रूप से फ़ोल्डर निर्दिष्ट करना होगा!) तो आप IDA से कनेक्ट करने के लिए तैयार हैं। आप Connect to IDA या Connect and attach a debugger to IDA निष्पादित करके ऐसा कर सकते हैं। कृपया ध्यान रखें कि डीबग सत्र तब तक स्थायी है जब तक आप IDA को पुनरारंभ नहीं करते। डीबगर शुरू होने के बाद आप कार्यक्षेत्र फ़ोल्डर नहीं बदल सकते।
सुनिश्चित करें कि कार्यक्षेत्र फ़ोल्डर वह फ़ोल्डर है जिसमें आपकी मुख्य स्क्रिप्ट स्थित हैं।
एक बार कनेक्ट होने पर आप Execute script in IDA चुन सकते हैं।
IDACode IDA से कनेक्ट करने के लिए VS Code के रिमोट डीबगर का उपयोग करता है। सभी VS Code सुविधाएँ समर्थित हैं। हालाँकि, आपको Python की अंतर्निहित कार्यक्षमता breakpoint का उपयोग करके स्क्रिप्ट का एंट्रीपॉइंट निर्दिष्ट करना होता है। यह निर्देश डीबगर को निष्पादन को रोकने के लिए कहता है, यदि कोई डीबगर मौजूद नहीं है तो यह फ़ंक्शन को अनदेखा कर देगा। IDACode dbg नामक एक सहायक पैकेज आयात करता है जो bp नामक breakpoint का एक ओवरलोड लागू करता है। यह फ़ंक्शन लॉगिंग और शर्तों का समर्थन करता है:
name = idc.get_segm_name(segment)
dbg.bp(name==".text", f"found {name} at {segment}")
कृपया यह भी ध्यान दें कि breakpoint() कॉल कभी भी फ़ाइल के अंत में नहीं होना चाहिए, यह हमेशा कोड की किसी भी अन्य पंक्ति से पहले होना चाहिए क्योंकि यह आपके कोड में अगले निर्देश पर रुकता है। यह भी ध्यान दें कि यदि आप dbg पैकेज का उपयोग करने का निर्णय लेते हैं तो आपको या तो सभी संदर्भों को हटाना होगा या इसे सामान्य IDA स्क्रिप्ट के रूप में निष्पादित करने से पहले वेरिएबल __idacode__ को शर्त के रूप में उपयोग करना होगा।
यह भी महत्वपूर्ण है कि डीबगर संलग्न करने से एक नया डीबगर इंस्टेंस बनेगा। अधिकांश मामलों में यह वह नहीं है जो आप चाहते हैं। यदि आप डीबगर से डिस्कनेक्ट करते हैं तो वापस कनेक्ट करने के लिए VS Code के रिमोट डीबगर का उपयोग करें।
