
найти базовые адреса DLL без обхода PEB
Эта библиотека и CLI-инструмент на Rust демонстрируют альтернативный метод поиска базового адреса загруженных DLL без обхода Process Environment Block (PEB). Этот метод особенно полезен в сценариях, где обход PEB может быть обнаружен или заблокирован.
Этот репозиторий содержит две ветки с разными подходами:
winapi и VirtualQuery для проверки памятиlib.rs) не содержат операторов вывода для чистой интеграцииmain.rs) включает отладочный вывод для демонстрации концепцииVirtualQueryОбе ветки безопасны в использовании, но ветка OPSEC даёт дополнительные преимущества операционной безопасности для сценариев, где вызовы API могут отслеживаться или блокироваться.
Программа использует подход с обходом стека для поиска DLL:
Доступ к Thread Environment Block (TEB):
Обход стека:
VirtualQuery для проверки областей памятиИдентификация модуля:
Проверка:
Традиционные методы поиска DLL часто включают обход списка модулей 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() {
// Найти ntdll.dll
if let Some(ntdll_base) = find_dll_base("ntdll.dll") {
println!("ntdll.dll base: 0x{:X}", ntdll_base);
}
// Без учёта регистра, расширение .dll необязательно
if let Some(kernel32_base) = find_dll_base("KeRNEl32") {
println!("kernel32.dll base: 0x{:X}", kernel32_base);
}
}
Сборка:
cargo build --release
Запуск:
# Найти ntdll.dll (по умолчанию)
cargo run --release
# Найти конкретную DLL (без учёта регистра, расширение .dll необязательно)
cargo run --release kernel32.dll
cargo run --release KeRNEl32
cargo run --release USER32
Операторы вывода больше не включены. Это изображение включено в образовательных целях.

VirtualQuery для безопасной проверки доступа к памяти