#hook #detours

detours-rs

使用 bindgen 创建的 Microsoft Detours FFI 绑定

2 个不稳定版本

0.2.0 2023年6月25日
0.1.0 2023年6月25日

#3 in #hooking

MIT/Apache

2.5MB
65K SLoC

C++ 62K SLoC // 0.0% comments Assembly 1.5K SLoC // 0.0% comments Visual Studio Project 604 SLoC Rust 520 SLoC Visual Studio Solution 43 SLoC C# 36 SLoC // 0.1% comments

crates.io version

detours-rs

Microsoft Detours 的 Rust 库绑定。

这是原始的 FFI,不提供漂亮的包装,只包含一些 windows-rs 导入。

DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Sleep, SleepHook);
DetourTransactionCommit();
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
let c_fn_ptr = Sleep as unsafe extern "C" fn(_) -> _ as *mut std::ffi::c_void;
DetourAttach(
    c_fn_ptr as *mut *mut c_void,
    sleep_hook as fn(_) -> _ as *mut c_void,
);
DetourTransactionCommit();
let start = Instant::now();
Sleep(10_000u32);
let duration = start.elapsed();
assert!(duration.as_secs() < 10_000);

依赖项

~129MB
~2M SLoC