
헤더 전용 Windows x64 간접 syscall 라이브러리. CRT 없음, IAT 없음, VEH 안티-BP, AMSI/ETW 우회, W^X 메모리, 호출별 동적 스텁.
Windows x64용 헤더 전용 라이브러리로, ntdll 임포트를 건드리지 않고, 바이너리에 문자열을 남기지 않고, EDR이 의심을 품게 만드는 일반적인 위험 신호 없이 모든 NT 시스템 콜을 호출할 수 있게 해줍니다.
CRT 없음. STL 없음. IAT 없음. 전체가 DLL 의존성 0개로 약 19KB로 컴파일됩니다.
기존 시스템 콜 라이브러리의 흔한 함정(평문 문자열, 알려진 해시 상수, ntdll이 아닌 메모리에서의 직접 시스템 콜, "이상한 짓을 하고 있다"는 신호를 보내는 IAT 임포트, SEC_NO_CHANGE IOC, CRT 비대화)을 피하도록 설계되었습니다. 여기에는 그런 게 전혀 없습니다.
시스템 콜 엔진
syscall; ret 가젯으로 점프하므로, 시스템 콜 명령이 실행될 때 RIP는 항상 ntdll 내부에 있습니다\KnownDlls\ntdll.dll 섹션 매핑에서 시스템 콜 추출 (파일시스템 접근 없음, ProcMon에 보이지 않음)안티-브레이크포인트
회피
AmsiScanBuffer를 패치하여 S_OK 반환EtwEventWrite를 패치하여 SUCCESS 반환코드 품질
stealth/ 폴더를 프로젝트에 넣고 바로 사용
initialize()가 \KnownDlls 섹션을 통해 ntdll을 열고, PE 익스포트를 파싱하고, 모든 시스템 콜 번호를 가져옵니다.text에서 syscall; ret 가젯을 스캔 — 실제 시스템 콜 명령이 실행될 위치입니다sc::invoke()를 호출하면:
emit_stub()이 고유한 다형성 스텁을 생성 — 앞뒤로 임의의 잡음 명령, 호출별 키로 XOR 난독화된 시스템 콜 번호, ntdll 가젯으로의 간접 점프어느 시점에도 RWX 메모리는 존재하지 않습니다. 어느 시점에도 syscall 명령이 ntdll 외부에서 실행되지 않습니다. 어느 시점에도 시스템 콜 번호가 평문으로 저장되지 않습니다.
대상 함수와 함께 tramp::invoke()를 호출합니다. 브레이크포인트가 없으면 — 함수는 오버헤드 없이 정상적으로 실행됩니다. 디버거가 0xCC를 설치했다면:
디버거의 브레이크포인트 목록에는 여전히 활성 상태로 표시됩니다. 브레이크포인트는 우리 호출에서 절대 트리거되지 않을 뿐입니다.
cmake -B build -A x64
cmake --build build --config Release
MSVC (VS 2019+) 및 CMake 3.15+ 필요. 출력은 임포트 0개로 약 19KB입니다.
#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
);
#include "stealth/trampoline.hpp"
// x64dbg가 MessageBoxA에 BP를 설치해도 작동
int ret = stealth::tramp::invoke<int>(
HASH_CI("user32.dll"), HASH("MessageBoxA"),
(HWND)nullptr, (LPCSTR)"hello", (LPCSTR)"title", (UINT)MB_OK
);
#include "stealth/bypass.hpp"
stealth::bypass::patch_etw();
stealth::bypass::patch_amsi();
stealth::tramp::shutdown();
stealth::sc::shutdown();
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 — 원하는 대로 사용하세요.