Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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
EhTrace — ATrace es una herramienta para rastrear la ejecución de binarios en Windows. | Kitploit
Herramientas/GitHubGitHub/k2/ehtrace
Análisis Dinámico (Sandboxing)Análisis de CódigoExplotaciónIngeniería InversaDepuradoresFuzzingAnálisis de Binarios
GitHubk2/ehtrace

EhTrace

ATrace es una herramienta para rastrear la ejecución de binarios en Windows.

Ver Repositorio
243503hace 9 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

EhTrace

LOGO

EhTrace (se pronuncia "ATrace") es un framework de instrumentación y trazado binario de alto rendimiento para Windows. Permite el análisis profundo en tiempo de ejecución de ejecutables de Windows sin necesidad de código fuente, modificaciones binarias o depuración tradicional.

Visión general

EhTrace aprovecha el manejo de excepciones vectoriales (VEH) de Windows y técnicas de block-stepping para proporcionar un trazado de ejecución completo con una sobrecarga mínima. A diferencia de las herramientas tradicionales de depuración o instrumentación, EhTrace opera completamente dentro del proceso y no requiere parches en los binarios objetivo.

Características principales

  • Modificación binaria cero: Traza la ejecución sin alterar el binario objetivo
  • Alto rendimiento: El paso por bloques (block stepping) en lugar del paso a paso logra aproximadamente 43 millones de eventos por segundo
  • Cobertura de código completa: Detección y seguimiento automático de bloques básicos
  • Monitorización del estado de los registros: Captura y analiza los estados de los registros durante la ejecución
  • No requiere modo de depuración: Funciona sin habilitar las capacidades de depuración/trazado MSR de la CPU
  • Operación dentro del proceso: Sobrecarga mínima de cambio de contexto en comparación con los depuradores tradicionales
  • Múltiples modos de instrumentación: Soporte para varios escenarios de trazado y análisis

Capacidades principales

Descargar herramienta
  • Análisis del flujo de ejecución: Seguimiento de rutas de ejecución y flujo de control
  • Mapeo de cobertura de código: Generación de informes completos de cobertura de código
  • Defensa contra RoP: Detección y prevención de ataques de programación orientada a retorno (ROP) mediante el balanceo de llamadas y retornos
  • Depósito de claves (Key Escrow): Capacidades de interceptación y depósito de claves criptográficas
  • Integración con fuzzing: Instrumentación de fuzzing compatible con AFL (AWinAFL)
  • Resolución de símbolos: Carga y resolución automática de símbolos mediante DIA2

Arquitectura

root@kitploit:~
flowchart TB
    subgraph Target["🎯 Target Process"]
        direction TB
        APP[Application Code]
        VEH[Vectored Exception Handler]
        style APP fill:#e1f5ff,stroke:#01579b,stroke-width:3px,color:#000
        style VEH fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#000
    end
    
    subgraph EhTrace["⚡ EhTrace Engine"]
        direction TB
        BLOCK[Block Stepper]
        DISASM[Capstone Disassembler]
        FIGHTERS[BlockFighters]
        CTX[Context Manager]
        style BLOCK fill:#f3e5f5,stroke:#4a148c,stroke-width:3px,color:#000
        style DISASM fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#000
        style FIGHTERS fill:#ffebee,stroke:#b71c1c,stroke-width:3px,color:#000
        style CTX fill:#e0f2f1,stroke:#004d40,stroke-width:3px,color:#000
    end
    
    subgraph Output["📊 Analysis Output"]
        direction TB
        SHMEM[Shared Memory Log]
        GRAPHS[Visual Graphs]
        REPORTS[Coverage Reports]
        style SHMEM fill:#fce4ec,stroke:#880e4f,stroke-width:3px,color:#000
        style GRAPHS fill:#f1f8e9,stroke:#33691e,stroke-width:3px,color:#000
        style REPORTS fill:#fff8e1,stroke:#f57f17,stroke-width:3px,color:#000
    end
    
    APP -->|Exception| VEH
    VEH -->|Single Step| BLOCK
    BLOCK -->|Instruction| DISASM
    DISASM -->|Analysis| FIGHTERS
    FIGHTERS -->|State| CTX
    CTX -->|Events| SHMEM
    SHMEM -->|Data| GRAPHS
    SHMEM -->|Data| REPORTS
    
    style Target fill:#e3f2fd,stroke:#0d47a1,stroke-width:4px
    style EhTrace fill:#f3e5f5,stroke:#6a1b9a,stroke-width:4px
    style Output fill:#e8f5e9,stroke:#2e7d32,stroke-width:4px

Principios operativos principales

