
Крошечный милый плагин-эмулятор для IDA на основе unicorn.
uEmu — это крошечный милый плагин-эмулятор для IDA на основе движка Unicorn.
Поддерживает следующие архитектуры "из коробки": x86, x64, ARM, ARM64, MIPS, MIPS64

MSR S3_x, X0 для ARM64)idapyswitchbrew install unicorn для установки бинарников Unicornpip install unicorn для установки привязок Python для UnicornFile / Script file... или ALT+F7 в IDA для загрузки uEmu.pyОпционально uEmu может быть загружен автоматически как плагин IDA. В этом случае поместите его в папку [IDA]/Plugins и измените USE_AS_SCRIPT на False внутри uEmu.py

ALT/OPTION для указания количества)Start начинает эмуляцию с курсора. Сначала необходимо указать начальный контекст CPU (см. Update CPU Context). После этого все сегменты из базы данных IDA будут отображены (mapped) в эмулятор (инициализированные данные также будут скопированы).
Выполняет код до достижения точки останова по коду или памяти, или до события, требующего действия пользователя.
Выполняет один шаг. Удерживайте ALT/OPTION для указания количества шагов.

Когда эмуляция активна, эту команду можно использовать для прерывания выполнения.
Сбрасывает экземпляр эмулятора и отменяет маппинг всех областей памяти.
Вы можете использовать точки останова IDA для указания мест, где эмуляция должна быть прервана. Это включает точки останова по коду и памяти. Обычно используются вместе с командой Run.
Когда эмулятору требуется доступ к памяти, которая еще не смаплена, плагин покажет следующий диалог.


Когда эмулятор сталкивается с неизвестной инструкцией, можно пропустить ее и восстановить контекст CPU вручную.

Просто панель для управления выполнением.

Текущий контекст CPU.

Каждый раз при остановке эмуляции измененные регистры будут подсвечены. Регистры можно отображать в 1, 2 или 3 столбца через контекстное меню.
Можно обновить контекст CPU через контекстное меню (см. ниже).
Текущий расширенный контекст CPU.

Каждый раз при остановке эмуляции измененные регистры будут подсвечены. Регистры можно отображать в 1, 2 или 3 столбца через контекстное меню.
Можно обновить контекст CPU через контекстное меню (см. ниже).
Используйте это представление для просмотра областей памяти по указанному адресу и размеру. Комментарий будет отображаться в заголовке для удобства.

Каждый раз при остановке эмуляции измененные блоки памяти будут подсвечены.

Значения регистров можно изменять по отдельности или все сразу с помощью JSON-файла через контекстное меню. Текущий контекст также можно сохранить в JSON-файл для последующего использования.



Помимо всех функций, перечисленных в контекстном меню, есть несколько новых команд.

Отображает все отображенные области. Используйте контекстное меню для отображения памяти для конкретной области или дампа в файл.

Эта команда пытается синхронизировать сегменты IDA с отображенной памятью, создавая новые отображения или объединяя с существующими, если это возможно. Это помогает добавлять новые сегменты IDA в эмулятор во время выполнения без перезапуска эмулятора.
Загрузить состояние uEmu из файла.
Сохранить состояние uEmu в файл. Обратите внимание, что сохраняются только регистры, определенные в плагине.

Также можно добавить новый функционал или построить свой проект на основе uEmu, используя систему расширений.
Описание с примером можно найти здесь