Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
EhTrace — ATrace è uno strumento per tracciare l'esecuzione di binari su Windows. | Kitploit
Strumenti/GitHubGitHub/k2/ehtrace
Analisi Dinamica (Sandboxing)Analisi del CodiceExploitReverse EngineeringDebuggerFuzzingAnalisi di Binari
GitHubk2/ehtrace

EhTrace

ATrace è uno strumento per tracciare l'esecuzione di binari su Windows.

Vedi Repository
243509 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

EhTrace

LOGO

EhTrace (pronunciato "ATrace") è un framework di tracciamento e instrumentazione binaria ad alte prestazioni per Windows. Consente un'analisi approfondita dell'esecuzione runtime degli eseguibili Windows senza richiedere codice sorgente, modifiche binarie o debugging tradizionale.

Panoramica

EhTrace sfrutta la gestione delle eccezioni vettoriali di Windows (VEH) e tecniche di "block-stepping" per fornire un tracciamento completo dell'esecuzione con un overhead minimo. A differenza degli strumenti tradizionali di debugging o instrumentazione, EhTrace opera interamente in-process e non richiede patch ai binari target.

Caratteristiche principali

  • Modifica binaria zero: Traccia l'esecuzione senza alterare il binario target
  • Alte prestazioni: Il block stepping invece del single stepping raggiunge circa 43 milioni di eventi al secondo
  • Copertura completa del codice: Rilevamento e tracciamento automatico dei blocchi di base
  • Monitoraggio dello stato dei registri: Acquisisci e analizza lo stato dei registri durante l'esecuzione
  • Nessuna modalità debug richiesta: Funziona senza abilitare le capacità dei MSR di debug/traccia della CPU
  • Operazione in-process: Overhead di cambio contesto minimo rispetto ai debugger tradizionali
  • Modalità di instrumentazione multiple: Supporto per vari scenari di tracciamento e analisi

Capacità principali

  • Analisi del flusso di esecuzione: Tiene traccia dei percorsi di esecuzione e del flusso di controllo
  • Mappatura della copertura del codice: Genera report completi di copertura del codice
  • Difesa RoP: Rileva e previene attacchi di programmazione orientata al ritorno (ROP) tramite bilanciamento call/ret
  • Key Escrow: Capacità di intercettazione e deposito di chiavi crittografiche
  • Integrazione con fuzzing: Instrumentazione per fuzzing compatibile con AFL (AWinAFL)
  • Risoluzione dei simboli: Caricamento e risoluzione automatica dei simboli tramite DIA2

Architettura

root@kitploit:~
flowchart TB
    subgraph Target["🎯 Processo target"]
        direction TB
        APP[Codice applicazione]
        VEH[Gestore eccezioni vettoriali]
        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["⚡ Motore EhTrace"]
        direction TB
        BLOCK[Block Stepper]
        DISASM[Disassemblatore Capstone]
        FIGHTERS[BlockFighters]
        CTX[Gestore contesto]
        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["📊 Output di analisi"]
        direction TB
        SHMEM[Log memoria condivisa]
        GRAPHS[Grafici visivi]
        REPORTS[Report di copertura]
        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 -->|Eccezione| VEH
    VEH -->|Single Step| BLOCK
    BLOCK -->|Istruzione| DISASM
    DISASM -->|Analisi| FIGHTERS
    FIGHTERS -->|Stato| CTX
    CTX -->|Eventi| SHMEM
    SHMEM -->|Dati| GRAPHS
    SHMEM -->|Dati| 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

Principi operativi principali

EhTrace opera attraverso una pipeline sofisticata:

  1. 🛡️ Gestione eccezioni: Registrazione di un Vectored Exception Handler (VEH)
  2. 👣 Block stepping: Utilizzo di eccezioni single-step ai confini dei blocchi di base
  3. 🔍 Disassemblaggio: Sfruttamento di Capstone per l'analisi delle istruzioni on-the-fly
  4. 📝 Logging: Scrittura degli eventi di esecuzione in memoria condivisa per analisi esterne
  5. ⚔️ Fighting: Applicazione di "BlockFighters" configurabili per attività di sicurezza e analisi

Il framework mantiene lo stato di esecuzione per thread utilizzando strutture di contesto specializzate e fornisce hook per un'instrumentazione personalizzabile.

Prestazioni