EhTrace opera a través de un pipeline sofisticado:

  1. 🛡️ Manejo de excepciones: Registro de un manejador de excepciones vectoriales (VEH)
  2. 👣 Block Stepping: Uso de excepciones de paso a paso en los límites de bloques básicos
  3. 🔍 Desensamblado: Aprovechamiento de Capstone para el análisis de instrucciones sobre la marcha
  4. 📝 Registro: Escritura de eventos de ejecución en memoria compartida para análisis externo
  5. ⚔️ Combate (Fighting): Aplicación de 'BlockFighters' configurables para tareas de seguridad y análisis

El framework mantiene el estado de ejecución por hilo utilizando estructuras de contexto especializadas y proporciona ganchos para instrumentación personalizable.

Rendimiento

root@kitploit:~
graph LR
    subgraph Traditional["🐌 Traditional Debugger"]
        T1[Single Step]
        T2[Context Switch]
        T3[Kernel Mode]
        T4[~1M events/sec]
        style T1 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T3 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T4 fill:#ef5350,stroke:#b71c1c,stroke-width:3px,color:#fff
    end
    
    subgraph EhTrace["⚡ EhTrace"]
        E1[Block Step]
        E2[In-Process]
        E3[User Mode]
        E4[~43M events/sec]
        style E1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E4 fill:#66bb6a,stroke:#1b5e20,stroke-width:3px,color:#fff
    end
    
    T1 --> T2 --> T3 --> T4
    E1 --> E2 --> E3 --> E4
    
    style Traditional fill:#ffebee,stroke:#d32f2f,stroke-width:3px
    style EhTrace fill:#e8f5e9,stroke:#388e3c,stroke-width:3px

EhTrace logra un alto rendimiento mediante varias optimizaciones:

  • 🎯 Branch stepping frente a single stepping: Solo traza en los límites de bloques básicos
  • ⚡ Operación dentro del proceso: Sin cambios de contexto del depurador
  • ⏱️ Gestión temporal del estado: VEH mantiene naturalmente el estado de ejecución
  • 💾 Registro eficiente: Búferes de memoria compartida para grabación de eventos de alto rendimiento

📊 Benchmark: 428.833.152 eventos (32 bytes cada uno) capturados en 10 segundos = ~43M eventos/seg

Ejemplo de salida

CSW16 demo trazando notepad.exe sin símbolos:

Gráfico de llama sin símbolos

Gráfico de bloques básicos con desensamblado de Capstone:

Gráfico de bloques básicos con desensamblado

Visualización de cobertura de código:

Visualización de cobertura de código

Componentes

root@kitploit:~
graph TD
    subgraph Core["🎯 Core Components"]
        EH[EhTrace.dll<br/>Main Instrumentation]
        AC[Acleanout<br/>Log Dumper]
        AG[Agasm<br/>Graph Generator]
        style EH fill:#e1bee7,stroke:#6a1b9a,stroke-width:3px,color:#000
        style AC fill:#c5cae9,stroke:#3949ab,stroke-width:3px,color:#000
        style AG fill:#b2dfdb,stroke:#00695c,stroke-width:3px,color:#000
    end
    
    subgraph Tools["🔧 Supporting Tools"]
        AL[Aload<br/>DLL Injector]
        AP[Aprep<br/>Test EXE]
        AS[Astrace<br/>Stack Tracer]
        style AL fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#000
        style AP fill:#f8bbd0,stroke:#c2185b,stroke-width:3px,color:#000
        style AS fill:#d1c4e9,stroke:#512da8,stroke-width:3px,color:#000
    end
    
    subgraph Fuzzing["🐛 Fuzzing Integration"]
        AWA[AWinAFL<br/>AFL Instrumentation]
        style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
    end
    
    subgraph Viz["📊 Visualization"]
        WPF[WPFx<br/>Graph Viewer]
        DIA[Dia2Sharp<br/>Symbol Resolver]
        ASF[AStackFolding<br/>Flame Graphs]
        style WPF fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#000
        style DIA fill:#fff9c4,stroke:#f9a825,stroke-width:3px,color:#000
        style ASF fill:#ffecb3,stroke:#ff8f00,stroke-width:3px,color:#000
    end
    
    EH -->|Logs| AC
    AC -->|Data| AG
    AG -->|Graphs| WPF
    AL -->|Inject| EH
    DIA -->|Symbols| AG
    ASF -->|Process| AC
    AWA -->|Variant| EH
    
    style Core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:4px
    style Tools fill:#fff3e0,stroke:#ef6c00,stroke-width:4px
    style Fuzzing fill:#fbe9e7,stroke:#bf360c,stroke-width:4px
    style Viz fill:#e8f5e9,stroke:#388e3c,stroke-width:4px

El ecosistema EhTrace consta de varios proyectos integrados:

