Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
drltrace — Drltrace est un traceur d'appels de bibliothèque pour les applications Windows et Linux. | Kitploit
Outils/GitHubGitHub/mxmssh/drltrace
Analyse Dynamique (Sandboxing)Rétro-ingénierieDébogueursAnalyse de MalwareAnalyse de Binaires
GitHubmxmssh/drltrace

drltrace

Drltrace est un traceur d'appels de bibliothèque pour les applications Windows et Linux.

Voir le dépôt
4197180il y a 6 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Drltrace

Build de test Windows build status

Build de test Linux Build Status

Drltrace est un traceur dynamique d'appels API pour les applications Windows et Linux. Drltrace est construit au-dessus du DynamoRIO, un framework d'instrumentation binaire dynamique. Drltrace a été initialement implémenté par Derek Bruening et distribué avec les frameworks DynamoRIO et DrMemory. Ce dépôt contient une version autonome de drltrace avec des scripts et du matériel supplémentaires sur la façon de l'utiliser pour l'analyse de logiciels malveillants. La version compilée peut être téléchargée ici.

Utilisation

L'utilisation de drltrace est très simple. Un utilisateur doit spécifier un répertoire de journalisation et le nom d'un processus cible de la manière suivante :

drltrace -logdir . -- calc.exe

C'est tout, l'outil injectera les DLL requises dans le processus cible, démarrera l'instrumentation et, en parallèle, enregistrera des informations sur tous les appels de bibliothèque exécutés dans le processus cible :

~~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

Le format de la sortie est simple et peut être facilement analysé par un script externe :

~~[id du thread]~~ [nom de la DLL]![nom de l'appel API]
arg [numéro d'arg] : [valeur] (type=[nom du type Windows], size=[taille de l'arg])
and return to module id:[id unique du module], offset:[offset en mémoire]

L'analyse avec grep peut être effectuée lorsque l'argument -grepable est utilisé ; cela imprime les noms de fonctions et les arguments sur une seule ligne :

~~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 table des identifiants uniques des modules est imprimée à la fin du fichier journal :

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 peut facilement filtrer les appels inter-bibliothèques et n'afficher que les appels API effectués à partir du module principal (ou du tas) d'une application cible en spécifiant l'option -only_from_app, ce qui est très utile dans le cas d'applications générant d'énormes journaux. Pour un contrôle plus granulaire, l'option -filter permet à l'utilisateur de spécifier un fichier de configuration de filtre afin de filtrer les fonctions autorisées spécifiques (liste blanche) ou d'ignorer les fonctions de la liste noire (voir le fichier filter.config pour des exemples). Drltrace dispose également de plusieurs scripts externes utiles pour filtrer les appels API pour une certaine bibliothèque, n'afficher que les appels API et les chaînes potentiellement intéressants.

Licence

Les modules principaux de Drltrace sont distribués sous licence BSD.

Certains fichiers nécessaires à drltrace sont distribués sous LGPL. Voir les fichiers source pour plus de détails.

Motivation

L'analyse de logiciels malveillants n'est pas une tâche facile. Des packagers logiciels sophistiqués comme Themida et Armadillo, ainsi que des dizaines de packagers non nommés écrits par des auteurs de malwares, plus le chiffrement du code et des données, facilitent considérablement (dans certains cas rendent complètement impossible) la rétro-ingénierie statique de tels échantillons, compliquant la vie des analystes de malwares. Dans ce cas, le traçage des appels API peut réduire considérablement le temps nécessaire pour comprendre l'intention malveillante réelle et révéler de nombreux détails techniques sur le code malveillant protégé.

Bien que la technique traditionnelle de hooking d'API ait été implémentée avec succès dans plusieurs solutions, cette approche est bien étudiée par les auteurs de malwares et peut être facilement détectée et/ou contournée. De plus, ces outils sont distribués sous forme d'applications GUI lourdes et autonomes (en tant que produits propriétaires), qui ne sont souvent pas faciles à intégrer dans un flux de travail d'analyse de malwares existant.

Si l'on regarde le monde Linux, il existe un outil formidable appelé ltrace. En utilisant une seule commande bash, nous pouvons facilement obtenir la trace complète des appels API d'un exécutable donné.

Pourquoi n'avons-nous pas un tel outil (comme ltrace sous Linux) pour Windows, qui soit également transparent face aux techniques anti-recherche utilisées par les malwares modernes ?

Il s'avère qu'il existe une technique qui peut nous aider à avoir un tel outil pour Windows et à tracer les appels API de manière transparente par rapport au programme exécuté. Cette technique s'appelle l'instrumentation binaire dynamique (DBI). La DBI est une technique d'analyse du comportement d'une application binaire au moment de l'exécution par l'injection de code d'instrumentation.

Cependant, l'application de la DBI à l'analyse de malwares est injustement limitée à l'automatisation du dépaquetage et à quelques preuves de concept pour le traçage d'instructions, de blocs de base et d'appels de fonctions. À notre connaissance, drltrace est le premier outil de traçage d'appels API basé sur la DBI pouvant être utilisé en pratique pour l'analyse de malwares. Nous avons fourni plusieurs exemples d'analyse de malwares dans notre wiki où nous avons décrit comment drltrace a permis de révéler en quelques minutes de nombreux détails techniques internes sur des échantillons malveillants sophistiqués sans même avoir à démarrer IDA ou un débogueur.

Télécharger l’outil