Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
EhTrace — ATrace est un outil pour tracer l'exécution de binaires sous Windows. | Kitploit
Outils/GitHubGitHub/k2/ehtrace
Analyse Dynamique (Sandboxing)Analyse de CodeExploitationRétro-ingénierieDébogueursFuzzingAnalyse de Binaires
GitHubk2/ehtrace

EhTrace

ATrace est un outil pour tracer l'exécution de binaires sous Windows.

Voir le dépôt
243503il y a 9 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

EhTrace

LOGO

EhTrace (prononcé « ATrace ») est un framework de traçage et d’instrumentation binaire haute performance pour Windows. Il permet une analyse approfondie de l’exécution des exécutables Windows sans nécessiter de code source, de modifications binaires ni de débogage traditionnel.

Présentation

EhTrace exploite la gestion vectorisée des exceptions (VEH) de Windows ainsi que des techniques de pas-à-pas par blocs pour fournir un traçage complet de l’exécution avec une surcharge minimale. Contrairement aux outils de débogage ou d’instrumentation traditionnels, EhTrace opère entièrement dans le processus et ne nécessite aucune modification des binaires cibles.

Fonctionnalités clés

  • Aucune modification binaire : tracer l’exécution sans altérer le binaire cible
  • Haute performance : le pas-à-pas par blocs atteint environ 43 millions d’événements par seconde
  • Couverture de code complète : détection et suivi automatiques des blocs de base
  • Surveillance des registres : capture et analyse des états des registres pendant l’exécution
  • Aucun mode débogage requis : fonctionne sans activer les capacités de débogage/traçage MSR du CPU
  • Opération intra-processus : surcharge réduite de changement de contexte par rapport aux débogueurs classiques
  • Plusieurs modes d’instrumentation : prise en charge de divers scénarios de traçage et d’analyse

Capacités principales

  • : suivi des chemins d’exécution et du flux de contrôle
