Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
EhTrace — ATrace é uma ferramenta para rastrear a execução de binários no Windows. | Kitploit
Ferramentas/GitHubGitHub/k2/ehtrace
Análise Dinâmica (Sandboxing)Análise de CódigoExploraçãoEngenharia ReversaDepuradoresFuzzingAnálise de Binários
GitHubk2/ehtrace

EhTrace

ATrace é uma ferramenta para rastrear a execução de binários no Windows.

Ver Repositório
24350há 9 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

EhTrace

LOGO

EhTrace (pronuncia-se "ATrace") é um framework de rastreamento e instrumentação binária de alto desempenho para Windows. Permite análise profunda de executáveis Windows em tempo de execução sem exigir código-fonte, modificações binárias ou depuração tradicional.

Visão Geral

EhTrace aproveita o Vectored Exception Handling (VEH) do Windows e técnicas de "block-stepping" para fornecer rastreamento abrangente da execução com sobrecarga mínima. Ao contrário de ferramentas tradicionais de depuração ou instrumentação, o EhTrace opera inteiramente no processo e não requer patches nos binários alvo.

Principais Funcionalidades

  • Modificação Binária Zero: Rastreie a execução sem alterar o binário alvo
  • Alto Desempenho: Block stepping em vez de single stepping atinge ~43 milhões de eventos por segundo
  • Cobertura de Código Completa: Detecção e rastreamento automático de blocos básicos
  • Monitoramento de Estado dos Registradores: Capture e analise estados dos registradores durante a execução
  • Nenhum Modo de Depuração Necessário: Funciona sem habilitar capacidades de depuração/trace MSR da CPU
  • Operação Intraprocesso: Sobrecarga mínima de troca de contexto comparado a depuradores tradicionais
  • Múltiplos Modos de Instrumentação: Suporte para vários cenários de rastreamento e análise

Capacidades Principais

  • Análise de Fluxo de Execução: Rastreie caminhos de execução do programa e fluxo de controle
  • Mapeamento de Cobertura de Código: Gere relatórios abrangentes de cobertura de código
  • Defesa contra RoP: Detecte e previna ataques de Programação Orientada a Retorno através do balanceamento call/ret
  • Key Escrow: Capacidades de interceptação e custódia de chaves criptográficas
  • Integração com Fuzzing: Instrumentação de fuzzing compatível com AFL (AWinAFL)
  • Resolução de Símbolos: Carregamento e resolução automática de símbolos via DIA2

Arquitetura

root@kitploit:~
flowchart TB
    subgraph Target["🎯 Processo Alvo"]
        direction TB
        APP[Código da Aplicação]
        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["⚡ Motor EhTrace"]
        direction TB
        BLOCK[Block Stepper]
        DISASM[Desmontador Capstone]
        FIGHTERS[BlockFighters]
        CTX[Gerenciador de Contexto]
        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["📊 Saída de Análise"]
        direction TB
        SHMEM[Log de Memória Compartilhada]
        GRAPHS[Gráficos Visuais]
        REPORTS[Relatórios de Cobertura]
        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 -->|Exceção| VEH
    VEH -->|Passo Único| BLOCK
    BLOCK -->|Instrução| DISASM
    DISASM -->|Análise| FIGHTERS
    FIGHTERS -->|Estado| CTX
    CTX -->|Eventos| SHMEM
    SHMEM -->|Dados| GRAPHS
    SHMEM -->|Dados| 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

Princípios Operacionais Principais

O EhTrace opera através de um pipeline sofisticado:

  1. 🛡️ Tratamento de Exceções: Registro de um Vectored Exception Handler (VEH)
  2. 👣 Block Stepping: Uso de exceções de passo único nos limites de blocos básicos
  3. 🔍 Desmontagem: Aproveitamento do Capstone para análise de instruções em tempo real
  4. 📝 Registro: Escrita de eventos de execução em memória compartilhada para análise externa
  5. ⚔️ Fighting: Aplicação de "BlockFighters" configuráveis para tarefas de segurança e análise

O framework mantém o estado de execução por thread usando estruturas de contexto especializadas e fornece hooks para instrumentação personalizável.

Desempenho

root@kitploit:~
graph LR
    subgraph Traditional["🐌 Depurador Tradicional"]
        T1[Passo Único]
        T2[Troca de Contexto]
        T3[Modo Kernel]
        T4[~1M eventos/seg]
        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[Intraprocesso]
        E3[Modo Usuário]
        E4[~43M eventos/seg]
        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

O EhTrace atinge alto desempenho através de várias otimizações:

  • 🎯 Branch stepping vs single stepping: Rastrear apenas nos limites de blocos básicos
  • ⚡ Operação intraprocesso: Sem trocas de contexto de depurador
  • ⏱️ Gerenciamento de estado temporal: O VEH mantém naturalmente o estado de execução
  • 💾 Registro eficiente: Buffers de memória compartilhada para gravação de eventos de alta taxa de transferência

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

Exemplo de Saída

Demonstração do CSW16 rastreando notepad.exe sem símbolos:

Flame graph without symbols

Grafo de blocos básicos com desmontagem Capstone:

BB graph with disassembly

Visualização de cobertura de código:

BB graph coverage

Componentes

