Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
decomp2dbg — Ein Plugin, um interaktive Symbole von Ihrem Dekompiler in Ihren Debugger einzuführen. | Kitploit
Tools/GitHubGitHub/mahaloz/decomp2dbg
Statische AnalyseDynamische Analyse (Sandboxing)Reverse EngineeringDebuggerBinäranalyseBinary-Exploitation
GitHubmahaloz/decomp2dbg

decomp2dbg

Ein Plugin, um interaktive Symbole von Ihrem Dekompiler in Ihren Debugger einzuführen.

Repository anzeigen
81248vor 1 MonatVon 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

decomp2dbg

Reverse Engineering umfasst sowohl statische (Decompiler) als auch dynamische (Debugger) Analyse, dennoch werden diese Analysen oft verwendet, ohne Wissen zwischen beiden auszutauschen. Beim Reversen statischer Binärdateien kann das Wechseln zwischen Debugger-Assembly und den Symbolen, die man in der Dekompilierung wiederhergestellt hat, ineffizient sein.

decomp2dbg zielt darauf ab, die Lücke des Kontextwechsels zwischen Decompiler und Debugger zu verkleinern, indem eine generische API zur Synchronisation von Decompiler-zu-Debugger-Symbolen eingeführt wird. Im Effekt gibt dies dem Reverser die Leistungsfähigkeit seines Debuggers mit den Symbolen und Dekompilierungszeilen, die er in seinem Decompiler wiederhergestellt hat.

decomp2dbg

Interessiert zu sehen, wie decomp2dbg in der Praxis aussieht? Schauen Sie sich den aufgezeichneten Vortrag auf der CactusCon 2023 an, der das Debuggen einer fernen arm32-Binärdatei von einer x64-Maschine mit Ghidra-Symbolen zeigt.

Für aktive Hilfe treten Sie dem untenstehenden BinSync-Discord bei, wo wir decomp2dbg-Fragen beantworten:

Discord

Unterstützte Plattformen

Decompiler

  • IDA Pro (>= 9.0): Demo mit GEF
  • Binary Ninja (>= 2.4): Demo mit GEF
  • Ghidra (>= 12): Demo mit GEF
  • angr-management (>= 9.0)

Debugger

  • gdb
    • GEF
    • pwndbg
    • vanilla

Installation

Installation über pip, dann den integrierten Installer für Decompiler verwenden:

root@kitploit:~
pip3 install decomp2dbg && decomp2dbg --install 

Dies öffnet eine Eingabeaufforderung, in der Sie nach dem Pfad zu Ihrem Decompiler und Debugger Ihrer Wahl gefragt werden. Für Ghidra müssen Sie im PyGhidra-Modus starten und das Plugin (d2d_client.py) aktivieren, wie hier gezeigt. Wenn Sie die Decompiler-Seite im Binja-Plugin-Manager installiert haben, müssen Sie dennoch die Debugger-Seite mit dem obigen Befehl installieren. Hinweis: Sie müssen decomp2dbg in derselben Python-Umgebung wie Ihren Decompiler und Debugger installieren.

Hinweis: Möglicherweise müssen Sie eingehende Verbindungen auf Port 3662 (oder dem von Ihnen verwendeten Port) zulassen, damit decomp2dbg eine Verbindung zum Decompiler herstellen kann. Wenn Sie decomp2dbg mit GEF oder pwndbg installieren, ist es wichtig, dass in Ihrer ~/.gdbinit die d2d.py-Datei nach GEF oder pwndbg eingebunden wird.

Manuelle Installation

Überspringen Sie diesen Abschnitt, wenn Sie die obige Installation fehlerfrei durchführen konnten. Falls Sie das obige integrierte Skript nicht verwenden können (z. B. bei einer Nicht-WSL-Windows-Installation für den Decompiler), befolgen Sie die folgenden Schritte:

Wenn Sie nur die Decompiler-Seite benötigen, kopieren Sie das entsprechende Decompiler-Plugin in den Plugin-Ordner des Decompilers. So geht es in IDA:

Klonen Sie zunächst das Repository:

root@kitploit:~
git clone https://github.com/mahaloz/decomp2dbg.git

Installieren:

root@kitploit:~
pip install .

Kopieren Sie alle Serverdateien:

root@kitploit:~
cp ./decomp2dbg/d2d_server.py /path/to/ida/plugins/

Wenn Sie auch die gdb-Seite installieren müssen, verwenden Sie die folgende Zeile:

root@kitploit:~
cp ./decomp2dbg/d2d_client.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit

Verwendung

Starten Sie zunächst den Dekompilierungsserver in Ihrem Decompiler. Möglicherweise möchten Sie warten, bis Ihr Decompiler seine normale Analyse abgeschlossen hat, bevor Sie ihn starten. Nach der normalen Analyse kann dies mit dem Hotkey Ctrl-Shift-D oder durch Auswahl des Tabs decomp2dbg: configure im entsprechenden Plugin-Reiter erfolgen. Nach dem Start des Servers sollte eine Meldung in Ihrem Decompiler erscheinen:

