
DLL-Basisadressen ohne PEB-WALK finden
Dieses Rust-Bibliotheks- und CLI-Tool demonstriert eine alternative Methode, um die Basisadresse geladener DLLs zu finden, ohne einen Prozess-Umgebungsblock (PEB)-Walk durchzuführen. Diese Technik ist besonders nützlich in Szenarien, in denen PEB-Walking erkannt oder blockiert werden könnte.
Dieses Repository enthält zwei Branches mit unterschiedlichen Ansätzen:
winapi-Crate und VirtualQuery zur Speichervalidierunglib.rs) enthalten keine Print-Anweisungen für eine saubere Integrationmain.rs) enthält Debug-Ausgaben als Proof of ConceptVirtualQueryBeide Branches sind sicher verwendbar, aber der OPSEC-Branch bietet zusätzliche operative Sicherheitsvorteile für Szenarien, in denen API-Aufrufe überwacht oder blockiert werden könnten.
Das Programm verwendet einen Stack-Walking-Ansatz, um DLLs zu lokalisieren:
Zugriff auf den Thread-Umgebungsblock (TEB):
Stack-Walking:
VirtualQuery, um Speicherregionen zu validierenModulidentifikation:
Validierung:
Traditionelle Methoden zum Auffinden von DLLs beinhalten oft das Durchlaufen der Modulliste des PEB. Obwohl effektiv, kann dieser Ansatz:
Diese Stack-Walking-Methode bietet eine Alternative, die:
winapi-CrateFügen Sie zu Ihrer Cargo.toml hinzu:
Hauptbranch:
[dependencies]
moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git" }
OPSEC-Branch:
[dependencies]
moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git", branch = "opsec" }
Beispielverwendung in Ihrem Code:
use moonwalk::find_dll_base;
fn main() {
// Find ntdll.dll
if let Some(ntdll_base) = find_dll_base("ntdll.dll") {
println!("ntdll.dll base: 0x{:X}", ntdll_base);
}
// Case-insensitive, .dll extension optional
if let Some(kernel32_base) = find_dll_base("KeRNEl32") {
println!("kernel32.dll base: 0x{:X}", kernel32_base);
}
}
Build:
cargo build --release
Ausführen:
# Find ntdll.dll (default)
cargo run --release
# Find specific DLL (case insensitive, .dll extension optional)
cargo run --release kernel32.dll
cargo run --release KeRNEl32
cargo run --release USER32
Print-Anweisungen sind nicht mehr enthalten. Dieses Bild ist zu Bildungszwecken enthalten.

VirtualQuery zur sicheren Speicherzugriffsvalidierung