TinyTracer - Cheatsheet Traceur API/Instruction pour le Déballage
TinyTracer (par hasherezade) est un outil de traçage dynamique construit sur Intel Pin. Il exécute un exécutable cible et produit un tracelog des appels API et des instructions sélectionnées, enregistrant chaque événement comme un offset par rapport au module (RVA) pour que la sortie reste significative même pour le code relocalisé. Parce que Pin instrumente au bas niveau, TinyTracer n”est pas affecté par la plupart des astuces anti-debug qu”un stub de packer utilise, ce qui le rend excellent pour identifier le Point d”Entrée Original (OEP) d”un échantillon et observer ce qu”il fait réellement.
Pour l”analyse de malwares autorisée. Exécuter les échantillons non fiables uniquement dans une VM/sandbox isolée.
Conditions Requises
- Intel Pin (la structure d”instrumentation binaire dynamique)
- VM d”analyse Windows (x86/x64)
TinyTracer.dll compilée de TinyTracer (Pintool)
Installation
| Étape | Comment |
|---|
| Obtenir Pin | Télécharger Intel Pin et définir PIN_ROOT |
| Obtenir TinyTracer | Télécharger une release ou compiler le Pintool |
| Scripts helper | Utiliser les run_me.bat / helpers d”installation fournis |
| Vérification | Exécuter contre un EXE connu et vérifier la sortie .tag/log |
Exécuter un Trace
# Invocation conceptuelle (via le helper fourni ou pin directement)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
| Drapeau | Objectif |
|---|
-t TinyTracer.dll | Charger TinyTracer comme Pintool |
-o FILE | Chemin du tracelog (.tag) |
-m MODULE | Limiter le traçage à un module |
-b | Tracer les blocs de base / événements plus granulaires |
-- target args | Le programme à tracer et ses arguments |
Ce que Contient le Tracelog
| Entrée | Signification |
|---|
RVA;called: FUNC | Un appel API, à une adresse relative au module |
| Transitions de section | L”exécution se déplaçant entre les sections (déballage) |
| Callbacks TLS | Hooks d”anti-analyse/exécution précoces |
| Appels secondaires | Optionnellement, les cibles d”appel interne |
L”enregistrement basé sur RVA est la clé : même après qu”un packer déballes et saute dans un nouveau code, les entrées restent ancrées au module pour que vous puissiez les mapper dans un disassembleur.
Trouver l”OEP
L”utilisation classique : observer où l”exécution se pose après que le stub du packer se termine.
| Étape | Ce qu”il faut chercher |
|---|
| 1 | Exécuter l”échantillon empaqueté sous TinyTracer |
| 2 | Observer un saut dans une section précédemment non écrite |
| 3 | Les premiers vrais bursts d”API (GetModuleHandle, etc.) marquent le code déballé |
| 4 | Noter le RVA — cette région est votre candidat OEP |
| 5 | Dumper à ce point (ex. avec PE-sieve) et analyser statiquement |
Intégration avec la Boîte à Outils
| Outil | Rôle aux côtés de TinyTracer |
|---|
| PE-sieve | Dumper le module déballé trouvé à l”OEP |
| x64dbg | Définir un breakpoint au RVA OEP pour l”analyse plus approfondie |
| Detect It Easy | Identifier le packer avant le traçage |
| Ghidra | Mapper les RVAs tracés au disassembly |
Flux de Travail Courants
# Trace comportemental de l''utilisation API d''un échantillon
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → examiner sample.tag pour les séquences d''API suspectes (crypto, réseau, injection)
# Chasse OEP pour un packer inconnu
# 1) tracer, 2) trouver la transition de section dans le code déballé,
# 3) PE-sieve pour dumper, 4) analyser le binaire propre
TinyTracer vs Approches Connexes
| Aspect | TinyTracer | x64dbg (manuel) | API Monitor |
|---|
| Fondement | Instrumentation Pin | Debugger interactif | Hooking API |
| Résistance anti-debug | Élevée | Nécessite ScyllaHide | Modérée |
| Sortie | Tracelog RVA | Interactif | Journal API en direct |
| Meilleur pour | Traçage OEP/comportement automatisé | Stepping pratique | Observer les appels API |
Ressources