Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
flare-emu — Скриптуемый фреймворк для бинарной эмуляции, интегрирующий IDA Pro/Radare2 с движком Unicorn для автоматического анализа вредоносного ПО, дешифрования строк и исследования путей выполнения кода на архитектурах x86, ARM и ARM64. | Kitploit
Инструменты/GitHubGitHub/mandiant/flare-emu
Динамический анализ (песочница)Обратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubmandiant/flare-emu

flare-emu

Скриптуемый фреймворк для бинарной эмуляции, интегрирующий IDA Pro/Radare2 с движком Unicorn для автоматического анализа вредоносного ПО, дешифрования строк и исследования путей выполнения кода на архитектурах x86, ARM и ARM64.

Репозиторий
958143511 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

flare-emu

flare-emu объединяет поддерживаемый фреймворк двоичного анализа, такой как IDA Pro или Radare2, с эмуляционным фреймворком Unicorn, предоставляя пользователю простой и гибкий интерфейс для написания сценариев эмуляции. Он предназначен для выполнения всех рутинных задач по настройке гибкого и надежного эмулятора для поддерживаемых архитектур, чтобы вы могли сосредоточиться на решении задач анализа кода. В настоящее время flare-emu поддерживает архитектуры x86, x86_64, ARM и ARM64.

В настоящее время он предоставляет пять различных интерфейсов для удовлетворения ваших потребностей в эмуляции, а также множество связанных вспомогательных и служебных функций.

  1. emulateRange – Этот API используется для эмуляции диапазона инструкций или функции в заданном пользователем контексте. Он предоставляет опции для пользовательских хуков как для отдельных инструкций, так и для случаев, когда встречаются инструкции «call». Пользователь может решить, будет ли эмулятор пропускать вызовы функций или входить в них. Этот интерфейс предоставляет простой способ для пользователя задать значения для определенных регистров и аргументов стека. Если указан bytestring, он записывается в память эмулятора, а указатель записывается в регистр или переменную стека. После эмуляции пользователь может воспользоваться вспомогательными функциями flare-emu для чтения данных из эмулированной памяти или регистров, либо использовать возвращаемый объект эмуляции Unicorn для прямого изучения. Небольшая обёртка для emulateRange, названная emulateSelection, может использоваться для эмуляции диапазона инструкций, выделенных в данный момент в IDA Pro.

  2. iterate - Этот API используется для принудительной эмуляции по определённым ветвям внутри функции с целью достижения заданной цели. Пользователь может указать список целевых адресов или адрес функции, для которой список перекрёстных ссылок используется в качестве целей, а также обратный вызов, когда цель достигнута. Цели будут достигнуты независимо от условий во время эмуляции, которые могли бы привести к другим ветвям. Как и в API emulateRange, предоставляются опции для пользовательских хуков как для отдельных инструкций, так и для случаев, когда встречаются инструкции «call». Пример использования API iterate — это достижение чего-то подобного тому, что делает наш инструмент argtracker.

  3. iterateAllPaths - Этот API очень похож на iterate, за исключением того, что вместо указания одного или нескольких целевых адресов вы предоставляете целевую функцию, для которой он попытается найти все пути и эмулировать их. Это полезно, когда анализ кода требует достижения каждого базового блока функции.

  4. emulateBytes – Этот API предоставляет способ просто эмулировать фрагмент постороннего шелл-кода. Предоставленные байты не добавляются в IDB и просто эмулируются как есть. Это может быть полезно для подготовки среды эмуляции. Например, flare-emu сам использует этот API для манипулирования специальным регистром модели (MSR) для процессора ARM64, который не предоставляется Unicorn, чтобы включить инструкции с плавающей запятой (VFP) и доступ к регистрам. Объект эмуляции Unicorn возвращается для дальнейшего исследования пользователем.

  5. emulateFrom - Этот API полезен в случаях, когда границы функций нечётко определены, что часто бывает с обфусцированными бинарными файлами или шелл-кодом. Вы предоставляете начальный адрес, и он будет эмулировать, пока не останется ничего для эмуляции или вы не остановите эмуляцию в одном из своих хуков. В IDA Pro это можно вызвать с параметром strict, установленным в False, для включения динамического обнаружения кода; flare-emu заставит IDA Pro создавать инструкции по мере их обнаружения во время эмуляции.

Установка

Чтобы установить flare-emu для IDA Pro, просто поместите flare_emu.py, flare_emu_ida.py и flare_emu_hooks.py в каталог python IDA Pro и импортируйте его как модуль в свои скрипты IDAPython.

Чтобы установить flare-emu для Rizin, просто убедитесь, что flare_emu.py, flare_emu_rizin.py и flare_emu_hooks.py находятся в пути поиска Python для импорта модулей. При использовании Rizin в качестве компонента двоичного анализа для flare-emu требуется rzpipe.

Чтобы установить flare-emu для Radare2, просто убедитесь, что flare_emu.py, flare_emu_radare.py и flare_emu_hooks.py находятся в пути поиска Python для импорта модулей. При использовании Radare2 в качестве компонента двоичного анализа для flare-emu требуется r2pipe.

В любом случае, flare-emu зависит от Unicorn и его привязок к Python.

ВАЖНОЕ ПРИМЕЧАНИЕ
flare-emu был написан с использованием нового API IDA Pro 7x и несовместим с предыдущими версиями IDA Pro.

Использование

Хотя flare-emu можно использовать для решения множества различных задач анализа кода, одно из его наиболее распространенных применений — помощь в расшифровке строк в вредоносных бинарных файлах. FLOSS — отличный инструмент, который часто может сделать это автоматически, пытаясь идентифицировать функцию(и) расшифровки строк и используя эмуляцию для расшифровки строк, передаваемых в каждой перекрёстной ссылке на неё. Однако FLOSS не всегда может идентифицировать эти функции и правильно эмулировать их с помощью общих подходов. Иногда приходится приложить немного больше усилий, и здесь flare-emu может сэкономить вам много времени, как только вы освоитесь с ним. Давайте рассмотрим типичный сценарий, с которым сталкивается аналитик вредоносных программ при работе с зашифрованными строками.

Простой сценарий расшифровки строк с IDA Pro

Вы определили функцию, которая расшифровывает все строки в бинарном файле x86_64. Эта функция вызывается повсеместно и расшифровывает множество различных строк. В IDA Pro вы называете эту функцию decryptString. Вот ваш сценарий flare-emu для расшифровки всех этих строк, размещения комментариев с расшифрованными строками в каждом вызове функции, а также записи каждой расшифрованной строки и адреса, по которому она была расшифрована.``` from future import print_function import flare_emu

def decrypt(argv): myEH = flare_emu.EmuHelper() myEH.emulateRange(myEH.analysisHelper.getNameAddr("decryptString"), registers = {"arg1":argv[0], "arg2":argv[1], "arg3":argv[2], "arg4":argv[3]}) return myEH.getEmuString(argv[0])

def iterateCallback(eh, address, argv, userData): s = decrypt(argv) print("%s: %s" % (eh.hexString(address), s)) eh.analysisHelper.setComment(address, s, False)

if name == 'main':
eh = flare_emu.EmuHelper() eh.iterate(eh.analysisHelper.getNameAddr("decryptString"), iterateCallback)

В `__main__` мы начинаем с создания экземпляра класса `EmuHelper` из `flare-emu`. Это класс, который мы используем для выполнения всех действий с `flare-emu`. Затем мы используем API `iterate`, передавая ему адрес нашей функции `decryptString` и имя нашей функции обратного вызова, которую `EmuHelper` будет вызывать для каждой эмулированной перекрестной ссылки.
Скачать инструмент