root@kitploit:~
graph TD
    subgraph Core["🎯 Componentes Principais"]
        EH[EhTrace.dll<br/>Instrumentação Principal]
        AC[Acleanout<br/>Dump de Logs]
        AG[Agasm<br/>Gerador de Grafos]
        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["🔧 Ferramentas de Suporte"]
        AL[Aload<br/>Injetor de DLL]
        AP[Aprep<br/>EXE de Teste]
        AS[Astrace<br/>Rastreador de Pilha]
        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["🐛 Integração com Fuzzing"]
        AWA[AWinAFL<br/>Instrumentação AFL]
        style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
    end
    
    subgraph Viz["📊 Visualização"]
        WPF[WPFx<br/>Visualizador de Grafos]
        DIA[Dia2Sharp<br/>Resolvedor de Símbolos]
        ASF[AStackFolding<br/>Gráficos de Chamas]
        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 -->|Dados| AG
    AG -->|Grafos| WPF
    AL -->|Injetar| EH
    DIA -->|Símbolos| AG
    ASF -->|Processar| AC
    AWA -->|Variante| 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

O ecossistema EhTrace consiste em vários projetos integrados:

Componentes Principais

  • EhTrace: A DLL principal de instrumentação (também pode ser compilada como EXE para testes)
  • Acleanout: Despeja logs de rastreamento da memória compartilhada criada pelo EhTrace
  • Agasm: Ferramenta de cola/desmontagem para gerar grafos com símbolos e integração Capstone

Ferramentas de Suporte

  • Aload: Utilitário de injeção de DLL
  • Aprep: Executável de teste (EhTrace compilado como EXE)
  • Astrace: Utilitários de rastreamento de pilha
  • AKeyTest: Teste de custódia de chaves criptográficas

Integração com Fuzzing

  • AWinAFL: Instrumentação de fuzzing compatível com AFL para Windows

Visualização

  • WPFx: Visualização baseada em WPF usando a biblioteca de grafos MSAGL
  • Dia2Sharp: Wrapper C# DIA2 para processamento de símbolos
  • TestDump2: Aplicação de teste para Dia2Sharp
  • Amerger: Utilitários de mesclagem de logs
  • AStackFolding: Dobramento de pilha para geração de gráficos de chamas

Pré-requisitos

Requisitos de Compilação

  • Visual Studio 2015 ou posterior (toolchain C++)
  • Windows SDK
  • .NET Framework (para ferramentas de visualização)

Dependências em Tempo de Execução

  • dbghelp.dll: Resolução de símbolos (incluída no diretório support)
  • symsrv.dll: Suporte a servidor de símbolos (incluída no diretório support)
  • Capstone: Motor de desmontagem (bibliotecas no diretório support)
  • MSAGL: Visualização de grafos (Microsoft Automatic Graph Layout)

Compilação

  1. Abra EhTrace.sln no Visual Studio
  2. Selecione sua configuração alvo (Debug/Release) e plataforma (x86/x64)
  3. Compile a solução

Para instruções detalhadas de compilação, veja BUILDING.md

Uso

Rastreamento Básico

  1. Compile ou obtenha EhTrace.dll
  2. Injete EhTrace.dll no processo alvo usando Aload ou seu método de injeção preferido
  3. Execute a aplicação alvo
  4. Colete dados de rastreamento usando Acleanout
  5. Visualize os resultados usando WPFx ou ferramentas de análise personalizadas

Fluxo de Trabalho de Exemplo

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

# Injetar no alvo
Aload.exe target.exe EhTrace.dll

# Coletar dados de rastreamento
Acleanout.exe > trace.log

# Analisar com Agasm
Agasm.exe trace.log output.graph

Para documentação abrangente de uso, veja USAGE.md

Configuração

O EhTrace suporta configuração em tempo de execução através do framework BlockFighters. Configure o comportamento de rastreamento modificando a configuração do fighter na sua compilação.

Fighters disponíveis:

  • RoP Fighter: Detecta cadeias de gadgets ROP
  • Key Escrow Fighter: Intercepta operações criptográficas
  • AFL Fighter: Fornece instrumentação para fuzzing
  • Fighters Personalizados: Implemente sua própria lógica de análise

Desenvolvimento

Estrutura do Projeto

root@kitploit:~
EhTrace/
├── EhTrace/          # DLL principal de instrumentação
├── prep/             # Ferramentas e utilitários de suporte
├── vis/              # Componentes de visualização
├── support/          # Dependências e recursos
├── doc/              # Documentação
└── afl-fuzz/         # Integração com fuzzing AFL

Arquivos Fonte Principais

  • EhTrace.cpp: Manipulador VEH principal e lógica central
  • BlockFighters.cpp: Implementação do framework de Fighters
  • Config.cpp: Gerenciamento de configuração e símbolos
  • GlobLog.cpp: Registro em memória compartilhada
  • KeyEscrow.cpp: Interceptação de chaves criptográficas
  • RoP-Defender.cpp: Lógica de detecção de ROP

Licença

Este projeto está licenciado sob a GNU Affero General Public License v3.0 - veja o arquivo LICENSE para detalhes.

Copyright (C) 2014-2016 Shane Macaulay

Contribuições

Contribuições são bem-vindas! Por favor, garanta que seu código siga o estilo existente e inclua testes apropriados.

Autor

Shane Macaulay ([email protected])

Agradecimentos

  • Capstone disassembly framework
  • Microsoft Automatic Graph Layout (MSAGL)
  • AFL fuzzing framework
  • A comunidade de pesquisa em segurança

Referências

Para mais detalhes técnicos, veja:

  • ARCHITECTURE.md - Documentação da arquitetura técnica
  • doc/ - Documentação e apresentações adicionais
Baixar ferramenta