
تكامل وحدة تحكم IPython مع IDA Pro
= IPyIDA
IPyIDA هو حل يعتمد على بايثون فقط لإضافة وحدة تحكم IPython إلى IDA Pro. استخدم <Shift-.> لفتح نافذة تحتوي على وحدة تحكم Qt مدمجة. يمكنك بعد ذلك الاستفادة من الإكمال التلقائي في IPython والمساعدة عبر الإنترنت وحقل الإدخال بخط أحادي المسافة والرسوم البيانية وما إلى ذلك.
يمكنك أيضًا الاتصال بالنواة خارج IDA باستخدام ipython console --existing.
image::ipyida-screenshot.png[لقطة شاشة IPyIDA,width=100%]
== التثبيت
يجب أن يكون IPyIDA متوافقًا مع IDA 6.6 والإصدارات الأحدث على Windows وOS X وLinux. وقد تم اختباره على IDA حتى الإصدار 9.2.
=== تثبيت سريع وسهل
يتم توفير برنامج نصي لتثبيت IPyIDA وتبعياته تلقائيًا من وحدة تحكم IDA. ما عليك سوى نسخ السطر التالي إلى وحدة تحكم IDA.
على macOS، لا يوفر Python3.framework ملف شهادة CA موثوقًا. يمكنك استخدام ملف النظام /etc/ssl/cert.pem.
سينفذ البرنامج النصي ما يلي:
pip إذا لم يكن مثبتًا بالفعلipyida من https://pypi.org/project/ipyida/[PyPi]ipyida_plugin_stub.py إلى دليل plugins الخاص بالمستخدميمكنك فحص البرنامج النصي link:install_from_ida.py[] إذا كنت ترغب في معرفة ما يفعله بالضبط.
==== الترقية
أعد تشغيل البرنامج النصي للتثبيت لتحديثه إلى أحدث إصدار وأعد تشغيل IDA.
=== تثبيته بالطريقة المعتادة في IDA
إذا كنت تفضل إدارة التبعيات والتحديثات بنفسك، يمكنك نسخ ipyida_plugin_stub.py ودليل ipyida داخل دليل plugins الخاص بـ IDA.
تتطلب هذه الطريقة إدارة التبعيات بنفسك. يتطلب IPyIDA حزمتي ipykernel وqtconsole، وحزمة qasync إذا كنت تستخدم إصدار ipykernel 5 أو أحدث.
== التكامل مع Jupyter Notebook
يتضمن IPyIDA أمرًا سحريًا، %open_notebook، لفتح متصفح مع دفتر ملاحظات (notebook) مرتبط بـ IPyIDA. يتولى الأمر تثبيت التبعيات عند تشغيله لأول مرة وبدء خادم Notebook ما لم يكن هناك خادم يعمل بالفعل. اطلع على تعليمات الأمر (بكتابة %open_notebook?) لمزيد من الخيارات.
== تخصيص وحدة تحكم IPython
افتراضيًا، لا تتوفر أي متغيرات عامة (globals) في وحدة التحكم. إذا كنت تريد استيراد وحدة قبل فتح وحدة التحكم، سيقرأ IPyIDA ملف ipyidarc.py من دليل مستخدم IDA (idaapi.get_user_idadir()). أي شيء تستورده في هذا الملف سيكون متاحًا في وحدة تحكم IPython.
هذا مشابه لملف idapythonrc.py.
=== الوضع الداكن
عند استخدام سمة داكنة في IDA Pro، يكون من الأنسب أيضًا استخدام سمة داكنة في وحدة تحكم IPython. لتفعيل السمة الداكنة المدمجة في qtconsole، أضف ما يلي في ملف ipyidarc.py الخاص بك:
== التكامل مع بيئات التطوير المتكاملة (IDE)
من أبرز ميزات iPyIDA القدرة على دمجه مع بيئة التطوير PyCharm IDE. يتيح ذلك ميزات مثل التنقل خلال الكود سطرًا بسطر (stepping)، وتمييز الصياغة (syntax highlighting)، والتكامل مع Github CoPilot، وغيرها. لاستخدام هذه الميزة، ما عليك سوى تشغيل IDA وفتح قاعدة بيانات، وإنشاء Jupyter Notebook في PyCharm، وإضافة بعض الكود، ثم النقر على تشغيل (run). يقوم IPyIDA بكل السحر في الخلفية.
image::pycharm-screenshot.png[لقطة شاشة IPyIDA,width=100%]
== تحذيرات
=== عدم استجابة وحدة التحكم الخارجية إذا بقيت نافذة IDA في الخلفية لفترة طويلة
هذه المشكلة خاصة بميزة App Nap في OS X 10.9 والإصدارات الأحدث. عند التشغيل، يبدو أن تعطيل App Nap لـ IDA Pro يصلح المشكلة، لكنه حل مؤقت (hack) في الوقت الحالي وسيستهلك المزيد من طاقة البطارية على الكمبيوتر المحمول، لذا يجب أن نجد حلًا أفضل.
إليك كيفية تعطيل App Nap لـ IDA Pro:
== أعمال مشابهة
قام @james91b أيضًا بدمج نواة IPython في IDA بنجاح. وبصفتي مستخدمًا لـ IDA على أنظمة غير Windows، كنت بحاجة إلى حل يعمل عبر المنصات (cross-platform) فاتخذت نهجًا يعتمد على بايثون فقط لتنفيذه. على الرغم من أن بعض أفكار التنفيذ مستمدة من ذلك المشروع، فقد تمت كتابة IPyIDA من الصفر. تحية تقدير لـ @james91b وجميع المساهمين في IDA_IPython. يتوفر IDA_IPython على Github على https://github.com/james91b/ida_ipython.