-
Notifications
You must be signed in to change notification settings - Fork 22
1. Basic Concepts
Michal Ziulek edited this page Jun 25, 2025
·
2 revisions
bof-launcher
project initially started as an open-source library for launching BOFs programs on Windows and Linux systems outside of Cobalt Strike environment, soon became the go-to open adversary simulations toolkit for Windows (x86 & x86_64)
and Linux (x86, x86_64, ARMv6+, AArch64)
platforms.
bof-launcher library exposes following, well thought and efficient API
:
int bofLauncherInit(void);
void bofLauncherRelease(void);
int bofMemoryMaskKey(const unsigned char* key, int key_len);
int bofMemoryMaskWin32ApiCall(const char* win32_api_name, int masking_enabled);
int bofObjectInitFromMemory(const unsigned char* file_data_ptr, int file_data_len, BofObjectHandle* out_bof_handle);
void bofObjectRelease(BofObjectHandle bof_handle);
int bofObjectIsValid(BofObjectHandle bof_handle);
void* bofObjectGetProcAddress(BofObjectHandle bof_handle, const char* name);
int bofRun(const unsigned char* file_data_ptr, int file_data_len);
int bofObjectRun(BofObjectHandle bof_handle,
unsigned char* arg_data_ptr,
int arg_data_len,
BofContext** out_context);
int bofObjectRunAsyncThread(BofObjectHandle bof_handle,
unsigned char* arg_data_ptr,
int arg_data_len,
BofCompletionCallback completion_cb,
void* completion_cb_context,
BofContext** out_context);
int bofObjectRunAsyncProcess(BofObjectHandle bof_handle,
unsigned char* arg_data_ptr,
int arg_data_len,
BofCompletionCallback completion_cb,
void* completion_cb_context,
BofContext** out_context);
void bofContextRelease(BofContext* context);
int bofContextIsRunning(BofContext* context);
void bofContextWait(BofContext* context);
unsigned char bofContextGetExitCode(BofContext* context);
const char* bofContextGetOutput(BofContext* context, int* out_output_len);
BofObjectHandle bofContextGetObjectHandle(BofContext* context);
int bofArgsInit(BofArgs** out_args);
int bofArgsInit(BofArgs** out_args);
void bofArgsRelease(BofArgs* args);
int bofArgsAdd(BofArgs* args, unsigned char* arg, int arg_len);
void bofArgsBegin(BofArgs* args);
void bofArgsEnd(BofArgs* args);
const char* bofArgsGetBuffer(BofArgs* args);
int bofArgsGetBufferSize(BofArgs* args);
Our BOFs
collection:
https://github.com/The-Z-Labs/bof-launcher/tree/main/bofs
Command line interface for running BOFs programs, directly from filesystem without a need to spin up any adversary simulation toolkit:
https://github.com/The-Z-Labs/cli4bofs