Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
stealth_call — Header-only Windows x64 indirect syscall library. Zero CRT, zero IAT, VEH anti-BP, AMSI/ETW bypass, W^X memory, per-call dynamic stubs. Biblioteca de syscall indireto para Windows x64 apenas com header. Zero CRT, zero IAT, VEH anti-BP, bypass de AMSI/ETW, memória W^X, stubs dinâmicos por chamada. | Kitploit
Ferramentas/GitHubGitHub/kitsune-de/stealth_call
Ferramentas DefensivasExploraçãoAnálise de MalwareRed TeamingDesenvolvimento de PayloadsAnti-Bot
GitHubkitsune-de/stealth_call

stealth_call

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
647há 5 mesesAinda não revisado

Sobre

Header-only Windows x64 indirect syscall library. Zero CRT, zero IAT, VEH anti-BP, AMSI/ETW bypass, W^X memory, per-call dynamic stubs. Biblioteca de syscall indireto para Windows x64 apenas com header. Zero CRT, zero IAT, VEH anti-BP, bypass de AMSI/ETW, memória W^X, stubs dinâmicos por chamada.

Compartilhar

stealth_call


O que é isto?

Biblioteca header-only para Windows x64 que permite invocar qualquer syscall do NT sem tocar em imports do ntdll, sem deixar strings no binário e sem os habituais sinais de alerta que fazem os EDRs perderem a cabeça.

Sem CRT. Sem STL. Sem IAT. Tudo compila para ~19KB com literalmente zero dependências de DLL.

Construída para evitar as armadilhas comuns das bibliotecas de syscall existentes — strings em texto puro, constantes de hash conhecidas, syscall direto a partir de memória fora do ntdll, imports de IAT que gritam "estou a fazer algo estranho", IOC SEC_NO_CHANGE, inchaço de CRT. Nada disso aqui.


Funcionalidades

Motor de Syscall
  • Syscalls indiretos — os stubs saltam para o gadget syscall; ret do próprio ntdll, para que o RIP esteja sempre dentro do ntdll quando a instrução syscall é executada
  • Geração de stubs por chamada — cada invocação individual constrói um stub novo com lixo aleatório, layout aleatório e número de syscall com XOR. Nada é reutilizado
  • Aplicação de W^X — as páginas de rascunho passam por RW → RX → RW. RWX nunca é alocado, ponto final
  • Stubs apagados imediatamente após cada chamada
  • Syscalls extraídos do mapeamento da secção \KnownDlls\ntdll.dll (sem acesso ao sistema de ficheiros, invisível para o ProcMon)
  • 977 syscalls resolvidos num sistema Win11 típico

Anti-Breakpoint

  • Abordagem baseada em VEH — se um debugger colocar um 0xCC na função alvo, o handler de exceção restaura silenciosamente o byte original, executa a instrução em single-step e volta a colocar o breakpoint. O debugger nunca sabe que foi contornado. Zero janela de tempo
  • Funciona em qualquer função de qualquer DLL, não apenas no ntdll

Evasão

  • Bypass de AMSI — aplica patch em AmsiScanBuffer para retornar S_OK
  • Bypass de ETW — aplica patch em EtwEventWrite para retornar SUCCESS
  • Todos os patches feitos através de syscalls diretos, não via VirtualProtect
  • Strings encriptadas com XOR em todo o lado — nomes de DLL, caminhos, tudo. Desencriptadas na stack, apagadas após uso
  • Algoritmo de hash personalizado (não é FNV-1a, não é CRC32 — sem assinaturas YARA conhecidas)
  • Walk do PEB para toda a resolução de módulos/funções — sem GetModuleHandle, sem GetProcAddress

Qualidade de Código

  • Header-only, basta colocar a pasta stealth/ no projeto e avançar
  • Thread-safe via páginas de rascunho por thread + spinlocks
  • Limpeza completa no encerramento — páginas de rascunho libertadas, mapas zerados, VEH removido
  • Deteção de hooks para trampolines comuns de EDR (jmp rel32, jmp [rip], mov rax + jmp rax)

Como Funciona

flow

Caminho do Syscall

  1. initialize() abre o ntdll através da secção \KnownDlls, analisa os exports do PE e recolhe todos os números de syscall
  2. Procura no .text do ntdll um gadget syscall; ret — é daqui que a instrução syscall real será executada
  3. Quando chamas sc::invoke():
    • Procura a entrada do syscall por hash
    • Obtém a página de rascunho da thread chamadora (ou aloca uma, apenas RW)
    • emit_stub() constrói um stub polimórfico único — instruções de lixo aleatórias antes/depois, número de syscall ofuscado com XOR e chave por chamada, jmp indireto para o gadget do ntdll
    • Alterna a página de RW → RX
    • Chama através do stub
    • Alterna de volta RX → RW
    • Zera os bytes do stub

Em nenhum momento existe memória RWX. Em nenhum momento uma instrução syscall é executada fora do ntdll. Em nenhum momento os números de syscall são armazenados em texto puro.

Trampolim VEH

Chamas tramp::invoke() com a função alvo. Se não houver breakpoint — a função simplesmente executa normalmente com zero overhead. Se um debugger colocou 0xCC:

  1. A exceção INT3 é disparada
  2. O nosso handler VEH verifica se o endereço está na nossa tabela (lookup por hash, não scan linear)
  3. Restaura o byte original a partir de uma cópia limpa lida do disco
  4. Define o Trap Flag
  5. Continua a execução — a instrução real é executada
  6. A exceção de single-step é disparada
  7. O handler volta a colocar o 0xCC

A lista de breakpoints do debugger ainda mostra o breakpoint como ativo. Simplesmente nunca é acionado nas nossas chamadas.


Compilação

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

Requer MSVC (VS 2019+) e CMake 3.15+. O output é ~19KB com zero imports.


Utilização

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"

// funciona mesmo que o x64dbg tenha um BP em 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();

Limpeza

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

Estrutura do Projeto

root@kitploit:~
stealth/
  common.hpp      — operações de memória, spinlock, static_map, PRNG, output de debug
  hash.hpp        — hash personalizado em tempo de compilação
  xorstr.hpp      — encriptação de strings XOR em tempo de compilação
  peb.hpp         — walk do PEB, parser de exports PE, deteção de hooks
  syscall.hpp     — motor de syscall indireto, gerador de stubs, W^X, anti-dump
  trampoline.hpp  — anti-breakpoint baseado em VEH
  bypass.hpp      — patching de AMSI + ETW

Licença

MIT — faz o que quiseres com isto.

Baixar ferramenta