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
Obfusk8 — Obfusk8: biblioteca de ofuscación ligera basada en C++17 / Header Only para binarios de Windows | Kitploit
Herramientas/GitHubGitHub/x86byte/obfusk8
Frameworks de ExploitsIngeniería InversaShellcodeCriptografíaPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubx86byte/obfusk8

Obfusk8

Obfusk8: biblioteca de ofuscación ligera basada en C++17 / Header Only para binarios de Windows

Ver Repositorio
7938222hace 3 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

Obfusk8: Biblioteca de Ofuscación Basada en C++17

Obfusk8 es una biblioteca ligera de solo cabecera (header-only) para C++17, diseñada para mejorar significativamente la ofuscación de tus aplicaciones, haciendo que la ingeniería inversa sea una tarea sustancialmente más difícil. Lo consigue mediante un conjunto diverso de técnicas de tiempo de compilación y de ejecución orientadas a proteger la lógica y los datos de tu código.

banner


Tabla de Contenidos

  1. Estrategias principales de ofuscación
  2. Dependencias
  3. Visualización
  4. Perfil de análisis y detección del motor
  5. Características estructurales y forenses
  6. Uso
  7. Compilación
  8. Demo
  9. Contribución y comentarios

Estrategias principales de ofuscación

1. Envoltura de la función main (macro _main)

El punto de entrada de tu aplicación (main) se transforma en un motor de ofuscación complejo y multicapa:

  • Ejecución de Máquina Virtual (VM) (Conceptual): Antes de que se ejecute tu código real main_body, una mini-VM (CPU simulada) ejecuta una secuencia de instrucciones "cifradas". Esto oculta el verdadero punto de entrada y las operaciones iniciales. El estado de la VM (registros, contador de programa, clave de despacho) se inicializa con valores aleatorizados en tiempo de ejecución.
  • Aplanamiento Indirecto del Flujo de Control (ICFF): Los bucles críticos dentro de la macro _main (tanto en el prólogo como en el epílogo) se transforman en intrincadas máquinas de estado. El flujo de control no es directo, sino que está determinado por variables de estado fuertemente "cifradas". Las claves de codificación/decodificación de estas variables de estado son dinámicas y se derivan del estado de la VM, contadores de bucle, aleatoriedad de tiempo de compilación (como __COUNTER__, __LINE__, __TIME__) y una semilla opaca global. Esto dificulta enormemente el análisis estático del flujo de control.
    • Se utilizan dos motores ICFF distintos (obf_icff_ns_dcff y obf_icff_ns_epd) con diferente lógica de transición de estados y generación de claves, lo que complica aún más el análisis.
  • Flujo de Control Falso (macros OBF_BOGUS_FLOW_*): Se inyectan numerosos patrones de salto engañosos y estructuras condicionales enrevesadas a lo largo de _main. Utilizan sentencias goto combinadas con predicados opacos (condiciones que siempre se evalúan como verdaderas o falsas, pero que son computacionalmente costosas o difíciles de determinar estáticamente). Esto crea un laberinto de rutas falsas para desensambladores y descompiladores.
    • Incluye OBF_BOGUS_FLOW_LABYRINTH, OBF_BOGUS_FLOW_GRID, OBF_BOGUS_FLOW_SCRAMBLE, OBF_BOGUS_FLOW_WEAVER, OBF_BOGUS_FLOW_CASCADE y OBF_BOGUS_FLOW_CYCLONE para generar flujos falsos diversos y complejos.
  • Trucos Anti-Análisis y Anti-Debug (macro Runtime, SEH):
    • Excepciones Forzadas y SEH: Se utiliza el Manejo Estructurado de Excepciones (SEH) para crear rutas que implican excepciones forzadas. Los bloques __except pueden alterar el estado del programa, lo que dificulta el seguimiento si el depurador omite las excepciones.
    • Comprobaciones de Depurador (Conceptual): La macro Runtime contiene condiciones que, si se cumplen (debido a estados o temporización específicos de la VM), podrían activar __debugbreak() o lanzar excepciones, diseñadas para interrumpir las sesiones de depuración.

2. Motor de ISA Virtual (obf_vm_engine)

Un componente central de la ofuscación de la macro _main:

  • Simulación de Mini-CPU Personalizada: Simula una CPU con registros volátiles (r0, r1, r2), un contador de programa (pc) y una dispatch_key. Ejecuta "instrucciones" (handlers) personalizadas.
  • Instrucciones Ofuscadas: Los handlers de instrucciones de la VM realizan operaciones fuertemente disfrazadas mediante Aritmética Booleana Mixta (MBA) y manipulaciones bit a bit. Los handlers incluyen aritmética, lógica bit a bit, alteración de claves, secuencias basura, actualizaciones condicionales, simulación de memoria y alteración del PC.
  • Despacho Dinámico: La selección del siguiente handler de instrucciones de la VM se aleatoriza mediante múltiples mecanismos de despacho:
    • Despacho basado en registros (reg_dispatch_idx).
    • Despacho basado en tabla de memoria (tabla de punteros a función mezclada get_mem_dispatch_table).
    • Despacho mixto (mixed_dispatch_idx). La dispatch_key se muta constantemente, haciendo que la secuencia de handlers ejecutados sea altamente impredecible.
  • Mutación de la Tabla de Handlers: La tabla de handlers de instrucciones de la VM (vm_handler_table) se muta en tiempo de ejecución dentro del prólogo y el epílogo de _main, oscureciendo aún más el comportamiento de la VM.

3. Cifrado de Cadenas en Tiempo de Compilación (OBFUSCATE_STRING de AES8.hpp)

  • Cadenas Ocultas: Cifra todos los literales de cadena en tiempo de compilación utilizando un cifrado AES modificado.
  • Claves Dinámicas: Las claves de cifrado son únicas por instancia de cadena y se derivan del contenido de la cadena, la ubicación del archivo (__FILE__, __LINE__) y el momento de compilación (__DATE__, __TIME__).
  • Descifrado Just-In-Time: Las cadenas se descifran en la pila solo cuando se accede a ellas en tiempo de ejecución, minimizando su tiempo de vida como texto plano en memoria.
  • (Opcional) Secciones PE Señuelo: Puede almacenar cadenas cifradas en secciones PE personalizadas diseñadas para imitar firmas comunes de empaquetadores, lo que podría engañar a los analistas (característica específica de MSVC de AES8.hpp).

4. Llamadas Sigilosas a la API de Windows (STEALTH_API_OBFSTR / STEALTH_API_OBF de Resolve8.hpp)

  • Ofuscación de la IAT: Evita dejar entradas directas y fácilmente identificables para las API de Windows en la Tabla de Direcciones de Importación (IAT).
  • Resolución Basada en el PEB: Encuentra dinámicamente las direcciones base de las DLL cargadas y las direcciones de las funciones de API analizando directamente las estructuras de datos del Bloque de Entorno de Proceso (PEB) en tiempo de ejecución. Esto evita GetModuleHandle y GetProcAddress estándar para la resolución inicial si estas aún no han sido resueltas por este mecanismo.
  • Nombres Hasheados: Utiliza hashing en tiempo de compilación (algoritmo personalizado CT_HASH) de nombres de DLL y API para las búsquedas. Esto evita que los nombres en texto plano de DLL y API aparezcan en los datos relacionados con importaciones o en las tablas de cadenas del binario cuando se utilizan estas macros.
Descargar herramienta