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
24350il 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

  • Analyse du flux d’exécution : suivi des chemins d’exécution et du flux de contrôle
  • 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
Télécharger l’outil