Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
stealth_call — Libreria di syscall indirette per Windows x64 solo header. Zero CRT, zero IAT, VEH anti-BP, bypass AMSI/ETW, memoria W^X, stub dinamici per chiamata. | Kitploit
Strumenti/GitHubGitHub/share-devn/stealth_call
Escalation di PrivilegiMemory ForensicsExploitEvasione IDS/IPSShellcodePost-ExploitRed TeamingSviluppo Payload
GitHubshare-devn/stealth_call

stealth_call

Libreria di syscall indirette per Windows x64 solo header. Zero CRT, zero IAT, VEH anti-BP, bypass AMSI/ETW, memoria W^X, stub dinamici per chiamata.

Vedi Repository
74 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

stealth_call


Cos'è?

Libreria header-only per Windows x64 che consente di invocare qualsiasi syscall NT senza toccare gli import di ntdll, senza lasciare stringhe nel binario e senza i soliti campanelli d'allarme che fanno impazzire gli EDR.

Niente CRT. Niente STL. Niente IAT. L'intero progetto compila a circa 19KB con zero dipendenze DLL.

Costruita per evitare le trappole comuni delle librerie di syscall esistenti: stringhe in chiaro, costanti hash note, syscall diretta da memoria non ntdll, import IAT che urlano "sto facendo qualcosa di strano", IOC SEC_NO_CHANGE, ingombro CRT. Niente di tutto questo qui.


Caratteristiche

Motore Syscall

  • Syscall indirette: gli stub saltano al gadget syscall; ret di ntdll, quindi RIP è sempre dentro ntdll quando viene eseguita l'istruzione syscall
  • Generazione di stub per chiamata: ogni singola invocazione costruisce uno stub nuovo con junk casuale, layout casuale, numero di syscall XORato. Niente viene riutilizzato
  • Imposizione W^X: le pagine scratch vanno RW → RX → RW. RWX non viene mai allocato, punto
  • Stub cancellati immediatamente dopo ogni chiamata
  • Syscall estratte dalla sezione di mapping \KnownDlls\ntdll.dll (nessun accesso al filesystem, invisibile a ProcMon)
  • 977 syscall risolte su un tipico sistema Windows 11

Anti-Breakpoint

  • Approccio basato su VEH: se un debugger piazza uno 0xCC sulla funzione target, l'handler di eccezioni ripristina silenziosamente il byte originale, esegue l'istruzione in single-step, poi rimette il breakpoint. Il debugger non sa mai che è stato bypassato. Zero finestra temporale
  • Funziona su qualsiasi funzione in qualsiasi DLL, non solo ntdll

Evasion

  • Bypass AMSI: patch AmsiScanBuffer per restituire S_OK
  • Bypass ETW: patch EtwEventWrite per restituire SUCCESS
  • Tutte le patch fatte tramite syscall dirette, non VirtualProtect
  • Stringhe crittografate con XOR ovunque: nomi DLL, percorsi, tutto. Decriptato sullo stack, cancellato dopo l'uso
  • Algoritmo di hash personalizzato (non FNV-1a, non CRC32 – nessuna firma YARA nota)
  • Walk del PEB per la risoluzione di moduli/funzioni – niente GetModuleHandle, niente GetProcAddress

Qualità del Codice

  • Header-only, trascina la cartella stealth/ nel tuo progetto e via
  • Thread-safe grazie a pagine scratch per thread + spinlock
  • Pulizia completa allo shutdown: pagine scratch liberate, mappe azzerate, VEH rimosso
  • Rilevamento hook per trampolini EDR comuni (jmp rel32, jmp [rip], mov rax + jmp rax)

Come Funziona

flow

Percorso Syscall

  1. initialize() apre ntdll tramite la sezione \KnownDlls, analizza gli export PE e estrae ogni numero di syscall
  2. Scansiona il .text di ntdll alla ricerca di un gadget syscall; ret – da qui verrà eseguita l'effettiva istruzione syscall
  3. Quando chiami sc::invoke():
    • Cerca l'entry della syscall tramite hash
    • Prende la pagina scratch del thread chiamante (o ne alloca una, solo RW)
    • emit_stub() costruisce uno stub polimorfico unico – istruzioni junk casuali prima/dopo, numero di syscall offuscato con XOR e chiave per chiamata, jmp indiretto al gadget di ntdll
    • Passa la pagina da RW a RX
    • Chiama tramite lo stub
    • Riporta da RX a RW
    • Azzera i byte dello stub

In nessun momento esiste memoria RWX. In nessun momento un'istruzione syscall viene eseguita al di fuori di ntdll. In nessun momento i numeri di syscall sono memorizzati in chiaro.

Trampoline VEH

Chiami tramp::invoke() con la funzione target. Se non c'è breakpoint – la funzione viene eseguita normalmente con overhead zero. Se un debugger ha piazzato 0xCC:

  1. Viene sollevata l'eccezione INT3
  2. Il nostro handler VEH verifica se l'indirizzo è nella nostra tabella (lookup tramite hash, non scansione lineare)
  3. Ripristina il byte originale da una copia pulita letta dal disco
  4. Imposta il Trap Flag
  5. Continua l'esecuzione – viene eseguita l'istruzione reale
  6. Viene sollevata l'eccezione di single-step
  7. L'handler rimette 0xCC

La lista dei breakpoint del debugger mostra ancora il breakpoint come attivo. Il breakpoint semplicemente non scatta mai sulle nostre chiamate.


Compilazione

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

Richiede MSVC (VS 2019+) e CMake 3.15+. L'output è ~19KB con zero import.


Utilizzo

Syscall

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"

// works even if x64dbg has a BP on 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();

Cleanup

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

Struttura del Progetto

root@kitploit:~
stealth/
  common.hpp      — operazioni su memoria, spinlock, static_map, PRNG, debug output
  hash.hpp        — hash custom a tempo di compilazione
  xorstr.hpp      — crittografia XOR di stringhe a tempo di compilazione
  peb.hpp         — walk del PEB, parser export PE, rilevamento hook
  syscall.hpp     — motore syscall indiretto, generatore stub, W^X, anti-dump
  trampoline.hpp  — anti-breakpoint basato su VEH
  bypass.hpp      — patch AMSI + ETW

Licenza

MIT – fai quello che vuoi con essa.

Scarica lo strumento