#native #winapi #com #ffi #api-bindings #windows #system-api

windows-native

Windows Native Undocumented API for Rust Language 🔥

5 stable releases

1.0.40 Aug 25, 2023
1.0.39 Aug 22, 2023

#50 in Windows APIs

Download history 1/week @ 2024-02-21 10/week @ 2024-02-28 1/week @ 2024-03-06 2/week @ 2024-03-13 1/week @ 2024-03-20 4/week @ 2024-03-27 12/week @ 2024-04-03 1/week @ 2024-04-17 54/week @ 2024-04-24

70 downloads per month

MIT license

1.5MB
47K SLoC

Windows Native   Crates.io GitHub Workflow Status (with event) Crates.io

The Windows-Native Rust library provides a convenient and safe way to access the native Windows undocumented APIs using the Rust programming language. These APIs are mostly exported from the Process Hacker native API headers (phnt), enabling you to interact with Windows internals in a reliable and efficient manner.

Please note that using undocumented APIs can be risky, as they might change without notice in different Windows versions and can potentially cause system instability. Use this library with caution and ensure you have a good understanding of the implications of using undocumented APIs.

Features

  • Access undocumented Windows APIs through Rust.
  • Headers sourced mainly from Process Hacker's NT headers.
  • Provides a safer interface compared to raw FFI.
  • Detailed documentation and examples for each API.
  • Easy-to-use functions and types for common Windows tasks.

Installation

Add this library to your Cargo.toml:

[dependencies]
windows-native = "1.0.40"

or run this command

cargo add windows-native

this crate works with windows-rs so you have to install that too.

Usage

use std::{thread, time::Duration};

use windows_native::ntpsapi::{NtResumeProcess, NtSuspendProcess};
use windows::Win32::System::Threading::{OpenProcess, PROCESS_ALL_ACCESS};

let handle = unsafe { OpenProcess(PROCESS_ALL_ACCESS, false, 69420).unwrap() };
let result = unsafe { NtSuspendProcess(handle) };
println!("Result {:?}", result);
thread::sleep(Duration::from_secs(3));
let result = unsafe { NtResumeProcess(handle) };
println!("Result {:?}", result);

Documentation

Detailed documentation for each API and type can be found here.

Contributing

Contributions are welcome! If you find a bug or want to add new features to the library, please open an issue or submit a pull request.

License

This project is licensed under the MIT License.

Disclaimer

Windows-Native is provided as-is and does not guarantee compatibility with future Windows versions. Using undocumented APIs can have unintended consequences, including system instability and security vulnerabilities. Use at your own risk.

Dependencies

~140MB
~2M SLoC