Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rust_syscalls — Einzelner Stub für direktes und indirektes Syscalling mit SSN-Auflösung zur Laufzeit für Windows. | Kitploit
Tools/GitHubGitHub/janoglezcampos/rust_syscalls
IDS/IPS-UmgehungPost-ExploitationRed TeamingPayload-Entwicklung
GitHubjanoglezcampos/rust_syscalls

rust_syscalls

Einzelner Stub für direktes und indirektes Syscalling mit SSN-Auflösung zur Laufzeit für Windows.

Repository anzeigen
240334vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

RUST_SYSCALLS

Einzelner Stub für direkte und indirekte Syscalls mit Laufzeit-SSN-Auflösung für Windows.


Funktionen:

  • Eine einzige Zeile für all deine Syscalls
  • Hash der Funktionsnamen zur Kompilierzeit
  • Direkte oder indirekte Syscalls
  • Unterstützung für x86_64, WOW64 und natives x86
  • Entwickelt, um die Implementierung eigener SSN-Abrufmethoden zu ermöglichen (weitere Informationen am Ende dieser Readme)

Verwendung:

  1. Füge das Git-Repository / den lokalen Pfad zur Bibliothek zu deinen Abhängigkeiten hinzu:

    rust_syscalls = {git = "https://github.com/janoglezcampos/rust_syscalls"}

    oder

    rust_syscalls = {path = <path to library folder>}

  2. Wähle die direkte oder indirekte Methode, indem du _DIRECT_ oder _INDIRECT_ als Feature festlegst:

    rust_syscalls = {path = <path to library folder>}, features = ["_INDIRECT_"]}

  • Import

    use rust_syscalls::syscall;

  • Syscall:

    NTSTATUS status = syscall!("NtClose", handle);


  • Beispiel:

    root@kitploit:~
        #![allow(non_snake_case)]
        use ntapi::ntapi_base::CLIENT_ID;
        use rust_syscalls::syscall;
    
        use winapi::shared::ntdef::{OBJECT_ATTRIBUTES, HANDLE, NULL, NTSTATUS, PVOID};
        use winapi::um::winnt::{PROCESS_VM_WRITE, PROCESS_VM_READ, MEMORY_BASIC_INFORMATION};
        use std::mem::size_of;
        
        fn main(){
            let pid             : u64      = 3268; //Process PID
            let currentProcess  : HANDLE = -1isize as _;
            let mem_info_len    : usize = size_of::<MEMORY_BASIC_INFORMATION>() as _;
    
            let mut handle      : HANDLE   = NULL;
            let mut status      : NTSTATUS;
        
            let mem_info: MEMORY_BASIC_INFORMATION = MEMORY_BASIC_INFORMATION {
                BaseAddress: NULL,
                AllocationBase: NULL,
                AllocationProtect: 0,
                RegionSize: 0,
                State: 0,
                Protect: 0,
                Type: 0,
            };
    
            let oa : OBJECT_ATTRIBUTES = OBJECT_ATTRIBUTES {
                Length: size_of::<OBJECT_ATTRIBUTES>() as _,
                RootDirectory: NULL,
                ObjectName: NULL as _,
                Attributes: 0,
                SecurityDescriptor: NULL,
                SecurityQualityOfService: NULL
            };
    
            let cid : CLIENT_ID = CLIENT_ID {
                UniqueProcess: pid as _,
                UniqueThread: 0 as _
            };
    
            unsafe {
                status = syscall!("NtOpenProcess", &mut handle, PROCESS_VM_WRITE | PROCESS_VM_READ, &oa, &cid);
            }
            
            println!("\n\t[-] NtOpenProcess status: {:#02X}", status);
    
            if status != 0 {
                return;
            }
    
            unsafe {
                status = syscall!("NtQueryVirtualMemory", currentProcess, &pid, 0, &mem_info, mem_info_len, NULL as PVOID);
            }
            
            println!("\n\t[-] NtQueryVirtualMemory status: {:#02X}", status);
            
            if status != 0 {
                return;
            }
    
            println!("\n\t[-] Protect value: {:#02X}\n\t", mem_info.Protect);
    
            unsafe {
                status = syscall!("NtClose", handle);
            }
            
            println!("\t[-] NtClose       status: {:#02X}", status);
        }
    

    Implementieren neuer Methoden zur Laufzeitauflösung von SSN- und Syscall-Adressen:

    Der gesamte für den Abruf von SSN und Adressen erforderliche Code ist in der Datei src\syscall_resolve.rs enthalten.

    Es gibt eine Kernfunktion zum Abrufen dieser Werte namens get_ssn mit 4 Implementierungen. Das übergebene Argument ist das Ergebnis des Aufrufs von crate::obf!(\<your function name\>). Die Rückgabewerte sind die SSN (u16) und, bei indirekten Syscalls, die Adresse der Syscall/Sysenter-Instruktion, die du verwenden möchtest.

    • x86_64 direkt:

      fn get_ssn(hash: u32) -> (u16);

    • x86_64 indirekt:

      fn get_ssn(hash: u32) -> (u16, u64);

    • x86 direkt:

      fn get_ssn(hash: u32) -> (u16);

    • x86 indirekt:

      fn get_ssn(hash: u32) -> (u16, u32);

    Implementiere diese Funktionen einfach mit der gewünschten Abrufmethode neu.


    Dank an SysWhispers3 für die starke Säule bei der Entwicklung dieser Bibliothek

    Tool herunterladen