Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
drltrace — Drltrace è un tracciatore di chiamate di libreria per applicazioni Windows e Linux. | Kitploit
Strumenti/GitHubGitHub/mxmssh/drltrace
Analisi Dinamica (Sandboxing)Reverse EngineeringDebuggerAnalisi MalwareAnalisi di Binari
GitHubmxmssh/drltrace

drltrace

Drltrace è un tracciatore di chiamate di libreria per applicazioni Windows e Linux.

Vedi Repository
41971806 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Drltrace

Build di test per Windows Stato della build

Build di test per Linux Stato della build

Drltrace è un tracciatore dinamico di chiamate API per applicazioni Windows e Linux. Drltrace è costruito sopra il framework di instrumentazione binaria dinamica DynamoRIO. Drltrace è stato inizialmente implementato da Derek Bruening e distribuito con i framework DynamoRIO e DrMemory. Questo repository contiene una versione standalone di drltrace con script aggiuntivi e materiali su come utilizzarlo per l'analisi dei malware. La build di rilascio può essere scaricata qui.

Utilizzo

L'utilizzo di drltrace è molto semplice. Un utente deve specificare una directory di log e il nome di un processo target nel seguente modo:

drltrace -logdir . -- calc.exe

Tutto qui, lo strumento inietterà le DLL necessarie nel processo target, avvierà l'instrumentazione e in parallelo registrerà informazioni su tutte le chiamate di libreria eseguite nel processo target:

~~43600~~ msvcrt.dll!__wgetmainargs
    arg 0: 0x010d2364
    arg 1: 0x010d2368
    and return to module id:0, offset:0x193a
~~43600~~ ntdll.dll!EtwEventRegister
    arg 0: 0x002ff994
    arg 1: 0x010d1490
    and return to module id:0, offset:0x157e
~~43600~~ ntdll.dll!EtwEventSetInformation
    arg 0: 0x007b4b40
    arg 1: 0x00000033
    and return to module id:0, offset:0x15a1
~~43600~~ SHELL32.dll!ShellExecuteW
    arg 0: <null> (type=<unknown>, size=0x0)
    arg 1: <null> (type=wchar_t*, size=0x0)
    arg 2: calculator:// (type=wchar_t*, size=0x0)
    arg 3: <null> (type=wchar_t*, size=0x0)
    arg 4: <null> (type=wchar_t*, size=0x0)
    arg 5: 0x1 (type=int, size=0x4)
    and return to module id:0, offset:0x167d

Il formato dell'output è semplice e può essere facilmente analizzato da uno script esterno:

