• Stars
    star
    212
  • Rank 185,406 (Top 4 %)
  • Language
    Rust
  • License
    MIT License
  • Created about 2 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

Rusty Syscalls - A direct or indirect Syscall library in Rust using the FreshyCalls/SysWhispers technique

Syscalls - A direct or indirect Syscall library in Rust

The Rust version of Freshycalls or Syswhispers 1 or 2 or 3 diverges in its approach from the C/C++/Python versions. While it shares similar techniques, this project doesn't generate header/ASM files or output like them. Instead, it functions as a library. Inspired by a friend @janoglezcampos (@httpyxel), I created this project to explore the FreshyCalls/SysWhispers technique that rust_syscalls doesn't employ.

Usage

  1. Add the library to your Rust Cargo.toml file by setting the git repository or local path and choosing the direct or indirect system call feature by setting _DIRECT_ or _INDIRECT_ as a feature. Please note you can only choose direct _DIRECT_ or _INDIRECT_ not both.
[dependencies]
syscalls = { path = "../syscalls-rs/syscalls",  features = ["_DIRECT_"] }
[dependencies]
syscalls = { path = "../syscalls-rs/syscalls",  features = ["_INDIRECT_"] }
  1. Make use of the library
use syscalls;
  1. Dynamically retrieve the SSN and/or syscall instruction from ntdll.dll even if functions are hooked and call any function using direct and/or indirect syscall. Note that when calling a function using the syscall macro the string will be obfuscated by hashing (NtClose in this example).
unsafe { syscall!("NtClose", process_handle) };

References and Credits