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
2435039 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

  • : Tiene traccia dei percorsi di esecuzione e del flusso di controllo
Scarica lo strumento
Analisi del flusso di esecuzione
  • 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