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
CodeCut — Ein Ghidra-Plugin zum Auffinden von Objektdateigrenzen. | Kitploit
Tools/GitHubGitHub/jhuapl/codecut
Statische AnalyseReverse EngineeringBinäranalyseMaschinelles Lernen
GitHubjhuapl/codecut

CodeCut

Ein Ghidra-Plugin zum Auffinden von Objektdateigrenzen.

Repository anzeigen
13123vor 7 MonatenVon 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

CodeCut-Plugin für Ghidra

Ghidra-Plugin für DeepCut / CodeCut-GUI

Theorie der Funktionsweise

CodeCut ermöglicht es einem Benutzer, Funktionen in Ghidra Objektdateien zuzuweisen und anschließend auf der Ebene der Objektdateien mit der Binärdatei zu interagieren. Funktionen werden Objektdateien zugewiesen, indem das Feld Namespace in der Ghidra-Datenbank gesetzt wird. DeepCut versucht, anfängliche Grenzen der Objektdateien festzulegen, die der Benutzer dann über das Fenster „CodeCut Table“ anpassen kann.

Warum ist das nützlich?

Die meisten Binärdateien stammen aus mehreren Quelldateien. Beim Reverse Engineering entwickeln RE-Analysten oft ein Gefühl dafür, welche Funktionen zusammengehören und daher wahrscheinlich aus derselben Quelldatei stammen. CodeCut ermöglicht es dem Analysten, eine Hypothese aufzustellen wie „Ich denke, dieser Funktionsblock sind OS-Funktionen.“ Wenn es in diesem Bereich unerforschte Funktionen gibt, erscheinen sie im Disassembly und in der Dekompilierung als OS::FUN_XXXXXXXX statt nur FUN_XXXXXXXX. Dies führt zu einem schnelleren Verständnis dessen, wofür Funktionen verwendet werden könnten, wenn sie im Kontext betrachtet werden.

Plugin-Installation

Befolgen Sie die üblichen Installationsverfahren für Ghidra-Erweiterungen. Kopieren Sie die Zip-Dateien der Erweiterungen CodeCut und DeepCut in $GHIDRA_INSTALL_DIR/Extensions und wählen Sie dann im Hauptfenster von Ghidra File -> Install Extensions und aktivieren Sie die Kontrollkästchen für CodeCut und DeepCut. Ghidra wird Ihnen mitteilen, dass ein Neustart erforderlich ist. Da Ghidra von Plugins nun nur noch verlangt, dass sie mit Haupt-/Nebenversion der Basisversion übereinstimmen und nicht mit Patch-Versionen, erwarten wir, nur gerade Haupt-/Nebenversionen zu veröffentlichen.

HINWEIS: Nach dem Neustart und dem Laden eines CodeBrowser-Fensters wird Ghidra Ihnen mitteilen, dass neue Plugins gefunden wurden, und fragen, ob Sie sie konfigurieren möchten. In diesem Fenster erscheint nur CodeCut. Das liegt daran, dass DeepCut ein „One-Shot“-Analysator ist (es ist weiterhin installiert).

Konfigurieren nativer Python-Pfade und Python-Abhängigkeiten

Sowohl CodeCut als auch DeepCut basieren auf der nativen PyGhidra-Erweiterung und sind nicht mit Jython kompatibel. CodeCut verwendet natives Python zum Raten von Modulnamen. Die Modellinferenz von DeepCut läuft in nativem Python.

Native Python-Abhängigkeiten

CodeCut:

  • nltk

DeepCut:

  • torch
  • torch-geometric
  • networkx
  • scipy

Zum Installieren der Abhängigkeiten führen Sie Folgendes aus:

root@kitploit:~
pip install nltk
pip install torch torch-geometric networkx scipy

Verwenden Sie dabei die Python-Installation, die mit Ihrer PyGhidra-Installation verknüpft ist.

Ausführen der DeepCut-Analyse

DeepCut lässt sich am besten als One-Shot-Analysator nach der anfänglichen Auto-Analyse ausführen. Wählen Sie Analysis -> One Shot -> Deepcut. Nachdem DeepCut ausgeführt wurde, können Sie die Ergebnisse anzeigen, indem Sie das Feld Namespace in der Ansicht Symbol Table betrachten.

Verwenden von CodeCut

Nachdem DeepCut ausgeführt wurde, können Sie auf Objektdateiebene mit der Ansicht CodeCut Table interagieren. Wählen Sie Window -> CodeCut Table, um die Tabelle anzuzeigen. Die CodeCut-Tabelle ist im Wesentlichen ein kombinierter Satz von Symboltabellen, eine für jedes Modul.

