Skip to content

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

License

Notifications You must be signed in to change notification settings

kalinavladd/syscalls-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Rust 100.0%