
Интеграция для IDA и VS Code, которая соединяет их для упрощения выполнения и отладки скриптов IDAPython.
IDACode упрощает выполнение и отладку Python-скриптов в среде IDA, не покидая Visual Studio Code. Расширение для VS Code можно найти в маркетплейсе.
IDACode находится на очень ранней стадии, возможны ошибки. Если вы столкнулись с проблемами, пожалуйста, создайте новый issue.
debugpy для связи, он автоматически синхронизирует окно вывода с панелью вывода VS Code.IDACode протестирован на Windows и macOS с IDA 8.4/9.0 и Python 3.12 (более старые версии Python имеют проблемы с отладкой).
Чтобы установить зависимости для плагина IDA, выполните:
# убедитесь, что используете правильную версию Python
# IDACode поддерживает последнюю версию debugpy, начиная с версии 3.0.0, обязательно обновитесь!
python -m pip install --user debugpy tornado
Клонируйте этот репозиторий или скачайте пакет релиза здесь. Файл ida.zip соответствует содержимому папки ida в этом репозитории. Скопируйте все файлы в директорию плагинов IDA.
Следующий шаг — настройка параметров под ваше окружение (опционально). Отредактируйте idacode_utils/settings.py соответствующим образом:
HOST: Адрес хоста. Обычно это 127.0.0.1, если вы не хотите, чтобы он был доступен удалённо. Имейте в виду, что этот плагин не использует аутентификацию.PORT: Порт, который IDA будет прослушивать. Используется для WebSocket-связи между IDA и VS Code.DEBUG_PORT: Порт для входящих сессий отладки.LOGGING: Определяет, должен ли отладчик вести журнал в файлы. Особенно полезно, если у вас возникают проблемы с IDACode. Пожалуйста, создайте новый issue, если найдёте что-либо. Файлы всегда находятся в вашей временной директории (например, Windows: %TEMP%). Файлы называются debugpy.*.log.Теперь вы можете запустить плагин, выбрав IDACode в меню плагинов.
Расширение для VS Code доступно в маркетплейсе. Для настройки расширения обратитесь к README расширения.
Нажмите IDACode в меню плагинов. Вы должны увидеть следующее сообщение:
IDACode listening on 127.0.0.1:7065
Начиная с версии 0.2.0 IDACode поддерживает «Выполнять при сохранении» (включено по умолчанию). VS Code автоматически выполнит ваш скрипт в IDA, как только вы сохраните текущий документ (например, с помощью CTRL+S). Это поведение можно отключить в настройках. Откройте консоль разработки расширений VS Code с помощью Ctrl+Shift+P и введите «idacode», чтобы увидеть список команд ниже. Не используйте функционал «Запуск» или «Отладка» VS Code, иначе в IDA появится сообщение «HTTP misformed».
Доступно 4 команды:

Как только вы откроете папку, в которую хотите поместить свои скрипты (вы обязаны указать папку, когда VS Code попросит вас об этом!), вы готовы подключиться к IDA. Это можно сделать, выполнив Connect to IDA или Connect and attach a debugger to IDA. Имейте в виду, что сеанс отладки постоянен до перезапуска IDA. После запуска отладчика нельзя сменить рабочую папку.
Убедитесь, что рабочая папка — это папка, в которой находятся ваши основные скрипты.
После подключения вы сможете выбрать Execute script in IDA.
IDACode использует удалённый отладчик VS Code для подключения к IDA. Поддерживаются все возможности VS Code. Однако вам нужно указать точку входа скрипта, используя встроенную функцию Python: breakpoint. Эта инструкция сообщает отладчику приостановить выполнение; если отладчик отсутствует, она игнорируется. IDACode импортирует вспомогательный пакет dbg, который реализует перегрузку breakpoint — функцию bp. Эта функция поддерживает журналирование и условия:
name = idc.get_segm_name(segment)
dbg.bp(name==".text", f"found {name} at {segment}")
Обратите также внимание, что вызов breakpoint() никогда не должен находиться в конце файла; он всегда должен быть перед любой другой строкой кода, так как он прерывается на следующей инструкции в вашем коде. Также учтите, что если вы решите использовать пакет dbg, вы должны либо удалить все ссылки, либо использовать переменную __idacode__ в качестве условия перед выполнением скрипта в обычном режиме IDA.
Также важно, что подключение отладчика создаёт новый экземпляр отладчика. В большинстве случаев это не то, что вам нужно. Если вы отключаетесь от отладчика, используйте удалённый отладчик VS Code для повторного подключения.
