Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
flare-emu — Marco de emulación binaria scriptable que integra IDA Pro/Radare2 con el motor Unicorn para el análisis automatizado de malware, descifrado de cadenas y exploración de rutas de código en arquitecturas x86, ARM y ARM64. | Kitploit
Herramientas/GitHubGitHub/mandiant/flare-emu
Análisis Dinámico (Sandboxing)Ingeniería InversaAnálisis de MalwareAnálisis de Binarios
GitHubmandiant/flare-emu

flare-emu

Marco de emulación binaria scriptable que integra IDA Pro/Radare2 con el motor Unicorn para el análisis automatizado de malware, descifrado de cadenas y exploración de rutas de código en arquitecturas x86, ARM y ARM64.

Ver Repositorio
95814351hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

flare-emu

flare-emu combina un marco de análisis binario compatible, como IDA Pro o Radare2, con el marco de emulación de Unicorn para proporcionar al usuario una interfaz fácil de usar y flexible para automatizar tareas de emulación. Está diseñado para manejar todo el mantenimiento de configurar un emulador flexible y robusto para las arquitecturas compatibles, de modo que puedas concentrarte en resolver tus problemas de análisis de código. Actualmente, flare-emu soporta las arquitecturas x86, x86_64, ARM y ARM64.

Actualmente ofrece cinco interfaces diferentes para cubrir tus necesidades de emulación, junto con una variedad de funciones auxiliares y de utilidad relacionadas.

  1. emulateRange – Esta API se utiliza para emular un rango de instrucciones, o una función, dentro de un contexto especificado por el usuario. Proporciona opciones para hooks definidos por el usuario tanto para instrucciones individuales como para cuando se encuentran instrucciones "call". El usuario puede decidir si el emulador saltará o entrará en las llamadas a funciones. Esta interfaz ofrece una manera fácil para que el usuario especifique valores para registros y argumentos de pila determinados. Si se especifica una cadena de bytes, se escribe en la memoria del emulador y el puntero se escribe en el registro o variable de pila. Después de la emulación, el usuario puede hacer uso de las funciones de utilidad de flare-emu para leer datos de la memoria o registros emulados, o usar el objeto de emulación de Unicorn que se devuelve para una inspección directa. Una pequeña función envolvente para emulateRange, llamada emulateSelection, se puede usar para emular el rango de instrucciones actualmente resaltado en IDA Pro.

  2. iterate - Esta API se utiliza para forzar la emulación a través de ramas específicas dentro de una función con el fin de alcanzar un objetivo determinado. El usuario puede especificar una lista de direcciones objetivo, o la dirección de una función desde la cual se usa una lista de referencias cruzadas a la función como objetivos, junto con una función de devolución de llamada para cuando se alcanza un objetivo. Los objetivos se alcanzarán, independientemente de las condiciones durante la emulación que puedan haber causado que se tomen diferentes ramas. Al igual que la API emulateRange, se proporcionan opciones para hooks definidos por el usuario tanto para instrucciones individuales como para cuando se encuentran instrucciones "call". Un ejemplo de uso de la API iterate es lograr algo similar a lo que hace nuestra herramienta argtracker.

  3. iterateAllPaths - Esta API es muy similar a iterate, excepto que en lugar de proporcionar una o varias direcciones objetivo, proporcionas una función objetivo para la que intentará encontrar y emular todos los caminos posibles. Esto es útil cuando realizas análisis de código que desea alcanzar todos los bloques básicos de una función.

  4. emulateBytes – Esta API proporciona una manera de simplemente emular un bloque de shellcode extraño. Los bytes proporcionados no se añaden al IDB y simplemente se emulan tal cual. Esto puede ser útil para preparar el entorno de emulación. Por ejemplo, el propio flare-emu usa esta API para manipular un Registro Específico de Modelo (MSR) para la CPU ARM64 que no está expuesto por Unicorn con el fin de habilitar las instrucciones de punto flotante vectorial (VFP) y el acceso a registros. El objeto de emulación de Unicorn se devuelve para una mayor inspección por parte del usuario.

  5. emulateFrom - Esta API es útil en casos donde los límites de las funciones no están claramente definidos, como suele ocurrir con binarios ofuscados o shellcode. Proporcionas una dirección de inicio, y emulará hasta que no quede nada por emular o detengas la emulación en uno de tus hooks. Con IDA Pro, se puede llamar con el parámetro strict establecido en False para habilitar el descubrimiento dinámico de código; flare-emu hará que IDA Pro cree instrucciones a medida que se encuentren durante la emulación.

Instalación

Para instalar flare-emu para IDA Pro, simplemente coloca flare_emu.py, flare_emu_ida.py y flare_emu_hooks.py en el directorio python de tu IDA Pro e impórtalo como módulo en tus scripts IDAPython.

Para instalar flare-emu para Rizin, simplemente asegúrate de que flare_emu.py, flare_emu_rizin.py y flare_emu_hooks.py estén en la ruta de búsqueda de Python para importar módulos. Al usar Rizin como componente de análisis binario para flare-emu, se requiere rzpipe.

Para instalar flare-emu para Radare2, simplemente asegúrate de que flare_emu.py, flare_emu_radare.py y flare_emu_hooks.py estén en la ruta de búsqueda de Python para importar módulos. Al usar Radare2 como componente de análisis binario para flare-emu, se requiere r2pipe.

En cualquier caso, flare-emu depende de Unicorn y sus enlaces de Python.

NOTA IMPORTANTE
flare-emu fue escrito usando la nueva API de IDA Pro 7x, no es compatible con versiones anteriores de IDA Pro.

Uso

Si bien flare-emu se puede usar para resolver muchos problemas diferentes de análisis de código, uno de sus usos más comunes es ayudar a descifrar cadenas en binarios de malware. FLOSS es una excelente herramienta que a menudo puede hacer esto automáticamente al intentar identificar la(s) función(es) de descifrado de cadenas y usar la emulación para descifrar las cadenas pasadas en cada referencia cruzada a ella. Sin embargo, no siempre es posible que FLOSS identifique estas funciones y las emule correctamente usando sus enfoques genéricos. A veces tienes que trabajar un poco más, y aquí es donde flare-emu puede ahorrarte mucho tiempo una vez que te sientas cómodo con él. Repasemos un escenario común que enfrenta un analista de malware al tratar con cadenas cifradas.

Escenario sencillo de descifrado de cadenas con IDA Pro

Has identificado la función para descifrar todas las cadenas en un binario x86_64. Esta función se llama en todas partes y descifra muchas cadenas diferentes. En IDA Pro, nombras esta función decryptString. Aquí está tu script flare-emu para descifrar todas estas cadenas y colocar comentarios con las cadenas descifradas en cada llamada de función, así como registrar cada cadena descifrada y la dirección en la que se descifra.``` 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)

En `__main__`, comenzamos creando una instancia de la clase `EmuHelper` de `flare-emu`. Esta es la clase que usamos para hacer todo con `flare-emu`. A continuación, utilizamos la API `iterate`, proporcionándole la dirección de nuestra función `decryptString` y el nombre de nuestra función de callback que `EmuHelper` llamará por cada referencia cruzada emulada.
Descargar herramienta