root@kitploit:~
[+] Starting XMLRPC server: localhost:3662
[+] Registered decompilation server!

Führen Sie als Nächstes in Ihrem Debugger aus:

root@kitploit:~
decompiler connect <decompiler_name>

Wenn Sie den Decompiler auf einer VM oder einem anderen Rechner ausführen, können Sie optional den Host und Port für die Verbindung angeben. Hier ist ein Beispiel:

root@kitploit:~
decompiler connect ida --host 10.211.55.2 --port 3662

Sie können herausfinden, wie Sie alle Befehle verwenden, indem Sie den decompiler-Befehl mit dem Flag --help ausführen.

Die erste Verbindung kann je nach Anzahl der globalen Variablen in der Binärdatei bis zu 30 Sekunden dauern. Wenn alles gut läuft, sollten Sie sehen:

root@kitploit:~
[+] Connected to decompiler!

Wenn Sie decomp2dbg für eine Bibliothek verwenden, d. h. die Hauptbinärdatei, an die Ihr Debugger angeschlossen ist, nicht die Binärdatei ist, für die Sie Quellcode möchten, dann sollten Sie sich den Abschnitt Erweiterte Nutzung - Shared Libraries dieser README ansehen.

Dekompilierungsansicht

Bei jedem Breakpoint-Ereignis wird nun die Dekompilierung ausgegeben und die Zeile, auf der Sie sich befinden, mit der Break-Adresse verknüpft.

Funktionen und globale Variablen

Funktionen und globale Variablen aus Ihrer Dekompilierung werden nun wie normale Source-Level-Symbole in Ihr GDB eingebunden. Dies bedeutet, dass normale GDB-Befehle wie print und x nativ funktionieren:

root@kitploit:~
b sub_46340
x/10i sub_46340
root@kitploit:~
p dword_267A2C 
x dword_267A2C

Stack-Variablen, Register-Variablen, Funktionsargumente

Einige Variablen, die lokal in einer Funktion gespeichert sind, sind Stack-Variablen. Für die Variablen, die auf den Stack oder Register abgebildet werden können, importieren wir sie als Convenience-Variablen. Sie können deren Inhalt wie eine normale GDB-Convenience-Variable anzeigen:

root@kitploit:~
p $v4

Stack-Variablen speichern immer ihre Adresse auf dem Stack. Um den tatsächlichen Wert in dieser Stack-Variable zu sehen, dereferenzieren Sie einfach die Variable:

root@kitploit:~
x $v4

Dies funktioniert auch mit Funktionsargumenten, falls zutreffend (Ergebnisse können variieren):

root@kitploit:~
p $a1

Hinweis: $v4 wird in diesem Fall nur so lange zugeordnet, wie Sie sich in derselben Funktion befinden. Sobald Sie die Funktion verlassen, kann sie aufgehoben oder einem anderen Wert zugeordnet werden.

Erweiterte Nutzung

Shared Libraries

Wenn die Dekompilierung (und Symbole) für einen Speicherbereich angezeigt werden sollen, der nicht die Hauptbinärdatei ist, z. B. beim Debuggen einer Shared Library, müssen Sie einige zusätzliche Schritte durchführen. Derzeit unterstützt d2d nur einen gleichzeitig verbundenen Decompiler. Das bedeutet, wenn Sie derzeit einen Decompiler verbunden haben, der nicht die Bibliothek ist, müssen Sie die Verbindung trennen.

Befolgen Sie die normale Einrichtung, um Ihren Decompiler mit dem d2d-Server für Ihre Shared Library zu starten. Danach müssen Sie die Basisadresse dieser Bibliothek und ihre Endadresse manuell festlegen:

root@kitploit:~
decompiler connect ida --base-addr-start 0x00007ffff7452000 --base-addr-end 0x00007ffff766d000

Um die Basisadresse zu finden, unter der Ihre Bibliothek im Speicher geladen ist, wird empfohlen, einen Befehl wie vmmap von GEF zu verwenden, um nach dem Namen der Bibliothek im Speicherbereich zu suchen. Nach der Verbindung mit dieser manuell festgelegten Adresse funktionieren Symbole wie bei normalem d2d. Die Dekompilierung wird nur auf dem Bildschirm ausgegeben, wenn Sie sich im Bereich dieses Adressraums befinden.

Funktionen

  • Automatisch aktualisierte Dekompilierungskontextansicht
  • Automatische Synchronisation von Funktionsnamen
  • Setzbare/untersuchbare Symbole
  • Automatische Synchronisation von Stack-Variablennamen
  • Automatische Synchronisation von Strukturen
  • Online-DWARF-Erstellung
  • Synchronisation von Funktionstypen
  • lldb-Unterstützung
  • windbg-Unterstützung
Tool herunterladen