4 stable releases
2.0.0 | Mar 24, 2023 |
---|---|
1.0.2 | Nov 14, 2021 |
1.0.1 | Aug 31, 2021 |
#473 in Unix APIs
259 downloads per month
16KB
285 lines
Houdini
Houdini
is a rust library that allows you to delete your executable while it's running.
This is fairly straightforward for unix systems, since the executable is released after getting mapped to the memory. We just need to find where it is and unlink it.
On Windows, we use a method discovered by @jonasLyk.
My implementation heavily references @byt3bl33d3r's Nim implementation in OffensiveNim
and in turn LloydLabs' initial C
PoC.
Usage
// With a default placeholder value on windows (`svcmsrpc`)
use houdini;
fn main() {
match houdini::disappear() {
Ok(_) => println!("Pulled a Houdini!!"),
Err(e) => println!("Nope! => {}", e),
};
}
// With a placeholder you provide
use houdini::disappear;
fn main() {
#[cfg(target_os = "windows")]
match houdini::disappear_with_placeholder("temporary") {
Ok(_) => println!("Pulled a Houdini!!"),
Err(e) => println!("Nope! => {}", e),
};
}
Dependencies
~0–38MB
~525K SLoC