1、先安装环境
https://www.rust-lang.org/learn/get-started

上来就要我的C盘啊
算了,不要倔,给它

说是装好了

2、开始
http://www.qfrost.com/posts/rust-hook/
rustup install nightly
rustup default nightly
rustc --version显示更新的最新的当夜版本,这很新啊。。
cargo init
cargo add retourtype type_LoadLibraryA = extern "system" fn(PCSTR) -> HINSTANCE;
static hook_LoadLibraryA: Lazy<GenericDetour<type_LoadLibraryA>> = Lazy::new(|| {
let ori: type_LoadLibraryA = unsafe{std::mem::transmute(utils::win::get_proc_address("kernel32.dll", "LoadLibraryA").unwrap())};
return unsafe { GenericDetour::new(ori, hooked_LoadLibraryA).unwrap() };
});
extern "system" fn hooked_LoadLibraryA(lpFileName: PCSTR) -> HINSTANCE {
let file_name = unsafe { CStr::from_ptr(lpFileName.as_ptr() as _) };
let ret_val = hook_LoadLibraryA.call(lpFileName);
println!(
"hooked_LoadLibraryA lpFileName = {:?} ret_val = {:#X}",
file_name, ret_val.0
);
return ret_val;
}
pub fn register_hook() -> anyhow::Result<()> {
unsafe{ hook_LoadLibraryA.enable()?; }
Ok(())
}
然后把这一段扔到main.rs里面去
最后
cargo run一下

这家伙竟然是在这个时候才开始下载依赖的