Pular para o conteúdo

TinyTracer - Cheatsheet do Tracer de API/Instrução para Unpacking

TinyTracer - Cheatsheet do Tracer de API/Instrução para Unpacking

TinyTracer (por hasherezade) é uma ferramenta de rastreamento dinâmico construída no Intel Pin. Executa um executável alvo e produz um tracelog de chamadas de API e instruções selecionadas, registrando cada evento como um offset relativo ao módulo (RVA) para que a saída permaneça significativa mesmo para código realocado. Como Pin instrumenta em nível baixo, TinyTracer não é afetado pela maioria dos truques anti-debug que o stub de um empacotador usa, o que o torna excelente para identificar o Original Entry Point (OEP) de uma amostra e observar o que ela realmente faz.

Para análise de malware autorizada. Execute amostras não confiáveis apenas em uma VM/sandbox isolada.

Requisitos

  • Intel Pin (o framework de binary instrumentation dinâmico)
  • Análise VM do Windows (x86/x64)
  • TinyTracer.dll compilado do TinyTracer (Pintool)

Instalação

StepComo
Get PinFaça download do Intel Pin e defina PIN_ROOT
Get TinyTracerFaça download de uma release ou construa o Pintool
Helper scriptsUse o run_me.bat / helper installers fornecidos
VerificarExecute contra um EXE conhecido e verifique saída .tag/log

Executando um Rastreamento

# Invocação conceitual (via helper ou pin diretamente)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
FlagPropósito
-t TinyTracer.dllCarregue TinyTracer como o Pintool
-o FILECaminho do tracelog de saída (.tag)
-m MODULELimite rastreamento a um módulo
-bRastreie basic blocks / eventos mais granulares
-- target argsO programa para rastrear e seus argumentos

O Que o Tracelog Contém

EntrySignificado
RVA;called: FUNCUma chamada de API, em um endereço relativo ao módulo
Section transitionsExecução movendo-se entre seções (unpacking)
TLS callbacksHooks anti-análise/execução antecipados
Sub-callsOpcionalmente, alvos de chamada interna

O registro baseado em RVA é a chave: mesmo depois que um empacotador desempacota e salta para novo código, as entradas permanecem ancoradas ao módulo para que você possa mapeá-las de volta em um disassembler.

Encontrando o OEP

O uso clássico: observe onde a execução desembarca após o stub do empacotador terminar.

StepO que procurar
1Execute a amostra empacotada sob TinyTracer
2Veja um jump em uma seção previamente não escrita
3Os primeiros “bursts” reais de API (GetModuleHandle, etc.) marcam código desempacotado
4Anote o RVA — essa região é seu candidato a OEP
5Dump nesse ponto (ex. com PE-sieve) e analise estaticamente

Integração com o Toolkit

FerramentaPapel ao lado do TinyTracer
PE-sieveDump do módulo desempacotado encontrado no OEP
x64dbgDefina um breakpoint no RVA do OEP para análise mais profunda
Detect It EasyIdentifique o empacotador antes de rastrear
GhidraMapeie RVAs rastreados para disassembly

Fluxos de Trabalho Comuns

# Rastreamento comportamental de uso de API de uma amostra
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → revise sample.tag para sequências de API suspeitas (crypto, network, injection)

# OEP hunting para um empacotador desconhecido
# 1) rastreie, 2) encontre a transição de seção para código desempacotado,
# 3) PE-sieve para dump, 4) analise o binário limpo

TinyTracer vs Abordagens Relacionadas

AspectoTinyTracerx64dbg (manual)API Monitor
BasePin instrumentationInteractive debuggerAPI hooking
Anti-debug resistanceAltaPrecisa de ScyllaHideModerada
OutputRVA tracelogInteractiveLive API log
Melhor paraRastreamento automático de OEP/comportamentoStepping manualObservação de chamadas de API

Recursos