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
SHGenOb — Python-basiertes Tool zur Generierung von Shellcode aus PIC C | Kitploit
Tools/GitHubGitHub/oldboy21/shgenob
Verschlüsselungs-/EntschlüsselungstoolsPayload-GenerierungExploitationShellcodeMalware-AnalyseBinäranalyseLernen & BildungShellcode-Generierung
GitHuboldboy21/shgenob

SHGenOb

Python-basiertes Tool zur Generierung von Shellcode aus PIC C

Repository anzeigen
435vor 9 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

SHGenOB: Shellcode-Generator aus PIC-C-Code

Einführung

SHGenOB ist ein auf Python basierendes Werkzeug, das Shellcode aus in C geschriebenem positionsunabhängigem Code (Position Independent Code, PIC) erzeugt. Es automatisiert den Prozess des Kompilierens von C-Code, des Extrahierens des .text-Abschnitts und optional des Verschlüsselns des resultierenden Shellcodes mittels XOR-Verschlüsselung.

Dieses Projekt basiert vollständig auf diesem Dokument von hasherezade.

Positionsunabhängiger Code (PIC)

Wichtiger Hinweis für SHGenOB-Benutzer: Damit dieses Tool zur Shellcode-Erzeugung korrekt funktioniert, muss der C-Code in der Eingabedatei als positionsunabhängiger Code (PIC) geschrieben sein. Das Tool geht davon aus, dass der bereitgestellte Code die unten beschriebenen PIC-Prinzipien und -Eigenschaften erfüllt.

Positionsunabhängiger Code (PIC) ist eine Art von Maschinencode, der unabhängig von seiner absoluten Speicheradresse ausgeführt werden kann. Diese Eigenschaft macht PIC besonders nützlich für die Erstellung von Shellcode, gemeinsam genutzten Bibliotheken und bestimmten Arten von Malware. Zu den Hauptmerkmalen von PIC gehören:

  • Adressunabhängigkeit: PIC kann unabhängig davon korrekt ausgeführt werden, wo es im Speicher geladen wird.
  • Keine festen Speicherreferenzen: Es vermeidet die Verwendung absoluter Adressen und verwendet stattdessen relative Adressierung oder andere Techniken, um Speicherstellen zu referenzieren.
  • In sich geschlossen: PIC enthält in der Regel alle notwendigen Daten im Code selbst, wodurch externe Abhängigkeiten reduziert werden.
  • Stack-Strings: Die Deklaration von Strings als Zeichenfelder zwingt den Compiler, sie auf den Stack zu legen und nicht in den .data- oder .pdata-Abschnitt der PE-Datei.
  • Ohne Relokationen: Es ist keine Relokation durch den Lader erforderlich, was das Laden und Ausführen beschleunigt.
  • Geringere Größe: PIC führt häufig zu kleineren Binärdateien als positionsabhängiger Code.
  • Register-relative Adressierung: Es verwendet häufig register-relative Adressierung, um auf Daten zuzugreifen und Sprünge auszuführen.
  • Verwendung von Offsets: Anstelle absoluter Adressen verwendet PIC Offsets vom aktuellen Befehlszeiger (Instruction Pointer).
  • Plattformspezifische Techniken: Unterschiedliche CPU-Architekturen können unterschiedliche Techniken erfordern, um Positionsunabhängigkeit zu erreichen.

PIC ist in Szenarien unerlässlich, in denen die genaue Ladeadresse des Codes nicht im Voraus bekannt ist, was es zu einem entscheidenden Konzept in der Shellcode-Entwicklung und in bestimmten Bereichen der Systemprogrammierung macht. Stellen Sie bei der Verwendung von SHGenOB sicher, dass Ihr eingegebener C-Code diesen PIC-Prinzipien folgt, um effektiven und zuverlässigen Shellcode zu erzeugen.

Funktionen

  • Kompiliert PIC-C-Code mit Microsoft-Visual-Studio-Tools
  • Extrahiert den .text-Abschnitt aus der kompilierten ausführbaren Datei
  • Verschlüsselt den Shellcode optional mit XOR-Verschlüsselung
  • Fügt den erzeugten Shellcode in eine Loader-Vorlage ein
  • Kompiliert und testet den Loader mit dem erzeugten Shellcode
  • Unterstützt den Debug-Modus zur Untersuchung von Zwischendateien
  • Räumt Zwischendateien nach erfolgreicher Ausführung auf

Anforderungen

  • Windows-Betriebssystem
  • Python 3.6 oder höher
  • Microsoft Visual Studio 2022 Community Edition (oder kompatible Version)
  • Die folgenden Python-Pakete:
    • pefile
    • argparse
  • Ein C-Compiler (cl.exe) und Assembler (ml64.exe) von Visual Studio
  • Die Datei vcvars64.bat von Visual Studio (zum Einrichten der Kompilierungsumgebung)

