
Интеграция консоли IPython для IDA Pro
= IPyIDA
IPyIDA — это решение на чистом Python для добавления консоли IPython в IDA Pro. Используйте <Shift-.>, чтобы открыть окно со встроенной Qt-консолью. После этого вы сможете воспользоваться автодополнением IPython, встроенной справкой, полем ввода с моноширинным шрифтом, графиками и так далее.
Вы также можете подключиться к ядру за пределами IDA с помощью ipython console --existing.
image::ipyida-screenshot.png[IPyIDA screenshot,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 для открытия в браузере блокнота, подключённого к IPyIDA. При первом запуске команда устанавливает зависимости и запускает сервер Notebook, если он ещё не запущен. Дополнительные параметры можно узнать в справке по команде (набрав %open_notebook?).
== Настройка консоли IPython
По умолчанию в консоли нет доступных глобальных переменных. Если вы хотите, чтобы модуль был импортирован до открытия консоли, IPyIDA прочитает файл ipyidarc.py из пользовательского каталога IDA (idaapi.get_user_idadir()). Всё, что вы импортируете в этом файле, будет доступно в консоли IPython.
Это аналогично файлу idapythonrc.py.
=== Тёмная тема
При использовании тёмной темы в IDA Pro удобнее, чтобы в консоли IPython тоже была тёмная тема. Чтобы активировать встроенную в qtconsole тёмную тему, добавьте в ваш ipyidarc.py следующее:
== Интеграция с IDE
Одна из примечательных особенностей IPyIDA — возможность интеграции с IDE PyCharm. Это позволяет использовать такие функции, как пошаговое выполнение кода, подсветка синтаксиса, интеграция с Github CoPilot и т. д. Чтобы воспользоваться этой функцией, просто запустите IDA и откройте базу данных, создайте Jupyter Notebook в PyCharm, добавьте код и нажмите «Run». Всю остальную работу IPyIDA выполняет в фоновом режиме.
image::pycharm-screenshot.png[IPyIDA screenshot,width=100%]
== Предостережения
=== Внешняя консоль не отвечает, если окно IDA слишком долго находится в фоне
Эта проблема характерна для функции App Nap в OS X 10.9 и новее. При работе отключение App Nap для IDA Pro, похоже, решает проблему, но пока это хак, который будет расходовать больше заряда батареи на ноутбуке; стоит найти лучшее решение.
Вот как отключить App Nap для IDA Pro:
== Похожие проекты
@james91b также успешно интегрировал ядро IPython в IDA. Будучи пользователем IDA не на Windows, мне было нужно кроссплатформенное решение, и я реализовал его на чистом Python. Хотя некоторые идеи реализации взяты из того проекта, IPyIDA написан с нуля. Респект @james91b и всем контрибьюторам IDA_IPython. IDA_IPython доступен на Github: https://github.com/james91b/ida_ipython.