Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
drltrace — Drltrace ist ein Bibliotheksaufruf-Tracer für Windows- und Linux-Anwendungen. | Kitploit
Tools/GitHubGitHub/mxmssh/drltrace
Dynamische Analyse (Sandboxing)Reverse EngineeringDebuggerMalware-AnalyseBinäranalyse
GitHubmxmssh/drltrace

drltrace

Drltrace ist ein Bibliotheksaufruf-Tracer für Windows- und Linux-Anwendungen.

Repository anzeigen
4197180vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Drltrace

Windows-Testbuild build status

Linux-Testbuild Build Status

Drltrace ist ein dynamischer API-Aufruf-Tracer für Windows- und Linux-Anwendungen. Drltrace basiert auf dem dynamischen Binary-Instrumentierungs-Framework DynamoRIO. Drltrace wurde ursprünglich von Derek Bruening implementiert und mit den Frameworks DynamoRIO und DrMemory verteilt. Dieses Repository enthält eine eigenständige Version von drltrace mit zusätzlichen Skripten und Materialien zur Verwendung bei der Analyse von Malware. Die Release-Version kann hier heruntergeladen werden.

Verwendung

Die Verwendung von drltrace ist sehr einfach. Ein Benutzer muss ein Log-Verzeichnis und den Namen eines Zielprozesses wie folgt angeben:

drltrace -logdir . -- calc.exe

Das war's, das Tool injiziert die erforderlichen DLLs in den Zielprozess, startet die Instrumentierung und protokolliert parallel Informationen über alle Bibliotheksaufrufe, die im Zielprozess ausgeführt werden:

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

Das Format der Ausgabe ist einfach und kann leicht von einem externen Skript geparst werden:

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

Das Parsen mit grep ist möglich, wenn das Argument -grepable verwendet wird; dies gibt die Funktionsnamen und Argumente alle in einer Zeile aus:

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

Die Tabelle der eindeutigen Modulkennungen wird am Ende der Logdatei ausgegeben:

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 kann problemlos Zwischenbibliotheksaufrufe herausfiltern und nur API-Aufrufe aus dem Hauptmodul (oder aus dem Heap) einer Zielanwendung ausgeben, indem die Option -only_from_app angegeben wird, was bei Anwendungen, die enorme Logs erzeugen, sehr nützlich ist. Für eine feinere Kontrolle ermöglicht die Option -filter dem Benutzer, eine Filterkonfigurationsdatei anzugeben, um bestimmte Whitelist-Funktionen zu filtern oder Blacklist-Funktionen zu ignorieren (siehe die Datei filter.config für Beispiele). Drltrace verfügt außerdem über mehrere nützliche externe Skripte, um API-Aufrufe für eine bestimmte Bibliothek zu filtern, nur potenziell interessante API-Aufrufe und Zeichenfolgen auszugeben.

Lizenz

Die Hauptmodule von Drltrace werden unter BSD vertrieben.

Einige für drltrace erforderliche Dateien werden unter LGPL vertrieben. Siehe Quelldateien für weitere Details.

Motivation

Malware-Analyse ist keine einfache Aufgabe. Sophisticierte Software-Packer wie Themida und Armadillo und natürlich Dutzende unbenannter Packer, die von Malware-Autoren geschrieben wurden, sowie Code- und Datenverschlüsselung erleichtern (in einigen Fällen machen sie es völlig unmöglich) das statische Reverse Engineering solcher Proben erheblich, was das Leben von Malware-Analysten erschwert. In solchen Fällen kann die Verfolgung von API-Aufrufen die Zeit, die zum Verständnis der tatsächlichen bösartigen Absicht erforderlich ist, erheblich reduzieren und viele technische Details über den geschützten bösartigen Code offenlegen.

Während die traditionelle Technik des API-Hookings in mehreren Lösungen erfolgreich implementiert wurde, ist der Ansatz von Malware-Autoren gut untersucht und kann leicht erkannt und/oder umgangen werden. Darüber hinaus werden diese Tools als eigenständige, schwergewichtige GUI-Anwendungen (als proprietäre Produkte) vertrieben, die oft nicht einfach in bestehende Malware-Analyse-Workflows integriert werden können.

Wenn wir uns die Linux-Welt ansehen, gibt es ein wunderbares Tool namens ltrace. Mit einem einzigen Befehl in der Bash können wir die vollständige Ablaufverfolgung der API-Aufrufe eines bestimmten ausführbaren Programms erhalten.

Warum haben wir kein solches Tool (wie ltrace unter Linux) für Windows, das auch transparent gegenüber Anti-Research-Tricks moderner Malware ist?

Es stellt sich heraus, dass es eine Technik gibt, die uns helfen kann, ein solches Tool für Windows zu haben und API-Aufrufe transparent gegenüber dem ausgeführten Programm zu verfolgen. Diese Technik wird dynamische Binary-Instrumentierung, kurz DBI, genannt. DBI ist eine Technik zur Analyse des Verhaltens einer binären Anwendung zur Laufzeit durch die Injektion von Instrumentierungscode.

Allerdings ist die Anwendung von DBI für die Malware-Analyse ungerechtfertigt eingeschränkt durch die Automatisierung des Entpackens und verschiedene Proof-of-Concepts für die Ablaufverfolgung von Anweisungen, Basisblöcken und Funktionsaufrufen. Unseres Wissens nach ist drltrace das erste Tool zur API-Aufrufverfolgung auf Basis von DBI, das in der Praxis für die Malware-Analyse eingesetzt werden kann. Wir haben mehrere Beispiele für die Malware-Analyse in unserem Wiki bereitgestellt, in denen wir beschrieben haben, wie drltrace es ermöglichte, in wenigen Minuten viele interne technische Details über anspruchsvolle bösartige Proben zu enthüllen, ohne IDA oder einen Debugger zu starten.

Tool herunterladen