Reference

Python API

The programmatic API — PayloadFactory and ExecutableFactory.

Python API

The public entry point is PayloadFactory (payloadfactory/factory/payload_factory.py). It orchestrates shellcode loading and delegates to ExecutableFactory (payloadfactory/factory/executable_factory.py) for embedding, evasion, syscall generation, and compilation.

PayloadFactory

from payloadfactory.factory.payload_factory import PayloadFactory

Constructor

PayloadFactory(arch: str, os_: str = "windows")
ArgumentValuesNotes
arch"x86", "x64"Anything else raises NotImplementedError.
os_"windows", "linux"Must be in PayloadConstants.SUPPORTED_OS.

Methods

MethodSignaturePurpose
convert_exe(name, args=None, compress=True) → bytearrayConvert a Windows PE to shellcode via donut.
get_shellcode(shellfile) → bytearrayExtract shellcode from an object file with objdump.
load_shellcode_file(name) → bytearrayLoad raw (.bin/.hex/.raw) or object-file shellcode.
load_shellcode_str(shellcode) → bytearrayLoad shellcode from a string.
string_to_bytearray(buf) → bytearrayUTF-8 encode a string.
generate(method="current_thread", params=None) → boolValidate technique, build stub, compile.
loggerattributeThe shared LoggerSingleton.

generate params

generate() accepts a params dict. Recognized keys (mirroring the CLI):

KeyTypeDefault
outfilestrresult.exe
recoverystrembedded (CLI default is jumper_randomized)
randomizeboolTrue
ppidboolTrue
syscallsstrstubs
evasion_hookslist[str][]
evasion_checkslist[str | dict][]
encoderstrnone (plain)
dllboolFalse
dll_proxystrNone
key_source / key_valuestrNone
clangboolFalse
debugboolFalse

ExecutableFactory

from payloadfactory.factory.executable_factory import ExecutableFactory
ExecutableFactory(arch: str, recovery: str, os_: str = "windows")

Key methods (all return the updated template string or True):

MethodSignaturePurpose
set_method(method, params)Load the injection stub, set process, libs, PPID spoof.
set_evasion(name)Register a hook: etw, amsi, unhook, sleep_obf.
set_sandbox_check(name, args=None)Register a check: cpu, memory, dll, hostname, username, domain, sleep.
set_env_keying(source, target_value)Bind key to hostname/domain/username/mac.
set_dll(dll, proxy=None)Enable DLL output / export proxying.
generate_syscalls(method, randomize)SysPlant generation (Windows) / no-op (Linux).
finalize_patterns()Clear any leftover //#### ... #### markers.
generate(shellcode, method, params)Run the full embedding pipeline.
compile(outfile, clang, debug=False)Write stub and cross-compile.

ExecutableFactory extends AbstractFactory (payloadfactory/abstracts/abstract_factory.py), which provides generate_key, generate_random_syscall, generate_random_seed, and generate_random_egg.

Minimal programmatic example

from payloadfactory.factory.payload_factory import PayloadFactory

bot = PayloadFactory("x64", os_="windows")
bot.load_shellcode_file("shellcode.bin")

params = {
    "outfile": "payload.exe",
    "recovery": "jumper_randomized",
    "syscalls": "sysplant",
    "evasion_hooks": ["etw", "amsi"],
    "evasion_checks": ["cpu"],
}

bot.generate("thread_hijack", params)

Note: params key names are exactly as above — the CLI maps argparse dests onto these keys (e.g. --evasion → evasion_hooks, --sandbox → evasion_checks).

Copyright © 2026