Componentes principales

  • EhTrace: La DLL principal de instrumentación (también se puede compilar como EXE para pruebas)
  • Acleanout: Vuelca los registros de trazado desde la memoria compartida creada por EhTrace
  • Agasm: Herramienta de pegado/desensamblado para generar gráficos con símbolos e integración con Capstone

Herramientas de soporte

  • Aload: Utilidad de inyección de DLL
  • Aprep: Ejecutable de prueba (EhTrace compilado como EXE)
  • Astrace: Utilidades de trazado de pila
  • AKeyTest: Prueba de depósito de claves criptográficas

Integración con fuzzing

  • AWinAFL: Instrumentación de fuzzing compatible con AFL para Windows

Visualización

  • WPFx: Visualización basada en WPF utilizando la biblioteca de gráficos MSAGL
  • Dia2Sharp: Envoltorio de DIA2 en C# para procesamiento de símbolos
  • TestDump2: Aplicación de prueba para Dia2Sharp
  • Amerger: Utilidades de fusión de registros
  • AStackFolding: Plegado de trazas de pila para generación de gráficos de llama

Requisitos previos

Requisitos de compilación

  • Visual Studio 2015 o posterior (cadena de herramientas C++)
  • Windows SDK
  • .NET Framework (para herramientas de visualización)

Dependencias en tiempo de ejecución

  • dbghelp.dll: Resolución de símbolos (incluida en el directorio support)
  • symsrv.dll: Soporte de servidor de símbolos (incluida en el directorio support)
  • Capstone: Motor de desensamblado (bibliotecas en el directorio support)
  • MSAGL: Visualización de gráficos (Microsoft Automatic Graph Layout)

Compilación

  1. Abra EhTrace.sln en Visual Studio
  2. Seleccione su configuración objetivo (Debug/Release) y plataforma (x86/x64)
  3. Compile la solución

Para instrucciones detalladas de compilación, consulte BUILDING.md

Uso

Trazado básico

  1. Compile u obtenga EhTrace.dll
  2. Inyecte EhTrace.dll en el proceso objetivo usando Aload o su método de inyección preferido
  3. Ejecute la aplicación objetivo
  4. Recoja los datos de trazado usando Acleanout
  5. Visualice los resultados usando WPFx o herramientas de análisis personalizadas

Flujo de trabajo de ejemplo

root@kitploit:~
# Build EhTrace
msbuild EhTrace.sln /p:Configuration=Release /p:Platform=x64

# Inject into target
Aload.exe target.exe EhTrace.dll

# Collect trace data
Acleanout.exe > trace.log

# Analyze with Agasm
Agasm.exe trace.log output.graph

Para documentación completa de uso, consulte USAGE.md

Configuración

EhTrace admite configuración en tiempo de ejecución a través del framework BlockFighters. Configure el comportamiento de trazado modificando la configuración de los fighters en su compilación.

Fighters disponibles:

  • RoP Fighter: Detecta cadenas de gadgets ROP
  • Key Escrow Fighter: Intercepta operaciones criptográficas
  • AFL Fighter: Proporciona instrumentación de fuzzing
  • Fighters personalizados: Implemente su propia lógica de análisis

Desarrollo

Estructura del proyecto

root@kitploit:~
EhTrace/
├── EhTrace/          # DLL de instrumentación principal
├── prep/             # Herramientas de soporte y utilidades
├── vis/              # Componentes de visualización
├── support/          # Dependencias y recursos
├── doc/              # Documentación
└── afl-fuzz/         # Integración con fuzzing AFL

Archivos fuente clave

  • EhTrace.cpp: Manejador VEH principal y lógica central
  • BlockFighters.cpp: Implementación del framework de fighters
  • Config.cpp: Gestión de configuración y símbolos
  • GlobLog.cpp: Registro en memoria compartida
  • KeyEscrow.cpp: Interceptación de claves criptográficas
  • RoP-Defender.cpp: Lógica de detección de ROP

Licencia

Este proyecto está licenciado bajo la GNU Affero General Public License v3.0 - consulte el archivo LICENSE para más detalles.

Copyright (C) 2014-2016 Shane Macaulay

Contribuciones

¡Las contribuciones son bienvenidas! Asegúrese de que su código siga el estilo existente e incluya las pruebas adecuadas.

Autor

Shane Macaulay ([email protected])

Agradecimientos

  • Framework de desensamblado Capstone
  • Microsoft Automatic Graph Layout (MSAGL)
  • Framework de fuzzing AFL
  • La comunidad de investigación en seguridad

Referencias

Para más detalles técnicos, consulte:

  • ARCHITECTURE.md - Documentación técnica de la arquitectura
  • doc/ - Documentación y presentaciones adicionales