Télécharger l’outil
Analyse du flux d’exécution
  • Cartographie de la couverture de code : génération de rapports complets de couverture de code
  • Défense RoP : détection et prévention des attaques de programmation orientée retour (ROP) par équilibrage des appels/retours
  • Séquestration de clés : interception et séquestration de clés cryptographiques
  • Intégration fuzzing : instrumentation de fuzzing compatible AFL (AWinAFL)
  • Résolution de symboles : chargement et résolution automatiques des symboles via DIA2
  • Architecture

    root@kitploit:~
    flowchart TB
        subgraph Cible["🎯 Processus cible"]
            direction TB
            APP[Code applicatif]
            VEH[Gestionnaire vectorisé d’exceptions]
            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["⚡ Moteur EhTrace"]
            direction TB
            BLOCK[Pas-à-pas par blocs]
            DISASM[Désassembleur Capstone]
            FIGHTERS[BlockFighters]
            CTX[Gestionnaire de contexte]
            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 Sortie["📊 Analyse en sortie"]
            direction TB
            SHMEM[Mémoire partagée – journal]
            GRAPHS[Graphiques visuels]
            REPORTS[Rapports de couverture]
            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 -->|Pas-à-pas| BLOCK
        BLOCK -->|Instruction| DISASM
        DISASM -->|Analyse| FIGHTERS
        FIGHTERS -->|État| CTX
        CTX -->|Événements| SHMEM
        SHMEM -->|Données| GRAPHS
        SHMEM -->|Données| REPORTS
        
        style Cible fill:#e3f2fd,stroke:#0d47a1,stroke-width:4px
        style EhTrace fill:#f3e5f5,stroke:#6a1b9a,stroke-width:4px
        style Sortie fill:#e8f5e9,stroke:#2e7d32,stroke-width:4px

    Principes de fonctionnement fondamentaux

    EhTrace fonctionne via un pipeline sophistiqué :

    1. 🛡️ Gestion des exceptions : enregistrement d’un gestionnaire vectorisé d’exceptions (VEH)
    2. 👣 Pas-à-pas par blocs : utilisation d’exceptions de pas-à-pas aux limites des blocs de base
    3. 🔍 Désassemblage : exploitation de Capstone pour l’analyse d’instructions à la volée
    4. 📝 Journalisation : écriture des événements d’exécution dans une mémoire partagée pour analyse externe
    5. ⚔️ Fighters : application de « BlockFighters » configurables pour la sécurité et les tâches d’analyse

    Le framework maintient l’état d’exécution par thread à l’aide de structures de contexte spécialisées et fournit des points d’accroche pour une instrumentation personnalisable.

    Performance

    root@kitploit:~
    graph LR
        subgraph Traditionnel["🐌 Débogueur traditionnel"]
            T1[Pas-à-pas unique]
            T2[Changement de contexte]
            T3[Mode noyau]
            T4[~1M événements/s]
            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[Pas-à-pas par blocs]
            E2[Intra-processus]
            E3[Mode utilisateur]
            E4[~43M événements/s]
            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 Traditionnel fill:#ffebee,stroke:#d32f2f,stroke-width:3px
        style EhTrace fill:#e8f5e9,stroke:#388e3c,stroke-width:3px

    EhTrace atteint des performances élevées grâce à plusieurs optimisations :

    • 🎯 Pas-à-pas par branche vs pas-à-pas unique : traçage uniquement aux limites des blocs de base
    • ⚡ Opération intra-processus : aucun changement de contexte de débogueur
    • ⏱️ Gestion temporelle de l’état : le VEH maintient naturellement l’état d’exécution
    • 💾 Journalisation efficace : tampons en mémoire partagée pour un enregistrement à haut débit

    📊 Benchmark : 428 833 152 événements (32 octets chacun) capturés en 10 secondes = ~43M événements/s

    Exemple de sortie

    Trace de démonstration CSW16 de notepad.exe sans symboles :

    Flame graph sans symboles

    Graphe de blocs de base avec désassemblage Capstone :

    Graphe BB avec désassemblage

    Visualisation de la couverture de code :

    Couverture du graphe BB

    Composants

    root@kitploit:~
    graph TD
        subgraph Noyau["🎯 Composants principaux"]
            EH[EhTrace.dll<br/>Instrumentation principale]
            AC[Acleanout<br/>Extracteur de journaux]
            AG[Agasm<br/>Générateur de graphes]
            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 Outils["🔧 Outils annexes"]
            AL[Aload<br/>Injecteur de DLL]
            AP[Aprep<br/>EXE de test]
            AS[Astrace<br/>Traceur de pile]
            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["🐛 Intégration fuzzing"]
            AWA[AWinAFL<br/>Instrumentation AFL]
            style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
        end
        
        subgraph Visualisation["📊 Visualisation"]
            WPF[WPFx<br/>Visionneuse de graphes]
            DIA[Dia2Sharp<br/>Résolveur de symboles]
            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 -->|Journaux| AC
        AC -->|Données| AG
        AG -->|Graphes| WPF
        AL -->|Injection| EH
        DIA -->|Symboles| AG
        ASF -->|Traitement| AC
        AWA -->|Variante| EH
        
        style Noyau fill:#f3e5f5,stroke:#7b1fa2,stroke-width:4px
        style Outils fill:#fff3e0,stroke:#ef6c00,stroke-width:4px
        style Fuzzing fill:#fbe9e7,stroke:#bf360c,stroke-width:4px
        style Visualisation fill:#e8f5e9,stroke:#388e3c,stroke-width:4px

    L’écosystème EhTrace se compose de plusieurs projets intégrés :

    Composants principaux

    • EhTrace : la DLL d’instrumentation principale (peut aussi être compilée en EXE pour les tests)
    • Acleanout : extrait les journaux de trace de la mémoire partagée créée par EhTrace
    • Agasm : outil de collage/désassemblage pour générer des graphes avec symboles et intégration Capstone

    Outils annexes

    • Aload : utilitaire d’injection de DLL
    • Aprep : exécutable de test (EhTrace compilé en EXE)
    • Astrace : utilitaires de traçage de pile
    • AKeyTest : test de séquestration de clés cryptographiques

    Intégration fuzzing

    • AWinAFL : instrumentation de fuzzing compatible AFL pour Windows

    Visualisation

    • WPFx : visualisation basée sur WPF utilisant la bibliothèque de graphes MSAGL
    • Dia2Sharp : wrapper C# pour DIA2, destiné au traitement des symboles
    • TestDump2 : application de test pour Dia2Sharp
    • Amerger : utilitaires de fusion de journaux
    • AStackFolding : pliage de traces de pile pour la génération de flame graphs

    Prérequis

    Exigences de compilation

    • Visual Studio 2015 ou version ultérieure (chaîne d’outils C++)
    • Kit de développement logiciel (SDK) Windows
    • .NET Framework (pour les outils de visualisation)

    Dépendances d’exécution

    • dbghelp.dll : résolution de symboles (incluse dans le répertoire support)
    • symsrv.dll : prise en charge du serveur de symboles (incluse dans le répertoire support)
    • Capstone : moteur de désassemblage (bibliothèques dans le répertoire support)
    • MSAGL : visualisation de graphes (Microsoft Automatic Graph Layout)

    Compilation

    1. Ouvrez EhTrace.sln dans Visual Studio
    2. Sélectionnez la configuration cible (Debug/Release) et la plateforme (x86/x64)
    3. Générez la solution

    Pour des instructions détaillées, consultez BUILDING.md

    Utilisation

    Traçage basique

    1. Compilez ou obtenez EhTrace.dll
    2. Injectez EhTrace.dll dans le processus cible à l’aide d’Aload ou de votre méthode d’injection préférée
    3. Exécutez l’application cible
    4. Collectez les données de trace avec Acleanout
    5. Visualisez les résultats avec WPFx ou vos propres outils d’analyse

    Exemple de flux de travail

    root@kitploit:~
    # Compilation d'EhTrace
    msbuild EhTrace.sln /p:Configuration=Release /p:Platform=x64
    
    # Injection dans la cible
    Aload.exe target.exe EhTrace.dll
    
    # Collecte des données de trace
    Acleanout.exe > trace.log
    
    # Analyse avec Agasm
    Agasm.exe trace.log output.graph
    

    Pour une documentation complète, consultez USAGE.md

    Configuration

    EhTrace prend en charge la configuration à l’exécution via le framework BlockFighters. Configurez le comportement de traçage en modifiant la configuration des fighters dans votre build.

    Fighters disponibles :

    • RoP Fighter : détecte les chaînes de gadgets ROP
    • Key Escrow Fighter : intercepte les opérations cryptographiques
    • AFL Fighter : fournit l’instrumentation de fuzzing
    • Fighters personnalisés : implémentez votre propre logique d’analyse

    Développement

    Structure du projet

    root@kitploit:~
    EhTrace/
    ├── EhTrace/          # DLL d’instrumentation principale
    ├── prep/             # Outils et utilitaires annexes
    ├── vis/              # Composants de visualisation
    ├── support/          # Dépendances et ressources
    ├── doc/              # Documentation
    └── afl-fuzz/         # Intégration fuzzing AFL
    

    Fichiers sources clés

    • EhTrace.cpp : gestionnaire VEH principal et logique centrale
    • BlockFighters.cpp : implémentation du framework Fighter
    • Config.cpp : configuration et gestion des symboles
    • GlobLog.cpp : journalisation en mémoire partagée
    • KeyEscrow.cpp : interception de clés cryptographiques
    • RoP-Defender.cpp : logique de détection ROP

    Licence

    Ce projet est sous licence GNU Affero General Public License v3.0 – consultez le fichier LICENSE pour plus de détails.

    Copyright (C) 2014-2016 Shane Macaulay

    Contribution

    Les contributions sont les bienvenues ! Veuillez vous assurer que votre code respecte le style existant et inclut les tests appropriés.

    Auteur

    Shane Macaulay ([email protected])

    Remerciements

    • Framework de désassemblage Capstone
    • Microsoft Automatic Graph Layout (MSAGL)
    • Framework de fuzzing AFL
    • La communauté de recherche en sécurité

    Références

    Pour plus de détails techniques, consultez :

    • ARCHITECTURE.md – Documentation de l’architecture technique
    • doc/ – Documentation et présentations supplémentaires