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

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.
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.
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
EhTrace fonctionne via un pipeline sophistiqué :
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.
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 :
📊 Benchmark : 428 833 152 événements (32 octets chacun) capturés en 10 secondes = ~43M événements/s
Trace de démonstration CSW16 de notepad.exe sans symboles :

Graphe de blocs de base avec désassemblage Capstone :

Visualisation de la couverture de code :
