• Stars
    star
    191
  • Rank 202,877 (Top 4 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 4 years ago
  • Updated 30 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A videogame overlay framework written in Rust, supporting DirectX and OpenGL

hudhook

book rustdoc

A render loop hook library with Dear ImGui overlays, largely inspired by CheatEngine.

Currently supports DirectX 9, DirectX 11, DirectX 12 and OpenGL 3.

Read the tutorial book here.

Read the API reference here.

Read up on the underlying architecture here.

Example

// src/lib.rs
use hudhook::*;

pub struct MyRenderLoop;

impl ImguiRenderLoop for MyRenderLoop {
    fn render(&mut self, ui: &mut imgui::Ui) {
        ui.window("My first render loop")
            .position([0., 0.], imgui::Condition::FirstUseEver)
            .size([320., 200.], imgui::Condition::FirstUseEver)
            .build(|| {
                ui.text("Hello, hello!");
            });
    }
}

{
    // Use this if hooking into a DirectX 9 application.
    use hudhook::hooks::dx9::ImguiDx9Hooks;
    hudhook!(MyRenderLoop.into_hook::<ImguiDx9Hooks>());
}

{
    // Use this if hooking into a DirectX 11 application.
    use hudhook::hooks::dx11::ImguiDx11Hooks;
    hudhook!(MyRenderLoop.into_hook::<ImguiDx11Hooks>());
}

{
    // Use this if hooking into a DirectX 12 application.
    use hudhook::hooks::dx12::ImguiDx12Hooks;
    hudhook!(MyRenderLoop.into_hook::<ImguiDx12Hooks>());
}

{
    // Use this if hooking into an OpenGL 3 application.
    use hudhook::hooks::opengl3::ImguiOpenGl3Hooks;
    hudhook!(MyRenderLoop.into_hook::<ImguiOpenGl3Hooks>());
}
// src/main.rs
use hudhook::inject::Process;

fn main() {
    let mut cur_exe = std::env::current_exe().unwrap();
    cur_exe.push("..");
    cur_exe.push("libmyhook.dll");

    let cur_dll = cur_exe.canonicalize().unwrap();

    Process::by_name("MyTargetApplication.exe").unwrap().inject(cur_dll).unwrap();
}