Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
stealth_call — En-tête uniquement pour bibliothèque d'appels système indirects Windows x64. Zéro CRT, zéro IAT, VEH anti-BP, contournement AMSI/ETW, mémoire W^X, stubs dynamiques par appel. | Kitploit
Outils/GitHubGitHub/kitsune-de/stealth_call
Outils DéfensifsExploitationAnalyse de MalwareRed TeamingDéveloppement de Charges UtilesAnti-Bot
GitHubkitsune-de/stealth_call

stealth_call

En-tête uniquement pour bibliothèque d'appels système indirects Windows x64. Zéro CRT, zéro IAT, VEH anti-BP, contournement AMSI/ETW, mémoire W^X, stubs dynamiques par appel.

Voir le dépôt
646il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

stealth_call


Qu'est-ce que c'est ?

Bibliothèque header-only pour Windows x64 qui vous permet d'invoquer n'importe quel syscall NT sans toucher aux imports ntdll, sans laisser de chaînes de caractères dans votre binaire, et sans les signaux d'alerte habituels qui font perdre la tête aux EDR.

Pas de CRT. Pas de STL. Pas d'IAT. Le tout se compile en ~19KB avec littéralement zéro dépendance DLL.

Conçue pour éviter les pièges courants des bibliothèques de syscalls existantes — chaînes en clair, constantes de hachage connues, syscall direct depuis une mémoire hors ntdll, imports IAT qui crient « je fais quelque chose de bizarre », IOC SEC_NO_CHANGE, bloat CRT. Rien de tout ça ici.


Fonctionnalités

Moteur de syscalls

  • Syscalls indirects — les stubs sautent dans le gadget syscall; ret propre à ntdll, donc RIP est toujours à l'intérieur de ntdll lorsque l'instruction syscall s'exécute
  • Génération de stub par appel — chaque invocation unique construit un stub frais avec du bruit aléatoire, une disposition aléatoire, un numéro de syscall XORé. Rien n'est réutilisé
  • Application de W^X — les pages de travail passent RW → RX → RW. RWX n'est jamais alloué, point final
  • Stubs effacés immédiatement après chaque appel
  • Syscalls extraits du mappage de section \KnownDlls\ntdll.dll (aucun accès au système de fichiers, invisible pour ProcMon)
  • 977 syscalls résolus sur un système Win11 typique

Anti-Breakpoint

  • Approche basée sur VEH — si un débogueur place un 0xCC sur votre fonction cible, le gestionnaire d'exceptions restaure silencieusement l'octet d'origine, exécute l'instruction en pas-à-pas, puis remet le breakpoint en place. Le débogueur ne sait jamais qu'il a été contourné. Zéro fenêtre de timing
  • Fonctionne sur n'importe quelle fonction dans n'importe quelle DLL, pas seulement ntdll

Évasion

  • Bypass AMSI — patche AmsiScanBuffer pour retourner S_OK
  • Bypass ETW — patche EtwEventWrite pour retourner SUCCESS
  • Tout le patching est fait via des syscalls directs, pas via VirtualProtect
  • Chaînes XOR-chiffrées partout — noms de DLL, chemins, tout. Déchiffrées sur la pile, effacées après usage
  • Algorithme de hachage personnalisé (pas FNV-1a, pas CRC32 — aucune signature YARA connue)
  • Parcours du PEB pour toute résolution de module/fonction — pas de GetModuleHandle, pas de GetProcAddress

Qualité du code

  • Header-only, déposez le dossier stealth/ dans votre projet et c'est parti
  • Thread-safe via des pages de travail par thread + spinlocks
  • Nettoyage complet à l'arrêt — pages de travail libérées, mappages remis à zéro, VEH supprimé
  • Détection de hooks pour les trampolines EDR courants (jmp rel32, jmp [rip], mov rax + jmp rax)

Comment ça fonctionne

flow

Chemin des syscalls

  1. initialize() ouvre ntdll via la section \KnownDlls, analyse les exports PE, récupère chaque numéro de syscall
  2. Scanne le .text de ntdll pour trouver un gadget syscall; ret — c'est là que l'instruction syscall réelle s'exécutera
  3. Lorsque vous appelez sc::invoke() :
    • Recherche l'entrée du syscall par hachage
    • Récupère la page de travail du thread appelant (ou en alloue une, RW uniquement)
    • emit_stub() construit un stub polymorphe unique — instructions de bruit aléatoires avant/après, numéro de syscall obfusqué par XOR avec une clé par appel, jmp indirect vers le gadget ntdll
    • Bascule la page RW → RX
    • Appelle à travers le stub
    • Rebascule RX → RW
    • Remet à zéro les octets du stub

À aucun moment la mémoire RWX n'existe. À aucun moment une instruction syscall ne s'exécute en dehors de ntdll. À aucun moment les numéros de syscall ne sont stockés en clair.

Trampoline VEH

Vous appelez tramp::invoke() avec la fonction cible. S'il n'y a pas de breakpoint — la fonction s'exécute normalement avec zéro surcoût. Si un débogueur a placé un 0xCC :

  1. L'exception INT3 se déclenche
  2. Notre gestionnaire VEH vérifie si l'adresse est dans notre table (recherche par hachage, pas un scan linéaire)
  3. Restaure l'octet d'origine depuis une copie propre lue sur le disque
  4. Active le Trap Flag
  5. Continue l'exécution — la vraie instruction s'exécute
  6. L'exception de pas-à-pas se déclenche
  7. Le gestionnaire remet le 0xCC en place

La liste des breakpoints du débogueur affiche toujours le breakpoint comme actif. Le breakpoint ne se déclenche simplement jamais sur nos appels.


Compilation

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

Nécessite MSVC (VS 2019+) et CMake 3.15+. La sortie fait ~19KB avec zéro import.


Utilisation

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"

// fonctionne même si x64dbg a un BP sur MessageBoxA
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();

Nettoyage

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

Structure du projet

root@kitploit:~
stealth/
  common.hpp      — opérations mémoire, spinlock, static_map, PRNG, sortie de débogage
  hash.hpp        — hachage personnalisé au moment de la compilation
  xorstr.hpp      — chiffrement de chaînes XOR au moment de la compilation
  peb.hpp         — parcours du PEB, analyseur d'exports PE, détection de hooks
  syscall.hpp     — moteur de syscalls indirects, générateur de stubs, W^X, anti-dump
  trampoline.hpp  — anti-breakpoint basé sur VEH
  bypass.hpp      — patching AMSI + ETW

Licence

MIT — faites-en ce que vous voulez.

Télécharger l’outil