Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
stealth_call — Заголовочная библиотека для Windows x64 с косвенными системными вызовами. Без CRT, без IAT, VEH anti-BP, обход AMSI/ETW, память W^X, динамические заглушки для каждого вызова. | Kitploit
Инструменты/GitHubGitHub/share-devn/stealth_call
Повышение привилегийКриминалистика памятиЭксплуатацияОбход IDS/IPSШелл-кодПост-эксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHubshare-devn/stealth_call

stealth_call

Заголовочная библиотека для Windows x64 с косвенными системными вызовами. Без CRT, без IAT, VEH anti-BP, обход AMSI/ETW, память W^X, динамические заглушки для каждого вызова.

Репозиторий
74 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

stealth_call


Что это?

Заголовочная библиотека для Windows x64, позволяющая вызывать любые NT-сискаллы без обращения к импортам ntdll, без оставления строк в бинарнике и без типичных «красных флагов», от которых у EDR сносит крышу.

Ни CRT, ни STL, ни IAT. Всё компилируется в ~19 КБ без единой DLL-зависимости.

Создана, чтобы избежать типовых недостатков существующих библиотек сискаллов — открытого текста строк, известных констант хешей, прямых сискаллов из памяти за пределами ntdll, импортов IAT, кричащих «я делаю что-то странное», IOC SEC_NO_CHANGE, раздутия от CRT. Здесь ничего такого нет.


Возможности

Движок сискаллов

  • Косвенные сискаллы — заглушки прыгают внутрь собственного syscall; ret-гаджета ntdll, так что RIP всегда находится внутри ntdll в момент выполнения инструкции syscall
  • Генерация заглушек на каждый вызов — каждый вызов строит свежую заглушку со случайным мусором, случайной компоновкой, XOR-замаскированным номером сискалла. Ничто не используется повторно
  • Обеспечение режима W^X — страницы для черновика переключаются RW → RX → RW. RWX никогда не выделяется
  • Заглушки немедленно затираются после каждого вызова
  • Сискаллы извлекаются из отображения секции \KnownDlls\ntdll.dll (без доступа к файловой системе, невидимо для ProcMon)
  • На типичной системе Windows 11 разрешается 977 сискаллов

Anti-Breakpoint

  • Подход на основе VEH — если отладчик проставит 0xCC в вашу целевую функцию, обработчик исключения незаметно восстанавливает исходный байт, выполняет инструкцию в пошаговом режиме, а затем возвращает брейкпоинт на место. Отладчик никогда не узнает, что его обошли. Нулевое временное окно
  • Работает с любой функцией в любой DLL, не только в ntdll

Обход

  • Обход AMSI — патчит AmsiScanBuffer, заставляя возвращать S_OK
  • Обход ETW — патчит EtwEventWrite, заставляя возвращать SUCCESS
  • Все патчи выполняются через прямые сискаллы, а не VirtualProtect
  • XOR-шифрованные строки повсюду — имена DLL, пути, всё. Расшифровываются на стеке, затираются после использования
  • Собственный алгоритм хеширования (не FNV-1a, не CRC32 — нет известных YARA-сигнатур)
  • Обход PEB для разрешения всех модулей/функций — без GetModuleHandle и GetProcAddress

Качество кода

  • Заголовочная библиотека — кидаете папку stealth/ в свой проект и работаете
  • Потокобезопасность за счёт страниц-черновиков на поток и спинлоков
  • Полная очистка при завершении — освобождение страниц-черновиков, обнуление карт, удаление VEH
  • Обнаружение хуков для типовых EDR-трамплинов (jmp rel32, jmp [rip], mov rax + jmp rax)

Как это работает

схема работы

Путь сискалла

  1. initialize() открывает ntdll через секцию \KnownDlls, разбирает PE-экспорт, извлекает все номера сискаллов
  2. Сканирует .text ntdll в поиске гаджета syscall; ret — именно из него будет выполняться настоящая инструкция syscall
  3. При вызове sc::invoke():
    • Находит запись сискалла по хешу
    • Забирает страницу-черновик вызывающего потока (или выделяет новую, только RW)
    • emit_stub() строит уникальную полиморфную заглушку — случайные мусорные инструкции до и после, XOR-замаскированный номер сискалла с уникальным на каждый вызов ключом, косвенный jmp на ntdll-гаджет
    • Переключает страницу из RW в RX
    • Вызывает через заглушку
    • Переключает обратно RX → RW
    • Обнуляет байты заглушки

Ни в какой момент не существует RWX-памяти. Ни в какой момент инструкция syscall не выполняется за пределами ntdll. Ни в какой момент номера сискаллов не хранятся в открытом виде.

VEH-трамплин

Вы вызываете tramp::invoke() с целевой функцией. Если брейкпоинта нет — функция просто выполняется без каких-либо накладных расходов. Если отладчик проставил 0xCC:

  1. Срабатывает исключение INT3
  2. Наш VEH-обработчик проверяет, принадлежит ли адрес нашей таблице (поиск по хешу, не линейный перебор)
  3. Восстанавливает исходный байт из чистой копии, прочитанной с диска
  4. Устанавливает флаг Trap Flag
  5. Продолжает выполнение — настоящая инструкция выполняется
  6. Срабатывает исключение пошагового выполнения
  7. Обработчик возвращает 0xCC на место

Список брейкпоинтов отладчика по-прежнему показывает, что точка остановки активна. Она просто никогда не срабатывает при наших вызовах.


Сборка

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

Требуется MSVC (VS 2019+) и CMake 3.15+. Результат — ~19 КБ с нулевыми импортами.


Использование

Сискаллы

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"

// работает, даже если в x64dbg стоит BP на 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();

Очистка

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

Структура проекта

root@kitploit:~
stealth/
  common.hpp      — операции с памятью, спинлок, static_map, PRNG, отладочный вывод
  hash.hpp        — пользовательский хеш времени компиляции
  xorstr.hpp      — XOR-шифрование строк времени компиляции
  peb.hpp         — обход PEB, разбор экспорта PE, обнаружение хуков
  syscall.hpp     — движок косвенных сискаллов, генератор заглушек, W^X, защита от дампа
  trampoline.hpp  — VEH-антибрейкпоинт
  bypass.hpp      — патчинг AMSI и ETW

Лицензия

MIT — делайте с ним что хотите.

Скачать инструмент