TinyTracer - Rastreador de API/Instrucciones para Desempaquetamiento
TinyTracer (por hasherezade) es una herramienta de rastreo dinámico construida sobre Intel Pin. Ejecuta un ejecutable destino y produce un registro de rastreo de llamadas a API e instrucciones seleccionadas, registrando cada evento como un offset relativo al módulo (RVA) para que la salida siga siendo significativa incluso para código reubicado. Porque Pin instrumenta a un nivel bajo, TinyTracer no se ve afectado por la mayoría de trucos anti-depuración que usa el stub del empaquetador, lo que lo hace excelente para localizar el Original Entry Point (OEP) de una muestra y ver qué hace realmente.
Para análisis de malware autorizado. Ejecuta muestras no confiables solo en una VM/sandbox aislada.
Requirements
- Intel Pin (el framework de instrumentación binaria dinámica)
- VM de análisis de Windows (x86/x64)
- TinyTracer compilado
TinyTracer.dll (Pintool)
Installation
| Paso | Cómo |
|---|
| Obtén Pin | Descarga Intel Pin y establece PIN_ROOT |
| Obtén TinyTracer | Descarga una versión o compila el Pintool |
| Scripts auxiliares | Usa los run_me.bat agrupados / ayudantes de instalación |
| Verificar | Ejecuta contra un EXE conocido y verifica la salida .tag/log |
Running a Trace
# Invocación conceptual (vía el ayudante agrupado o pin directamente)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
| Flag | Propósito |
|---|
-t TinyTracer.dll | Carga TinyTracer como el Pintool |
-o FILE | Ruta del registro de rastreo (.tag) |
-m MODULE | Limita el rastreo a un módulo |
-b | Rastrea bloques básicos / eventos más granulares |
-- target args | El programa a rastrear y sus argumentos |
What the Tracelog Contains
| Entrada | Significado |
|---|
RVA;called: FUNC | Una llamada a API, en una dirección relativa al módulo |
| Transiciones de sección | Ejecución moviéndose entre secciones (desempaquetamiento) |
| Retrollamadas TLS | Ganchos de anti-análisis/ejecución temprana |
| Sub-llamadas | Opcionalmente, destinos de llamadas internas |
El registro basado en RVA es clave: incluso después de que un empaquetador desempaquet y salta a nuevo código, las entradas permanecen ancladas al módulo para que puedas mapearlas de vuelta en un desensamblador.
Finding the OEP
El uso clásico: observa dónde cae la ejecución después de que el stub del empaquetador termina.
| Paso | Qué buscar |
|---|
| 1 | Ejecuta la muestra empaquetada bajo TinyTracer |
| 2 | Observa un salto a una sección previamente no escrita |
| 3 | Los primeros “reales” ráfagas de API (GetModuleHandle, etc.) marcan código desempaquetado |
| 4 | Anota el RVA — esa región es tu candidato OEP |
| 5 | Vuelca en ese punto (p. ej. con PE-sieve) y analiza estáticamente |
| Herramienta | Rol junto a TinyTracer |
|---|
| PE-sieve | Vuelca el módulo desempaquetado encontrado en el OEP |
| x64dbg | Establece un punto de ruptura en el OEP RVA para análisis más profundo |
| Detect It Easy | Identifica el empaquetador antes de rastrear |
| Ghidra | Mapea RVA rastreados al desensambly |
Common Workflows
# Rastreo conductual del uso de API de una muestra
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → revisa sample.tag para secuencias sospechosas de API (cripto, red, inyección)
# Búsqueda OEP para un empaquetador desconocido
# 1) rastrear, 2) encontrar la transición de sección en código desempaquetado,
# 3) PE-sieve para volcar, 4) analizar el binario limpio
| Aspecto | TinyTracer | x64dbg (manual) | API Monitor |
|---|
| Basis | Instrumentación Pin | Depurador interactivo | API hooking |
| Anti-debug resistance | Alta | Necesita ScyllaHide | Moderada |
| Salida | Registro de rastreo RVA | Interactivo | Registro de API en directo |
| Mejor para | Rastreo automático OEP/comportamiento | Stepping a mano | Observar llamadas a API |
Resources