Zum Inhalt springen

TinyTracer - API/Instruction-Tracer zum Auspacken-Spickzettel

TinyTracer - API/Instruction-Tracer zum Auspacken-Spickzettel

TinyTracer (von hasherezade) ist ein dynamisches Tracing-Tool, das auf Intel Pin gebaut ist. Es führt eine ausführbare Zieldatei aus und produziert ein Tracelog von API-Aufrufen und ausgewählten Anweisungen, wobei jedes Ereignis als Offset relativ zum Modul (RVA) loggt, sodass die Ausgabe auch für verlegte Code sinnvoll bleibt. Da Pin auf niedriger Ebene instrumentiert, ist TinyTracer unbeeindruckt von den meisten Anti-Debug-Tricks, die ein Packer-Stub verwendet, was es ausgezeichnet zum Lokalisieren des Original Entry Point (OEP) eines Samples und zum Beobachten, was es tatsächlich tut, macht.

Nur für autorisierte Malware-Analyse. Führen Sie nicht vertrauenswürdige Samples nur in einer isolierten VM/Sandbox aus.

Anforderungen

  • Intel Pin (das dynamische binäre Instrumentierungs-Framework)
  • Windows (x86/x64) Analyse-VM
  • Kompiliertes TinyTracer TinyTracer.dll (Pintool)

Installation

SchrittWie
Get PinIntel Pin herunterladen und PIN_ROOT setzen
Get TinyTracerEin Release herunterladen oder das Pintool bauen
Helper-SkripteGebündelte run_me.bat / Installer-Helper verwenden
VerifizierenGegen eine bekannte EXE ausführen und .tag/Log-Ausgabe überprüfen

Einen Trace ausführen

# Konzeptioneller Aufruf (über den gebündelten Helper oder Pin direkt)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
FlagZweck
-t TinyTracer.dllTinyTracer als Pintool laden
-o FILETracelog (.tag)-Pfad-Ausgabe
-m MODULETracing auf ein Modul begrenzen
-bBasic Blocks / detailliertere Events tracen
-- target argsDas zu verfolgende Programm und seine Argumente

Was das Tracelog enthält

EintragBedeutung
RVA;called: FUNCEin API-Aufruf, unter einer Modul-relativen Adresse
Section-ÜbergängeAusführung zwischen Abschnitten (Unpacking)
TLS-CallbacksFrühe Anti-Analyse/Ausführungs-Hooks
Sub-AufrufeOptional interne Call-Ziele

Die RVA-basierte Protokollierung ist der Schlüssel: Auch nachdem ein Packer auspackt und in neuen Code springt, bleiben Einträge an das Modul verankert, sodass Sie sie in einem Disassembler zurückabbilden können.

OEP finden

Der klassische Verwendungsfall: Beobachten Sie, wo die Ausführung nach Abschluss des Packer-Stubs landet.

SchrittWorauf zu suchen
1Führe das gepackte Sample unter TinyTracer aus
2Beobachte einen Sprung in einen zuvor nicht geschriebenen Abschnitt
3Die erste “echte” API-Explosionen (GetModuleHandle, usw.) kennzeichnen ungepackten Code
4Notiere die RVA — diese Region ist dein OEP-Kandidat
5Dump an diesem Punkt (z.B. mit PE-sieve) und analysiere statisch

Integration mit dem Toolkit

ToolRolle neben TinyTracer
PE-sieveDump das ungepackte Modul am OEP gefunden
x64dbgBreakpoint am OEP-RVA für tiefere Analyse setzen
Detect It EasyPacker vor dem Tracing identifizieren
GhidraVerfolgte RVAs der Disassembly zuordnen

Häufige Workflows

# Behavioral-Trace der API-Nutzung eines Samples
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → sample.tag auf verdächtige API-Sequenzen (Krypto, Netzwerk, Injection) überprüfen

# OEP-Jagd für einen unbekannten Packer
# 1) trace, 2) find the section-transition in ungepackter Code,
# 3) PE-sieve zum Dump, 4) analyzed die saubere Binärdatei

TinyTracer im Vergleich zu verwandten Ansätzen

AspektTinyTracerx64dbg (manuell)API Monitor
BasisPin-InstrumentierungInteraktiver DebuggerAPI-Hooking
Anti-Debug-WiderstandHochBenötigt ScyllaHideModerat
AusgabeRVA-TracelogInteraktivLive-API-Log
Best fürAutomatisiertes OEP/Behavior-TracingHands-On-SteppingBeobachten von API-Aufrufen

Ressourcen