Files
sibouzitoun b7d3cf717c Release v1.2.0: Indirect Syscalls & Pipeline Decoupling
- Implemented fully decoupled direct and indirect syscall invocation
- Added dynamic PEB-based gadget scanning (syscall; ret / sysenter)
- Added x86 & x64 inline MASM stubs with proper stack frame alignment
- Introduced SND_USE_DEFAULTS compile-time OpSec macro for lean payload compilation
- Extensive documentation across all primitives and examples
2026-06-29 19:31:15 +01:00
..

Injection Domain

Remote process injection: open target, allocate remote memory, write payload, set protections, create a remote thread. Cross-process operations route through an injected snd_process_api_t table.

Shared context vs loader contexts

Unlike loaders, all injection techniques share snd_inj_ctx_t (sindri/injection/context.h). Stage machine, handles, remote fields, and proc_api are identical across classic and future techniques.

Each technique adds engine functions and chains under a subdirectory but mutates the same context:

include/sindri/injection/
├── context.h           <- shared across ALL techniques
└── classic/
    ├── engine.h        <- per-stage classic engine
    └── chain.h         <- snd_inj_classic_shell, snd_inj_classic_pe

Loader contexts are per-technique (snd_ldr_pe_ctx_t today).

Header map

Header Role
sindri/injection.h Umbrella include
sindri/injection/context.h snd_inj_ctx_t, stages, snd_inj_cleanup
sindri/injection/classic.h Classic technique umbrella
sindri/injection/classic/engine.h Per-stage engine functions
sindri/injection/classic/chain.h snd_inj_classic_shell, snd_inj_classic_pe

Implemented techniques

Technique Chain Payload
Classic shellcode snd_inj_classic_shell Raw buffer in inj_ctx.payload
Classic PE snd_inj_classic_pe Local bake + remote execute (requires snd_ldr_pe_ctx_t)

PoCs

PoC Chain Profile
pocs/inject_shell/main.c snd_inj_classic_shell KnownDlls bootstrap + snd_proc_win
pocs/inject_pe/main.c snd_inj_classic_pe snd_mem_sys, snd_mod_nt, snd_proc_sys

Table of Contents