Salta ai contenuti

TinyTracer - Cheatsheet API/Instruction Tracer per Unpacking

TinyTracer - Cheatsheet API/Instruction Tracer per Unpacking

TinyTracer (by hasherezade) è uno strumento di dynamic tracing costruito su Intel Pin. Esegue un eseguibile target e produce un tracelog di API call e istruzioni selezionate, loggando ogni evento come un offset relativo al modulo (RVA) così l”output rimane significativo anche per codice rilocalizzato. Poiché Pin strumenta a basso livello, TinyTracer è ininfluenzato dalla maggior parte dei trucchi anti-debug che uno stub packer usa, che lo rende eccellente per individuare il Original Entry Point (OEP) di un campione e osservare cosa effettivamente fa.

Per authorized malware analysis. Esegui campioni untrusted solo in una sandbox VM isolata.

Requisiti

  • Intel Pin (il dynamic binary instrumentation framework)
  • Windows (x86/x64) analysis VM
  • La TinyTracer.dll compilata di TinyTracer (Pintool)

Installazione

PassoCome
Get PinScarica Intel Pin e imposta PIN_ROOT
Get TinyTracerScarica una release o build il Pintool
Helper scriptsUsa i bundled run_me.bat / installer helpers
VerificaEsegui contro un EXE noto e controlla l”output .tag/log

Esecuzione di un Trace

# Invocazione concettuale (via l''helper bundled o pin direttamente)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
FlagScopo
-t TinyTracer.dllCarica TinyTracer come Pintool
-o FILEPercorso output tracelog (.tag)
-m MODULELimita il tracing a un modulo
-bTraccia basic blocks / eventi più granulari
-- target argsIl programma da tracciare e i suoi argomenti

Cosa Contiene il Tracelog

EntrySignificato
RVA;called: FUNCUna API call, in un indirizzo module-relativo
Section transitionsEsecuzione che si muove tra sezioni (unpacking)
TLS callbacksEarly anti-analysis/execution hooks
Sub-callsOpzionalmente, internal call targets

Il logging basato su RVA è la chiave: anche dopo che un packer unpacca e salta in nuovo codice, gli entry rimangono ancorati al modulo così puoi mapparli back in un disassembler.

Trovare l”OEP

Il classico uso: osserva dove l”esecuzione atterra dopo che lo stub packer finisce.

PassoCosa cercare
1Esegui il campione packed sotto TinyTracer
2Osserva un salto in una sezione precedentemente-non-scritta
3I primi “veri” API bursts (GetModuleHandle, etc.) marcano il codice unpacked
4Nota l”RVA — quella regione è il tuo candidato OEP
5Dumpa a quel punto (e.g. con PE-sieve) e analizza staticamente

Integrazione col Toolkit

ToolRuolo insieme a TinyTracer
PE-sieveDumpa il modulo unpacked trovato all”OEP
x64dbgImposta un breakpoint all”RVA dell”OEP per analisi più profonda
Detect It EasyIdentifica il packer prima di tracciare
GhidraMappa gli RVA tracciati al disassembly

Workflow Comuni

# Behavioral trace dell''utilizzo API di un campione
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → review sample.tag per sequenze API sospette (crypto, network, injection)

# OEP hunting per un packer sconosciuto
# 1) trace, 2) trova il section-transition nel codice unpacked,
# 3) PE-sieve per dumpare, 4) analizza il binario pulito

TinyTracer vs Approcci Correlati

AspettoTinyTracerx64dbg (manual)API Monitor
BasisPin instrumentationInteractive debuggerAPI hooking
Anti-debug resistanceHighNeeds ScyllaHideModerate
OutputRVA tracelogInteractiveLive API log
Best forAutomated OEP/behavior tracingHands-on steppingWatching API calls

Risorse