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
Herramientas/GitHubGitHub/mrphrazer/obfuscation_analysis
Análisis EstáticoAnálisis de CódigoIngeniería InversaAnálisis de MalwareUtilidades y FrameworksAnálisis de Binarios
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

Plugin de Binary Ninja para analizar y simplificar código ofuscado

Ver Repositorio
2552317hace 4 mesesRevisado 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

Análisis de Ofuscación (v1.3)

Autores: Tim Blazytko & Nicolò Altamura

Analiza y simplifica código ofuscado

Descripción:

Obfuscation Analysis es un plugin de Binary Ninja que elimina la dificultad de trabajar con binarios fuertemente protegidos. Incluye un puñado de asistentes enfocados que te permiten

  • simplificar expresiones de Aritmética Mixta Booleana (MBA) con un solo clic (basado en msynth)
  • localizar y limpiar funciones con desensamblado roto

Algunos casos de uso de ejemplo se pueden encontrar en examples. Además, la charla de REcon "Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications" demuestra algunos casos de uso. Las diapositivas se pueden encontrar aquí. El plugin complementa a Obfuscation Detection: una vez que se marcan funciones sospechosas, Obfuscation Analysis te ayuda a limpiarlas y entenderlas. Se añadirán más asistentes con el tiempo.

Características principales

  • simplifica la ofuscación de Aritmética Mixta Booleana en la vista del descompilador de Binary Ninja
  • identifica y elimina funciones con desensamblado roto
  • aplica inlining a funciones en la vista del descompilador
  • implementación eficiente y agnóstica de la arquitectura
  • se ejecuta como tarea en segundo plano
  • manejo cuidadoso de errores: mensajes concisos para el usuario, traza completa en el registro de Debug
  • Instalación

    La herramienta se puede instalar usando el gestor de plugins de Binary Ninja.

    Para una instalación manual, sigue estos pasos en la carpeta de plugins de Binary Ninja:

    root@kitploit:~
    git clone https://github.com/mrphrazer/obfuscation_analysis.git
    cd obfuscation_analysis
    
    # optionally: use a virtual environment
    python -m venv obfana-env
    source obfana-env/bin/activate
    
    # install requirements
    pip install -r requirements.txt
    

    Si usas un entorno virtual, deberás establecer manualmente la ruta de site-packages en la configuración de Binary Ninja.

    Uso

    El plugin está disponible desde el menú de la barra superior de Binary Ninja en Plugins -> Obfuscation Analysis.

    Plugin Menu

    Simplificación de MBA

    Para simplificar la ofuscación aritmética, primero resalta la expresión HLIL que deseas simplificar en la vista del descompilador. A continuación, elige Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify. El plugin resuelve el cálculo completo, lo ejecuta a través de msynth e inserta el resultado simplificado como un comentario en la misma línea. La breve animación a continuación muestra el flujo de trabajo completo:

    MBA Simplification Workflow

    La simplificación de MBA se basa en msynth. Por defecto, el plugin usa el oráculo de simplificación predeterminado de msynth, que se incluye con el plugin y está preconfigurado. Si deseas usar un oráculo más grande o personalizado, establece obfuscation_analysis.mba_oracle_path manualmente o navega hasta el archivo en la ventana de Configuración de Binary Ninja.

    Plugin Settings

    Si algo sale mal, el plugin escribe un mensaje conciso a nivel de usuario en el panel de Log; cambia la vista del registro a Debug para ver la traza completa.

    Log Output

    Características

    El plugin incluye asistentes enfocados que abordan obstáculos comunes que encuentras al revertir binarios protegidos, cada uno ejecutable como una tarea en segundo plano desde la interfaz de usuario o desde scripts sin interfaz. A continuación se presentan las características disponibles actualmente.

    Funciones corruptas

    Las Funciones corruptas son funciones cuyo desensamblado muestra artefactos indefinidos—bloques básicos vacíos, instrucciones inválidas o superpuestas, y similares. Este asistente recorre todo el BinaryView, marca funciones con esos síntomas y las lista de manera que el analista pueda inspeccionar rápidamente código que fue mal analizado o deliberadamente ofuscado. Una acción opcional de eliminación borra cada función marcada y fuerza un nuevo análisis, limpiando la lista de funciones. Es particularmente útil para localizar

    • blobs de datos que el desensamblador promovió erróneamente a código
    • stubs de ofuscación que rompen el desensamblado lineal
    • funciones que usan instrucciones superpuestas o saltos desalineados
    • problemas con arquitecturas más nuevas donde se encuentran instrucciones poco comunes

    Simplificación de MBA

    La Aritmética Mixta Booleana (MBA) es una técnica de ofuscación que entierra cálculos simples en largas cadenas de operaciones aritméticas y booleanas. Esta característica simplifica tales expresiones en el descompilador. Cuando eliges una instrucción HLIL, el plugin recopila su cadena de cálculo completa con un backward slice SSA restringido al bloque básico actual, traduce ese slice a Miasm IR, lo introduce en msynth y finalmente añade el resultado simplificado como un comentario en la vista del descompilador. Esta característica te permite

    • colapsar enredos de MBA de múltiples líneas en una única ecuación legible
    • resolver predicados opacos que dependen de MBAs
    • reducir codificaciones de constantes convolutas hasta su valor literal

    Inlining de funciones

    Para la función actualmente seleccionada, este asistente aplica inlining recursivamente a cada función llamada dentro de la vista del descompilador, dando a Binary Ninja un IL único y autocontenido. Con todos los límites eliminados, el descompilador puede propagar datos entre funciones, permitiendo un plegado de constantes más profundo, eliminación de código muerto y, en general, una lógica más clara. Úsalo para

    • colapsar cadenas de pequeños wrappers, thunks o asistentes de acceso
    • mejorar representaciones de algoritmos que han sido divididas entre múltiples funciones
    • analizar esquemas de ofuscación donde la lógica está deliberadamente dispersa entre funciones

    Ten en cuenta que HLIL puede volverse muy grande y lento de renderizar en funciones muy grandes o árboles de llamadas profundos. Además, algunas optimizaciones del descompilador pueden ser menos efectivas una vez que todo se fusiona en una sola unidad. Para controlar esto, puedes limitar la profundidad de inlining: establece Settings -> Obfuscation Analysis -> Max Function Inlining Depth a un límite superior N (por defecto establecido en 1). Con un límite de profundidad, solo se aplica inlining a los primeros N niveles de llamadas; las llamadas más profundas no se inlinean.

    Limitaciones

    El plugin tiene algunas advertencias que debes conocer, la mayoría relacionadas con el pipeline de simplificación de MBA:

    • Bug de Binary Ninja: en BN 5.0 stable, el paso de backward-slicing puede fallar debido a type-casts de HLIL faltantes: https://github.com/Vector35/binaryninja-api/issues/6371; el problema está corregido en 5.1.7477-de y versiones más recientes

    • slice confinado a un bloque básico: las definiciones de variables ubicadas en bloques predecesores se ignoran (a menudo dependientes del flujo de control), por lo que algunos términos de MBA pueden permanecer parcialmente resueltos

    • brechas de traducción de HLIL a Miasm IR: no todas las construcciones de HLIL tienen un equivalente sólido en Miasm; cuando la traducción falla, la expresión se omite y se registra un error

    • cobertura de IL: los nodos de flujo de control y las operaciones de punto flotante actualmente no se traducen

    • restricciones heredadas de msynth : la simplificación de MBA hereda todas las limitaciones de msynth

    Contacto

    Para más información, contacta a Tim Blazytko (@mr_phrazer) o Nicolò Altamura (@nicolodev).

    Descargar herramienta