Installation

  1. Installieren Sie Python 3.6 oder höher von python.org
  2. Installieren Sie Microsoft Visual Studio 2022 Community Edition
  3. Installieren Sie die erforderlichen Python-Pakete:

pip install pefile argparse

  1. Klonen Sie dieses Repository oder laden Sie es auf Ihren lokalen Rechner herunter

Verwendung

Führen Sie das Skript über die Befehlszeile mit der folgenden Syntax aus:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

Argumente:

  • --code-file oder -cf: (Erforderlich) Pfad zur Datei main.c, die den PIC-Code enthält
  • --masm-file oder -mf: (Optional) Pfad zu einer externen .masm-Datei, um zusätzliche Assembly-Logik in den Shellcode aufzunehmen
  • --debug oder -d: (Optional) Debug-Modus aktivieren (überspringt die Bereinigung der Zwischendateien)
  • --xor-key oder -xk: (Optional) XOR-Schlüssel zum Verschlüsseln des Shellcodes (Format: AA,BB,CC)

Beispiele:

root@kitploit:~
# Basisnutzung
python shgenob.py --code-file main.c

# Mit externer MASM-Datei
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# Mit allen Optionen
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

Funktionsbeschreibungen

  1. save_to_file(content, filename): Speichert den angegebenen Inhalt in einer Datei im aktuellen Verzeichnis
  2. cleanup(): Löscht Zwischendateien (.asm, .exe, .obj, .lnk) im aktuellen Verzeichnis
  3. xor_encrypt(shellcode, key): Verschlüsselt Shellcode mit XOR unter Verwendung des angegebenen Schlüssels
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): Fügt Shellcode in die Loader-Vorlage ein
  5. extract_text_section(file_path, key): Extrahiert den .text-Abschnitt aus einer PE-Datei und verschlüsselt ihn optional
  6. find_file(root_dir, file_name): Sucht eine Datei im angegebenen Verzeichnis und seinen Unterverzeichnissen
  7. run_command_with_vcvars(command, vcvars_path): Führt einen Befehl mit festgelegten Visual-Studio-Umgebungsvariablen aus
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Kompiliert eine C++-Datei mit dem Visual-Studio-Compiler
  9. modify_asm_file(asm_file): Modifiziert die erzeugte Assembly-Datei für die Shellcode-Kompatibilität
  10. main(cpp_file, args): Hauptfunktion, die den Shellcode-Erzeugungsprozess orchestriert

Arbeitsablauf

  1. Befehlszeilenargumente parsen
  2. Visual-Studio-Tools finden (vcvars64.bat, cl.exe, ml64.exe)
  3. Die eingegebene C-Datei zu Assembly kompilieren
  4. Die erzeugte Assembly-Datei modifizieren
  5. Die modifizierte Assembly-Datei assemblieren
  6. Den .text-Abschnitt aus der resultierenden ausführbaren Datei extrahieren
  7. Den extrahierten Shellcode optional verschlüsseln
  8. Den Shellcode in einer Datei speichern
  9. Den Shellcode in eine Loader-Vorlage einfügen
  10. Den Loader kompilieren
  11. Den Loader mit dem erzeugten Shellcode testen
  12. Zwischendateien bereinigen (außer im Debug-Modus)

Debuggen

Verwenden Sie das Flag --debug, um den Bereinigungsprozess zu überspringen und Zwischendateien zu untersuchen. Dies ist nützlich zur Fehlerbehebung und zum Verständnis des Shellcode-Erzeugungsprozesses.

Sicherheitshinweise

  • Dieses Tool ist nur für Bildungszwecke und autorisierte Tests gedacht
  • Erzeugter Shellcode kann von Antivirensoftware erkannt werden
  • Verwenden Sie Verschlüsselung (XOR-Schlüssel), um den Shellcode zu verschleiern, aber beachten Sie, dass dies eine grundlegende Form der Verschleierung ist
  • Stellen Sie sicher, dass Sie die Erlaubnis haben, dieses Tool auf den Zielsystemen zu verwenden

Einschränkungen

  • Unterstützt derzeit nur Windows und die Microsoft-Visual-Studio-Toolchain
  • Eingeschränkte Fehlerbehandlung für einige Randfälle
  • XOR-Verschlüsselung ist eine grundlegende Form der Verschleierung und kann für alle Anwendungsfälle unzureichend sein

Mitwirken

Beiträge zur Verbesserung von SHGenOB sind willkommen. Bitte befolgen Sie diese Schritte:

  1. Forken Sie das Repository
  2. Erstellen Sie einen neuen Branch für Ihre Funktion
  3. Committen Sie Ihre Änderungen
  4. Pushen Sie den Branch
  5. Erstellen Sie einen neuen Pull Request
Tool herunterladen