Introduction
Introduction
What is Sysplant?
Sysplant is a syscall factory — a Python tool that generates native Windows syscall stub files in C, C++, NIM, or Rust. The generated files let your code invoke Windows kernel services directly, bypassing the user-land hooks that Endpoint Detection & Response (EDR) products insert into ntdll.dll.
Rather than writing (or copy-pasting) gate code by hand, Sysplant lets you:
- Choose an iterator that resolves syscall numbers at runtime.
- Choose a method that controls how the
syscallinstruction is executed. - Select the functions you need (or use a preset).
- Generate a drop-in source file for your language of choice.
Why syscall bypasses?
Modern EDRs operate by placing hooks — typically jmp trampolines — at the start of Nt* / Zw* functions inside ntdll.dll. Any process that calls those functions has its execution redirected into the EDR's callback for inspection.
Direct and indirect syscall techniques skip ntdll entirely (or jump past the hook) so the kernel is invoked without passing through monitored code paths.
Architecture overview
sysplant/
├── sysplant.py Main Sysplant class (public API)
├── constants/ Language extensions, preset lists, internal symbols
├── managers/
│ └── templateManager.py Selects the right code generator
└── templates/ (per-language generators)
├── NIMGenerator
├── CGenerator
├── CppGenerator
└── RustGenerator
main.py CLI entry point (argparse)
bridge_mcp_sysplant.py MCP server entry point (FastMCP)
The Sysplant class selects a generator based on arch + syscall + language. The generator builds the stub file from its internal template; generate() wires in the chosen iterator and method; output() writes the result to disk.
Key concepts
| Concept | One-liner |
|---|---|
| Iterator | How the correct syscall number (SSN) is found at runtime |
| Method | How the syscall instruction is invoked |
| Preset | A curated list of Nt* functions (common, donut, all) |
| Scramble | Randomise 23 internal SPT_* symbol names |
| Gate | Shorthand for a specific iterator + its default method |
Continue to Installation →