A modern GUI tool built with Rust and egui to inject or manually map DLLs into running processes using classic injection or process hollowing techniques.
- 🚀 DLL injection via
CreateRemoteThread + LoadLibraryW - 🧠 Manual process hollowing with custom image mapping
- 🧬 Exported function resolution via PE parsing
- 📜 Export viewer for inspecting DLL symbols
- 🪟 Windows native API integration via
windowscrate - 🎨 UI built with
eframeandegui
- Run the application:
cargo run --release- Choose a DLL from your plugin directory.
- Select an exported function (like
DllMainortest_function). - Inject it into a running process or launch a hollowed process.
- Confirm behavior via popups, file logs, or custom payload logic.
- Manual mapping requires PE32/PE32+ compliant DLLs.
- Ensure your exported function is a proper entrypoint (e.g., no reliance on loader IAT unless mapped).
- Hollowed processes must be suspended and launched from trusted binaries (
notepad.exe,rundll32.exe, etc.).
This tool is for educational and development purposes only. Unauthorized process injection may be considered malicious by antivirus software and violates the terms of use on most systems.
#[no_mangle]
pub extern "system" fn test_function() {
let msg = widestring::U16CString::from_str("Test Function Called!").unwrap();
let title = widestring::U16CString::from_str("Test DLL").unwrap();
unsafe {
MessageBoxW(
std::ptr::null_mut(),
msg.as_ptr(),
title.as_ptr(),
MB_OK,
);
}
}egui_dll_loader/
├── Cargo.toml
├── dll_loader
│ ├── build.rs
│ └── src
│ ├── inject.rs # Hollowing + injection logic
│ ├── main.rs # GUI entrypoint
│ └── processes.rs # PE parsing (export RVA, sections)
├── rusty_dll
│ └── src
│ └── lib.rs # Rust DLL to test the loader with
- Reflective DLL injection
- IAT fixups for full manual mapping
- Thread hijacking instead of
CreateRemoteThread - Basic AV evasion research modes