
PEB WALK के बिना DLL आधार पते खोजें
यह Rust लाइब्रेरी और CLI टूल लोड किए गए DLLs का बेस एड्रेस खोजने के लिए एक वैकल्पिक विधि प्रदर्शित करता है, बिना Process Environment Block (PEB) वॉक का उपयोग किए। यह तकनीक उन परिदृश्यों में विशेष रूप से उपयोगी है जहाँ PEB वॉकिंग का पता लगाया जा सकता है या ब्लॉक किया जा सकता है।
इस रिपॉजिटरी में अलग-अलग दृष्टिकोणों वाली दो ब्रांच शामिल हैं:
winapi क्रेट और VirtualQuery का उपयोग करता हैlib.rs) में कोई प्रिंट स्टेटमेंट नहीं हैंmain.rs) में प्रूफ ऑफ कॉन्सेप्ट के लिए डीबग आउटपुट शामिल हैVirtualQuery के बजाय अपवाद हैंडलिंग के साथ सीधे मेमोरी एक्सेस का उपयोग करता हैदोनों ब्रांच उपयोग करने के लिए सुरक्षित हैं, लेकिन OPSEC ब्रांच उन परिदृश्यों के लिए अतिरिक्त ऑपरेशनल सिक्योरिटी लाभ प्रदान करती है जहाँ API कॉल की निगरानी या ब्लॉक किए जाने की संभावना हो।
यह प्रोग्राम DLLs का पता लगाने के लिए स्टैक वॉकिंग दृष्टिकोण का उपयोग करता है:
थ्रेड एनवायरनमेंट ब्लॉक (TEB) तक पहुँचना:
स्टैक वॉकिंग:
VirtualQuery का उपयोग करती हैमॉड्यूल पहचान:
सत्यापन:
DLLs खोजने के पारंपरिक तरीकों में अक्सर PEB की मॉड्यूल सूची को स्कैन करना शामिल होता है। प्रभावी होते हुए भी, यह दृष्टिकोण:
यह स्टैक वॉकिंग विधि एक विकल्प प्रदान करती है जो:
winapi क्रेटअपने Cargo.toml में जोड़ें:
मुख्य ब्रांच:
[dependencies]
moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git" }
OPSEC ब्रांच:
[dependencies]
moonwalk = { git = "https://github.com/Teach2Breach/moonwalk.git", branch = "opsec" }
आपके कोड में उपयोग का उदाहरण:
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);
}
}
बिल्ड करें:
cargo build --release
चलाएँ:
# 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
प्रिंट स्टेटमेंट अब शामिल नहीं हैं। यह छवि शैक्षिक उद्देश्यों के लिए शामिल की गई है।

VirtualQuery का उपयोग करती है