
IDA Pro के लिए IPython कंसोल एकीकरण
= IPyIDA
IPyIDA, IDA Pro में IPython कंसोल जोड़ने के लिए एक केवल-पायथन समाधान है। एम्बेडेड Qt कंसोल वाली विंडो खोलने के लिए <Shift-.> का उपयोग करें। इसके बाद आप IPython की ऑटोकम्पलीशन, ऑनलाइन सहायता, मोनोस्पेस्ड फ़ॉन्ट इनपुट फ़ील्ड, ग्राफ़ इत्यादि का लाभ उठा सकते हैं।
आप ipython console --existing का उपयोग करके IDA के बाहर से भी कर्नेल से कनेक्ट कर सकते हैं।
image::ipyida-screenshot.png[IPyIDA screenshot,width=100%]
== स्थापना
IPyIDA को Windows, OS X और Linux पर IDA 6.6 और उसके बाद के संस्करणों के साथ संगत होना चाहिए। इसका परीक्षण IDA 9.2 तक किया गया है।
=== त्वरित और आसान स्थापना
IPyIDA और उसकी निर्भरताओं को IDA कंसोल से खुद-ब-खुद स्थापित करने के लिए एक स्क्रिप्ट प्रदान की गई है। बस निम्न पंक्ति को IDA कंसोल में कॉपी करें।
macOS पर, Python3.framework एक विश्वसनीय CA फ़ाइल प्रदान नहीं करता है। आप सिस्टम-व्यापी फ़ाइल /etc/ssl/cert.pem का उपयोग कर सकते हैं।
स्क्रिप्ट निम्नलिखित कार्य करेगी:
pip पहले से स्थापित नहीं है तो उसे स्थापित करेंipyida पैकेज स्थापित करेंipyida_plugin_stub.py को उपयोगकर्ता की plugins निर्देशिका में कॉपी करेंयदि आप देखना चाहते हैं कि यह वास्तव में क्या करती है, तो आप link:install_from_ida.py[] स्क्रिप्ट की जाँच कर सकते हैं।
==== अपग्रेड करना
नवीनतम संस्करण में अपडेट करने के लिए इंस्टॉल स्क्रिप्ट को दोबारा चलाएँ और IDA को पुनः आरंभ करें।
=== इसे IDA शैली में स्थापित करें
यदि आप निर्भरताओं और अपडेट को स्वयं प्रबंधित करना पसंद करते हैं, तो आप ipyida_plugin_stub.py और ipyida निर्देशिका को IDA की plugins निर्देशिका के अंदर कॉपी कर सकते हैं।
इस विधि के लिए आवश्यक है कि आप निर्भरताओं को स्वयं प्रबंधित करें। IPyIDA को ipykernel और qtconsole पैकेज की आवश्यकता होती है, तथा ipykernel संस्करण 5 या उससे नया उपयोग करने पर qasync पैकेज की भी।
== Jupyter Notebook एकीकरण
IPyIDA में एक magic कमांड, %open_notebook, शामिल है, जो IPyIDA से जुड़े नोटबुक के साथ एक ब्राउज़र खोलता है। यह कमांड पहली बार चलने पर निर्भरताओं को स्थापित करने और Notebook सर्वर आरंभ करने का ध्यान रखता है, जब तक कि कोई सर्वर पहले से न चल रहा हो। अधिक विकल्पों के लिए कमांड की सहायता देखें (%open_notebook? टाइप करके)।
== IPython कंसोल को अनुकूलित करना
डिफ़ॉल्ट रूप से, कंसोल में कोई भी globals उपलब्ध नहीं होते। यदि आप चाहते हैं कि कंसोल खोले जाने से पहले मॉड्यूल आयात हो जाए, तो IPyIDA IDA उपयोगकर्ता निर्देशिका (idaapi.get_user_idadir()) से ipyidarc.py फ़ाइल पढ़ेगा। इस फ़ाइल में आप जो कुछ भी आयात करेंगे वह IPython कंसोल में उपलब्ध होगा।
यह idapythonrc.py फ़ाइल के समान है।
=== डार्क मोड
IDA Pro में डार्क थीम के साथ, IPython कंसोल में भी डार्क थीम रखना अधिक सुविधाजनक है। qtconsole में निर्मित डार्क थीम को सक्रिय करने के लिए, अपनी ipyidarc.py में निम्नलिखित जोड़ें:
== IDE एकीकरण
iPyIDA की उल्लेखनीय विशेषताओं में से एक है इसे PyCharm IDE के साथ एकीकृत करने की क्षमता। यह कोड में चरण-दर-चरण आगे बढ़ने, सिंटैक्स हाइलाइटिंग, Github CoPilot एकीकरण आदि जैसी सुविधाओं को सक्षम बनाता है। इस सुविधा का उपयोग करने के लिए, बस IDA लॉन्च करें और एक डेटाबेस खोलें, PyCharm में एक Jupyter Notebook बनाएँ, कुछ कोड जोड़ें, और run पर क्लिक करें। IPyIDA सारा जादू पृष्ठभूमि में करता है।
image::pycharm-screenshot.png[IPyIDA screenshot,width=100%]
== सावधानियाँ
=== यदि IDA की विंडो बहुत देर तक बैकग्राउंड में रहे तो बाहरी कंसोल प्रतिक्रिया नहीं देता
यह समस्या OS X 10.9 और उससे ऊपर के संस्करणों में OS X की App Nap सुविधा के कारण उत्पन्न होती है। चलाते समय IDA Pro के लिए App Nap को अक्षम करना समस्या को ठीक करता प्रतीत होता है, परंतु फिलहाल यह एक हैक है और लैपटॉप पर अधिक बैटरी खर्च करेगा; हमें एक बेहतर समाधान खोजना चाहिए।
IDA Pro के लिए App Nap को अक्षम करने का तरीका यहाँ दिया गया है:
== समान कार्य
@james91b ने भी IDA में एक IPython कर्नेल को सफलतापूर्वक एकीकृत किया। एक गैर-Windows IDA उपयोगकर्ता होने के नाते, मुझे क्रॉस-प्लेटफ़ॉर्म समाधान चाहिए था और इसे लागू करने के लिए मैंने केवल-Python दृष्टिकोण अपनाया। हालाँकि कार्यान्वयन के कुछ विचार उस प्रोजेक्ट से आए हैं, फिर भी IPyIDA को खरोंच से लिखा गया था। @james91b और सभी IDA_IPython योगदानकर्ताओं को सलाम। IDA_IPython Github पर https://github.com/james91b/ida_ipython पर उपलब्ध है।