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
Tools/GitHubGitHub/kitsune-de/stealth_call
DefensivwerkzeugeExploitationMalware-AnalyseRed TeamingPayload-EntwicklungAnti-Bot
GitHubkitsune-de/stealth_call

stealth_call

# Nur-Header Windows x64 indirekte Syscall-Bibliothek. Kein CRT, kein IAT, VEH Anti-BP, AMSI/ETW-Bypass, W^X-Speicher, dynamische Stubs pro Aufruf.

Repository anzeigen
78vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

stealth_call


Was ist das?

Header-only-Bibliothek für Windows x64, mit der du beliebige NT-Syscalls aufrufen kannst, ohne ntdll-Imports anzufassen, ohne Strings in deiner Binary zu hinterlassen und ohne die üblichen Warnsignale, die EDRs aus der Fassung bringen.

Kein CRT. Kein STL. Kein IAT. Das Ganze kompiliert auf ~19KB herunter – mit buchstäblich null DLL-Abhängigkeiten.

Entwickelt, um die typischen Fallstricke bestehender Syscall-Bibliotheken zu vermeiden – Klartext-Strings, bekannte Hash-Konstanten, direkte Syscalls aus Nicht-ntdll-Speicher, IAT-Imports, die schreien „Ich mache etwas Seltsames“, SEC_NO_CHANGE-IOC, CRT-Aufblähung. Nichts davon hier.


Funktionen

Syscall-Engine

  • Indirekte Syscalls – Stubs springen in ntdlls eigenes syscall; ret-Gadget, sodass RIP beim Auslösen des Syscall-Befehls immer innerhalb von ntdll liegt
  • Per-Call-Stub-Generierung – jeder einzelne Aufruf erzeugt einen frischen Stub mit zufälligem Müll, zufälligem Layout, XOR-verschlüsselter Syscall-Nummer. Nichts wird wiederverwendet
  • W^X-Durchsetzung – Scratch-Seiten gehen RW → RX → RW. RWX wird niemals allokiert, Punkt
  • Stubs werden unmittelbar nach jedem Aufruf gelöscht
  • Syscalls werden aus der \KnownDlls\ntdll.dll-Section-Mapping extrahiert (kein Dateisystemzugriff, unsichtbar für ProcMon)
  • 977 Syscalls werden auf einem typischen Win11-System aufgelöst

Anti-Breakpoint

  • VEH-basierter Ansatz – wenn ein Debugger ein 0xCC auf deine Zielfunktion setzt, stellt der Exception-Handler stillschweigend das ursprüngliche Byte wieder her, führt die Instruktion im Single-Step aus und setzt den Breakpoint danach wieder zurück. Der Debugger merkt nie, dass er umgangen wurde. Null Timing-Fenster
  • Funktioniert mit jeder Funktion in jeder DLL, nicht nur ntdll

Evasion

  • AMSI-Bypass – patcht AmsiScanBuffer, um S_OK zurückzugeben
  • ETW-Bypass – patcht EtwEventWrite, um SUCCESS zurückzugeben
  • Sämtliches Patchen erfolgt über direkte Syscalls, nicht über VirtualProtect
  • XOR-verschlüsselte Strings überall – DLL-Namen, Pfade, alles. Auf dem Stack entschlüsselt, nach Gebrauch gelöscht
  • Eigener Hash-Algorithmus (nicht FNV-1a, nicht CRC32 – keine bekannten YARA-Signaturen)
  • PEB-Walk für alle Modul-/Funktionsauflösungen – kein GetModuleHandle, kein GetProcAddress

Code-Qualität

  • Header-only, stealth/-Ordner in dein Projekt werfen und loslegen
  • Thread-sicher über Per-Thread-Scratch-Seiten + Spinlocks
  • Vollständige Bereinigung beim Herunterfahren – Scratch-Seiten freigegeben, Mappings genullt, VEH entfernt
  • Hook-Erkennung für gängige EDR-Trampoline (jmp rel32, jmp [rip], mov rax + jmp rax)

Wie es funktioniert

flow