root@kitploit:~
graph LR
    subgraph Traditional["🐌 Debugger tradizionale"]
        T1[Single Step]
        T2[Cambio contesto]
        T3[Modalità kernel]
        T4[~1M eventi/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[Modalità utente]
        E4[~43M eventi/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 raggiunge alte prestazioni grazie a diverse ottimizzazioni:

  • 🎯 Branch stepping vs single stepping: Tracciamento solo ai confini dei blocchi di base
  • ⚡ Operazione in-process: Nessun cambio contesto del debugger
  • ⏱️ Gestione temporale dello stato: Il VEH mantiene naturalmente lo stato di esecuzione
  • 💾 Logging efficiente: Buffer di memoria condivisa per la registrazione di eventi ad alto throughput

📊 Benchmark: 428.833.152 eventi (32 byte ciascuno) catturati in 10 secondi = ~43M eventi/sec

Esempio di output

Demo CSW16 di tracing di notepad.exe senza simboli:

Flame graph senza simboli

Grafico del blocco di base con disassemblaggio Capstone:

Grafico BB con disassemblaggio

Visualizzazione della copertura del codice:

Copertura grafico BB

Componenti

root@kitploit:~
graph TD
    subgraph Core["🎯 Componenti principali"]
        EH[EhTrace.dll<br/>Instrumentazione principale]
        AC[Acleanout<br/>Dump log]
        AG[Agasm<br/>Generatore grafico]
        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["🔧 Strumenti di supporto"]
        AL[Aload<br/>Iniettore DLL]
        AP[Aprep<br/>EXE di test]
        AS[Astrace<br/>Tracer dello stack]
        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["🐛 Integrazione fuzzing"]
        AWA[AWinAFL<br/>Instrumentazione AFL]
        style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
    end
    
    subgraph Viz["📊 Visualizzazione"]
        WPF[WPFx<br/>Visualizzatore grafico]
        DIA[Dia2Sharp<br/>Risolutore simboli]
        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 -->|Log| AC
    AC -->|Dati| AG
    AG -->|Grafici| WPF
    AL -->|Inietta| EH
    DIA -->|Simboli| AG
    ASF -->|Elabora| 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

L'ecosistema EhTrace è composto da diversi progetti integrati:

Componenti principali

  • EhTrace: La DLL di instrumentazione principale (può anche essere compilata come EXE per test)
  • Acleanout: Scarica i log di tracciamento dalla memoria condivisa creati da EhTrace
  • Agasm: Strumento di glue/disassemblaggio per generare grafici con simboli e integrazione Capstone

Strumenti di supporto

  • Aload: Utility di iniezione DLL
  • Aprep: Eseguibile di test (EhTrace compilato come EXE)
  • Astrace: Utility di tracciamento dello stack
  • AKeyTest: Test di deposito chiavi crittografiche

Integrazione fuzzing

  • AWinAFL: Instrumentazione per fuzzing compatibile con AFL per Windows

Visualizzazione

  • WPFx: Visualizzazione basata su WPF utilizzando la libreria grafica MSAGL
  • Dia2Sharp: Wrapper C# per DIA2 per l'elaborazione dei simboli
  • TestDump2: Applicazione di test per Dia2Sharp
  • Amerger: Utility di unione log
  • AStackFolding: Piega delle tracce dello stack per la generazione di flame graph

Prerequisiti

Requisiti di build

  • Visual Studio 2015 o successivo (toolchain C++)
  • Windows SDK
  • .NET Framework (per gli strumenti di visualizzazione)

Dipendenze runtime

  • dbghelp.dll: Risoluzione dei simboli (inclusa nella directory support)
  • symsrv.dll: Supporto server simboli (inclusa nella directory support)
  • Capstone: Motore di disassemblaggio (librerie nella directory support)
  • MSAGL: Microsoft Automatic Graph Layout

Build

  1. Apri EhTrace.sln in Visual Studio
  2. Seleziona la configurazione target (Debug/Release) e la piattaforma (x86/x64)
  3. Compila la soluzione

Per istruzioni dettagliate sulla build, consulta BUILDING.md

Utilizzo

Tracciamento di base

  1. Compila o ottieni EhTrace.dll
  2. Inietta EhTrace.dll nel processo target usando Aload o il tuo metodo di iniezione preferito
  3. Esegui l'applicazione target
  4. Raccogli i dati di tracciamento usando Acleanout
  5. Visualizza i risultati usando WPFx o strumenti di analisi personalizzati

Flusso di lavoro di esempio

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

# Inietta nel target
Aload.exe target.exe EhTrace.dll

# Raccogli dati di tracciamento
Acleanout.exe > trace.log

# Analizza con Agasm
Agasm.exe trace.log output.graph

Per la documentazione completa sull'utilizzo, consulta USAGE.md

Configurazione

EhTrace supporta la configurazione runtime tramite il framework BlockFighters. Configura il comportamento di tracciamento modificando la configurazione dei fighter nella tua build.

Fighter disponibili:

  • RoP Fighter: Rileva catene di gadget ROP
  • Key Escrow Fighter: Intercetta operazioni crittografiche
  • AFL Fighter: Fornisce instrumentazione per fuzzing
  • Fighter personalizzati: Implementa la tua logica di analisi

Sviluppo

Struttura del progetto

root@kitploit:~
EhTrace/
├── EhTrace/          # DLL di instrumentazione principale
├── prep/             # Strumenti e utility di supporto
├── vis/              # Componenti di visualizzazione
├── support/          # Dipendenze e risorse
├── doc/              # Documentazione
└── afl-fuzz/         # Integrazione fuzzing AFL

File sorgente principali

  • EhTrace.cpp: Gestore VEH principale e logica principale
  • BlockFighters.cpp: Implementazione del framework Fighter
  • Config.cpp: Gestione della configurazione e dei simboli
  • GlobLog.cpp: Logging in memoria condivisa
  • KeyEscrow.cpp: Intercettazione chiavi crittografiche
  • RoP-Defender.cpp: Logica di rilevamento ROP

Licenza

Questo progetto è concesso in licenza secondo la GNU Affero General Public License v3.0 - consulta il file LICENSE per i dettagli.

Copyright (C) 2014-2016 Shane Macaulay

Contributi

I contributi sono benvenuti! Assicurati che il tuo codice segua lo stile esistente e includa test appropriati.

Autore

Shane Macaulay ([email protected])

Riconoscimenti

  • Framework di disassemblaggio Capstone
  • Microsoft Automatic Graph Layout (MSAGL)
  • Framework di fuzzing AFL
  • La comunità di ricerca sulla sicurezza

Riferimenti

Per ulteriori dettagli tecnici, consulta:

  • ARCHITECTURE.md - Documentazione dell'architettura tecnica
  • doc/ - Documentazione aggiuntiva e presentazioni
Scarica lo strumento