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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rustdllproxy — Generiere Proxy-DLLs in Rust | Kitploit
Tools/GitHubGitHub/johnswiftc/rustdllproxy
Payload-GenerierungPersistenzmechanismenPost-ExploitationPenetrationstestsRed TeamingPayload-Entwicklung
GitHubjohnswiftc/rustdllproxy

rustdllproxy

Generiere Proxy-DLLs in Rust

Repository anzeigen
56424vor 4 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

rustdllproxy


Ein Rust-Crate-Dienstprogramm zum einfachen Erzeugen und Entwickeln von Proxy-DLLs für Windows-Anwendungen.

Installation

cargo install rustdllproxy

Kompatibilität

Dieses Crate unterstützt derzeit nur das Standard-DLL-PE-Format.

Aktuelle Einschränkungen

  • Beim Hooking von Funktionen mit benutzerdefiniertem Code muss die Funktionssignatur bekannt sein
    • Diese kann mithilfe von Disassemblern und Reverse-Engineering-Tools wie Ghidra ermittelt werden.

Befehle

Rustdllproxy stellt zwei Unterbefehle bereit:

CommandPurpose
rustdllproxy newEin neues Proxy-cdylib-Crate aus einer oder mehreren vorhandenen DLLs erzeugen.
rustdllproxy buildDie .def-Datei mit src/lib.rs abgleichen und das Crate bauen.
rustdllproxy --help        # top-level help
rustdllproxy new --help    # generation flags
rustdllproxy build --help  # build flags

Erstellen eines neuen Crates

Ein kurzer Hinweis zur Strategie

Bevor Sie Ihr Crate erzeugen, entscheiden Sie, wie Ihr Proxy funktionieren soll. Ein typisches Muster ist Search-Order-Hijacking, bei dem Sie zuerst Ihre Ziel-DLL in etwas wie target_.dll umbenennen und dann den kompilierten Proxy als target.dll verwenden. Dies erzeugt einen Ablauf ähnlich wie binary -> target.dll -> target_.dll

Es gibt mehrere Möglichkeiten, je nach Anwendungsfall. Falls Sie jedoch die zugrunde liegende, per Proxy ersetzte DLL umbenennen müssen, passen Sie die erzeugte .def-Datei entsprechend an.


rustdllproxy new -p path/to/target_.dll -n my_proxy

Tipp: rustdllproxy ist eine CLI, die mit clap erstellt wurde. Führen Sie rustdllproxy --help aus, um alle Optionen und Flags zu sehen.

Hooks schreiben

Die Makrobibliothek unterstützt 3 Haupttypen von Hooks: prehook, posthook und fullhook.

Implementierungsschritte für Hooks

  1. Ersetzen Sie die #[no_mangle]-Direktive durch das Hook-Makro (lassen Sie den abschließenden Kommentar //<dllname>.dll an Ort und Stelle).

    #[prehook("dllbeingproxied.dll", "function_name")] //dllbeingproxied.dll
    
  2. Füllen Sie die Funktionssignatur aus (deklarieren Sie Eingaben als mut, um sie zu verändern).

  3. Bauen Sie mit rustdllproxy build.

Hook-Typen

prehook

Führt Code vor der ursprünglichen Funktion aus. Ermöglicht es Ihnen, Funktionalität hinzuzufügen oder Eingabevariablen zu verändern.

#[prehook("target.dll", "my_function")] //target.dll
fn my_function(mut param1: i32, mut param2: &str) {
    // Your code here - executes before original function
    param1 *= 2;  // Modify parameters if needed
}

posthook

Führt Code nach der ursprünglichen Funktion aus. Sehen Sie sich den Rückgabewert an und bearbeiten Sie ihn mit der magischen Variablen ret.

#[posthook("target.dll", "calculate")] //target.dll
fn calculate(input: i32) -> i32 {
    // Original function executes first
    // Then your code runs with access to 'ret'
    ret = ret * 2;  // Modify return value
}

Hinweis: Die Variable ret wird automatisch als veränderbar (mutable) definiert. Sie müssen sie nicht referenzieren, wenn sie nicht benötigt wird.

fullhook

Bietet vollständige Kontrolle über die Funktionsausführung. Verwalten Sie Rückgabewert und Funktionsaufruf manuell.

#[fullhook("target.dll", "do_multi_add")] //target.dll
fn do_multi_add(mut a: i32, mut b: i32, mut c: i32) -> i32 {
    // Pre-processing
    a += 10;
    b += 20;

    // Call original function with magic func()
    let mut return_value: i32 = func(a, b, c);

    // Post-processing
    return_value *= 2;

    // Must explicitly return the value
    return_value
}

Das Crate bauen

Führen Sie den Befehl aus dem Verzeichnis des Proxy-Crates aus (oder übergeben Sie es als erstes Argument):

rustdllproxy build [PATH] [--profile <name>] [--no-build] [-- <extra cargo args>]
FlagDefaultEffect
PATH.Pfad zum Stammverzeichnis des Proxy-Crates.
--profile <name>releaseCargo-Build-Profil (release, dev, benutzerdefiniert).
--no-buildoffDie .def-Datei neu erzeugen, aber cargo build überspringen.
-- <args>—Wird unverändert an cargo build weitergegeben.

Hinweise

  • Die .def-Datei wird bei jedem Build vollständig neu erzeugt, manuelle Änderungen werden überschrieben. Wenn Sie manuelle Änderungen vornehmen müssen, die der Vorgehensweise von rustdllproxy beim Bauen widersprechen, kann Cargo dafür verwendet werden.
  • Das Build-System verlässt sich auf generierte Kommentare, .def-Exporte und Hook-Namen, um den Namen der zugrunde liegenden DLL vor dem Build zu ermitteln. Wenn nicht genügend Informationen vorhanden sind, wird ein Fehler ausgegeben, der erklärt, wie dies behoben werden kann.

Beispiel-Workflow

Angenommen, Sie möchten die in einer Bürosoftware verwendete office.dll per DLL-Suchreihenfolgen-Hijacking modifizieren:

Schritt 1: Die ursprüngliche DLL vorbereiten

# Rename the original DLL
mv office.dll office_.dll

Schritt 2: Proxy-Crate erzeugen

rustdllproxy new -p office_.dll -n office_proxy

Schritt 3: Hooks implementieren

#[prehook("office_.dll", "open_window")] //office_.dll
fn open_window() {
    // Your custom code here...
    println!("Window is about to open!");
}

Schritt 4: Erstellen und bereitstellen

cd office_proxy
rustdllproxy build

Build-Dateien befinden sich unter /target

Überlegungen zum DLL-Bundling

Es ist möglich, mehrere Ziel-DLLs mit einem einzigen Crate zu proxen. Diese Funktion wird selten genutzt und bringt einige wichtige Hinweise mit sich.

Beim Bündeln mehrerer DLLs:

  • Funktions-Ordinalzahlen können sich aufgrund der Exportreihenfolge ändern
  • Dies ist selten problematisch, da moderne Software aus Kompatibilitätsgründen Exportnamen verwendet
  • Hauptsächlich nützlich für Analysen und die Entwicklung eigener Anwendungen

Changelog

Versionshinweise finden Sie in CHANGELOG.md.

Mitwirken

Wir freuen uns über Beiträge! Erstellen Sie gerne Issues und Pull-Requests.

Tool herunterladen