Sie können CodeCut die Modulnamen (anhand von String-Referenzen) erraten lassen, indem Sie im Fenster „CodeCut Table“ Analysis -> Guess Module Names wählen. Dies ist hilfreich, wenn Ihre Ziel-Binärdatei viele Debug-Strings enthält. Das Skript zur Namensermittlung versucht zuerst, Quelldateinamen zu finden, und greift dann auf Strings (einschließlich Bigrammen und Trigrammen) zurück, die mehrfach wiederholt werden.

Sie können Objektdateien aufteilen/zusammenführen, indem Sie mit der rechten Maustaste auf ein Objekt klicken und Split Namespace Here / Combine Namespaces. wählen. Sie können Funktionen zwischen Objektdateien verschieben (wodurch sich die Grenzen der Objektdateien ändern), indem Sie sie per Drag & Drop verschieben.

Export in neu kompilierbares C

CodeCut enthält zwei Optionen zum Exportieren eines vollständigen Moduls oder eines Teilbereichs eines Moduls als neu kompilierbares C unter dem Menü Export, wenn Sie mit der rechten Maustaste auf ein Modul in der CodeCut-Tabelle klicken. Diese Funktion ist als EXPERIMENTELL markiert und nicht gut getestet.

Der CodeCut-Graph

CodeCut bietet jetzt eine Graph-Option zum Anzeigen von Interaktionen / Hierarchien der Module innerhalb einer Binärdatei. Fügen Sie Namespaces zur Graph-Ansicht hinzu, indem Sie mit der rechten Maustaste auf eine Funktion in der CodeCut-Tabelle klicken und Add Namespace to Graph wählen. Sie können Module aus dem Graph entfernen, indem Sie mit der rechten Maustaste klicken und Show Namespaces in Graph Filter wählen.

Einschränkungen

Vorsicht beim Klicken

Auch wenn es so aussieht, als könnten Sie mit der rechten Maustaste auf die Modulnamen auf der rechten Seite klicken, achtet CodeCut tatsächlich darauf, welche Funktion in der Tabelle hervorgehoben ist. Wenn Sie also z. B. eine Funktion in object3 markiert haben und mit der rechten Maustaste auf das graue Feld object2 links klicken und dann Combine/Split oder Rename Namespaces wählen, führt CodeCut den Vorgang ausgehend von der Funktion aus, die Sie in object3 markiert haben.

Besonderheiten bei Adressbereichen

CodeCut versucht, die Namespaces nach ihrer Startadresse zu ordnen. CodeCut scheint die Module möglicherweise in falscher Reihenfolge aufzulisten, was jedoch in der Regel auf Unregelmäßigkeiten im Disassembly von Ghidra zurückzuführen ist. Angenommen, wir haben eine Speicherkarte, die wie folgt aussieht:

root@kitploit:~
object2:  0x00010000 - 0x00018000
object3:  0x00018004 - 0x00020000
...
object50: 0x00480000 - 0x00480a00

Angenommen, die Funktion an Adresse 0x00480000 führt einen Zweig oder Sprung zu einer Adresse 0x00016008 aus. Dies sollte ein neuer Funktionseinstiegspunkt sein, aber wenn nur eine Funktion ihn verwendet, kennzeichnet Ghidra dies möglicherweise nicht als Funktionseinstiegspunkt und betrachtet es lediglich als Teil von FUN_00480000. Das bedeutet, dass der tatsächliche Bereich von object50 0x00016008 - 0x00480a00 ist. Dadurch erscheint object50 in der Tabelle zwischen object2 und object3. CodeCut schreibt die Modulbereiche in das Anwendungsprotokoll von Ghidra, um beim Debuggen dieses Problems zu helfen. In diesem Fall führt das Definieren von 0x00016008 als Funktion dazu, dass die Grenzen von object50 die richtigen Werte haben und object50 an der richtigen Stelle in der Tabelle erscheint.

Späteres Definieren von Funktionen

Funktionen, die definiert werden, nachdem die DeepCut-Analyse ausgeführt wurde, werden standardmäßig zum Global-Namespace hinzugefügt. In Zukunft planen wir, eine Funktion hinzuzufügen, die sie automatisch zum nächstgelegenen Namespace hinzufügt, oder einen Mechanismus bereitzustellen, mit dem einzelne Funktionen einfacher direkt einem bestimmten Namespace zugewiesen werden können.

Erstellen

Spezifische Build-Anweisungen finden Sie in den Unterordnern DeepCut und CodeCut.

Tool herunterladen