~~[thread id]~~ [dll name]![api call name]
arg [arg #]: [value] (type=[Windows type name], size=[size of arg])
and return to module id:[module unique id], offset:[offset in memory]

L'analisi con grep può essere eseguita quando viene utilizzato l'argomento -grepable; questo stampa i nomi delle funzioni e gli argomenti tutti su una riga:

~~4824~~ KERNELBASE.dll!CreateFileW {0: C:\Windows\Fonts\staticcache.dat (type=wchar_t*, size=0x0)} {1: 0x80000000 (type=DWORD, size=0x4)} {2: 0x3 (type=DWORD, size=0x4)} {3: 0x005cde8c (type=<unknown>*, size=0x0)} {4: 0x3 (type=DWORD, size=0x4)} {5: 0x80 (type=DWORD, size=0x4)}

La tabella degli identificatori unici dei moduli viene stampata alla fine del file di log:

Module Table: version 3, count 70
Columns: id, containing_id, start, end, entry, checksum, timestamp, path
  0,   0, 0x010d0000, 0x010da000, 0x010d1b80, 0x0000f752, 0xb5fe3575,  C:\Windows\SysWOW64\calc.exe
  1,   1, 0x6d4c0000, 0x6d621000, 0x6d563940, 0x00136d65, 0x59ce1b0b,  C:\Users\Max\Downloads\drltrace\drltrace\dynamorio\lib32\release\dynamorio.dll
  2,   2, 0x73800000, 0x73975000, 0x7380dbf7, 0x00000000, 0x59ce1b0f,  C:\Users\Max\Downloads\drltrace\drltrace\bin\release/drltracelib.dll
  3,   3, 0x742f0000, 0x742fa000, 0x742f2a00, 0x0000c877, 0x0adc52c1,  C:\Windows\System32\CRYPTBASE.dll
  4,   4, 0x74300000, 0x74320000, 0x7430c9b0, 0x0002c617, 0x245970b4,  C:\Windows\System32\SspiCli.dll
  5,   5, 0x74410000, 0x74431000, 0x74416900, 0x0002a940, 0x88a53c1d,  C:\Windows\System32\GDI32.dll
  6,   6, 0x74440000, 0x74500000, 0x7446fb20, 0x000cc410, 0xd343d532,  C:\Windows\System32\RPCRT4.dll
  7,   7, 0x74500000, 0x74525000, 0x745047d0, 0x00026737, 0xa39c8991,  C:\Windows\System32\IMM32.DLL
  8,   8, 0x74550000, 0x745c7000, 0x7456e8a0, 0x00081857, 0x73b971e1,  C:\Windows\System32\advapi32.dll
  9,   9, 0x748f0000, 0x74929000, 0x748febd0, 0x00045303, 0xa58be652,  C:\Windows\System32\cfgmgr32.dll
 10,  10, 0x74930000, 0x75c78000, 0x74aa09d0, 0x01377aa6, 0x4b39926b,  C:\Windows\System32\SHELL32.dll

Drltrace può facilmente filtrare le chiamate tra librerie e stampare solo le chiamate API eseguite dal modulo principale (o dall'heap) di un'applicazione target specificando l'opzione -only_from_app, molto utile nel caso di applicazioni che generano log enormi. Per un controllo più granulare, l'opzione -filter consente all'utente di specificare un file di configurazione del filtro per includere solo funzioni consentite o ignorare funzioni bloccate (vedi il file filter.config per esempi). Drltrace dispone anche di diversi utili script esterni per filtrare le chiamate API per una determinata libreria, stampare solo le chiamate API potenzialmente interessanti e le stringhe.

Licenza

I moduli principali di Drltrace sono distribuiti sotto licenza BSD.

Alcuni file necessari per drltrace sono distribuiti sotto LGPL. Vedi i file sorgente per maggiori dettagli.

Motivazione

L'analisi dei malware non è un compito facile. I packer software sofisticati come Themida e Armadillo e naturalmente decine di packer senza nome scritti dagli autori di malware, insieme alla crittografia del codice e dei dati, facilitano notevolmente (in alcuni casi rendendolo completamente impossibile) il reverse engineering statico di tali campioni, complicando la vita degli analisti di malware. In questo caso, la tracciatura delle chiamate API può ridurre significativamente il tempo necessario per comprendere l'effettivo intento malevolo e rivelare molti dettagli tecnici sul codice malevolo protetto.

Mentre la tecnica tradizionale dell'API-hooking è stata implementata con successo in diverse soluzioni, l'approccio è ben studiato dagli autori di malware e può essere facilmente rilevato e/o aggirato. Inoltre, questi strumenti sono distribuiti come applicazioni GUI standalone pesanti (come prodotti proprietari) che non sono spesso facili da integrare nel flusso di lavoro esistente per l'analisi dei malware.

Se guardiamo al mondo Linux, c'è un meraviglioso strumento chiamato ltrace. Usando un singolo comando bash, possiamo facilmente ottenere la traccia completa delle chiamate API di un determinato eseguibile.

Perché non abbiamo uno strumento simile (come ltrace in Linux) per Windows che sia anche trasparente ai trucchi anti-ricerca usati dai malware moderni?

Risulta che esiste una tecnica che può aiutarci ad avere uno strumento del genere per Windows e tracciare le chiamate API in modo trasparente rispetto al programma eseguito. Questa tecnica è chiamata instrumentazione binaria dinamica, nota come DBI. DBI è una tecnica per analizzare il comportamento di un'applicazione binaria in fase di esecuzione tramite l'iniezione di codice di instrumentazione.

Tuttavia, l'applicazione della DBI per l'analisi dei malware è ingiustamente limitata all'automazione dell'unpacking e a diverse prove di concetto per la tracciatura di istruzioni, blocchi di base e chiamate di funzione. Per quanto ne sappiamo, drltrace è il primo strumento per la tracciatura delle chiamate API basato su DBI che può essere utilizzato nella pratica per l'analisi dei malware. Abbiamo fornito diversi esempi di analisi di malware nel nostro wiki in cui abbiamo descritto come drltrace ha permesso di rivelare in pochi minuti molti dettagli tecnici interni su campioni malevoli sofisticati senza nemmeno avviare IDA o un debugger.

Scarica lo strumento