Syscall-Pfad

  1. initialize() öffnet ntdll über die \KnownDlls-Section, parst PE-Exports und sammelt jede Syscall-Nummer ein
  2. Scannt ntdll .text nach einem syscall; ret-Gadget – von hier aus wird der eigentliche Syscall-Befehl ausgeführt
  3. Wenn du sc::invoke() aufrufst:
    • Sucht den Syscall-Eintrag per Hash
    • Holt die Scratch-Seite des aufrufenden Threads (oder allokiert eine, nur RW)
    • emit_stub() baut einen einzigartigen polymorphen Stub – zufällige Junk-Instruktionen davor/danach, XOR-verschleierte Syscall-Nummer mit einem Per-Call-Schlüssel, indirekter jmp zum ntdll-Gadget
    • Wechselt die Seite von RW → RX
    • Ruft durch den Stub auf
    • Wechselt zurück von RX → RW
    • Nullt die Stub-Bytes aus

Zu keinem Zeitpunkt existiert RWX-Speicher. Zu keinem Zeitpunkt wird ein syscall-Befehl außerhalb von ntdll ausgeführt. Zu keinem Zeitpunkt werden Syscall-Nummern im Klartext gespeichert.

VEH-Trampolin

Du rufst tramp::invoke() mit der Zielfunktion auf. Wenn kein Breakpoint vorhanden ist – läuft die Funktion einfach normal mit null Overhead. Wenn ein Debugger 0xCC platziert hat:

  1. INT3-Exception feuert
  2. Unser VEH-Handler prüft, ob die Adresse in unserer Tabelle ist (Hash-Lookup, kein linearer Scan)
  3. Stellt das ursprüngliche Byte aus einer sauberen, von der Platte gelesenen Kopie wieder her
  4. Setzt das Trap-Flag
  5. Setzt die Ausführung fort – die echte Instruktion läuft
  6. Single-Step-Exception feuert
  7. Handler setzt 0xCC zurück

Die Breakpoint-Liste des Debuggers zeigt den Breakpoint weiterhin als aktiv an. Der Breakpoint wird bei unseren Aufrufen nur nie ausgelöst.


Build

root@kitploit:~
cmake -B build -A x64
cmake --build build --config Release

Benötigt MSVC (VS 2019+) und CMake 3.15+. Ausgabe ist ~19KB mit null Imports.


Verwendung

Syscalls

root@kitploit:~
#include "stealth/syscall.hpp"

stealth::sc::initialize();

PVOID base = nullptr;
SIZE_T size = 0x1000;
NTSTATUS status = stealth::sc::invoke<NTSTATUS>(
    HASH("NtAllocateVirtualMemory"),
    NtCurrentProcess(), &base, (ULONG_PTR)0, &size,
    (ULONG)(MEM_COMMIT | MEM_RESERVE), (ULONG)PAGE_READWRITE
);

Anti-Breakpoint

root@kitploit:~
#include "stealth/trampoline.hpp"

// funktioniert auch, wenn x64dbg einen BP auf MessageBoxA gesetzt hat
int ret = stealth::tramp::invoke<int>(
    HASH_CI("user32.dll"), HASH("MessageBoxA"),
    (HWND)nullptr, (LPCSTR)"hello", (LPCSTR)"title", (UINT)MB_OK
);

AMSI / ETW

root@kitploit:~
#include "stealth/bypass.hpp"

stealth::bypass::patch_etw();
stealth::bypass::patch_amsi();

Bereinigung

root@kitploit:~
stealth::tramp::shutdown();
stealth::sc::shutdown();

Projektstruktur

root@kitploit:~
stealth/
  common.hpp      — Speicheroperationen, Spinlock, static_map, PRNG, Debug-Ausgabe
  hash.hpp        — Compile-Zeit eigener Hash
  xorstr.hpp      — Compile-Zeit XOR-Stringverschlüsselung
  peb.hpp         — PEB-Walk, PE-Export-Parser, Hook-Erkennung
  syscall.hpp     — Indirekte Syscall-Engine, Stub-Generator, W^X, Anti-Dump
  trampoline.hpp  — VEH-basierter Anti-Breakpoint
  bypass.hpp      — AMSI + ETW-Patching

Lizenz

MIT – mach damit, was du willst.

Tool herunterladen