C library that is intended for providing methods for executing and injecting code.
- Supports different ways of loading executable files in-memory.
- Supports most common executable file formats: ELF,PEandMach-O.
- Lightweight and small library that can be ported to almost every single program.
cmake -B build
cd build
make
sudo make install| Arch | Support | 
|---|---|
| x64 | yes | 
| aarch64 | yes | 
| armv5l | yes | 
| i486 | yes | 
| mips | yes | 
| powerpc | yes | 
| s390x | yes | 
| armv5b | yes | 
| mips64 | yes | 
| mipsel | yes | 
| powerpc64le | yes | 
#include <pawn.h>Execute main function from Mach-O bundle from buffer and pass argv and env as arguments.
int pawn_exec_bundle(usigned char *bundle, size_t size, char *argv[], char *env[]);Execute ELF from buffer and pass argv and env to it.
int pawn_exec(unsigned char *elf, char *argv[], char *env[])NOTE: This method does not work for statically linked targets since it uses dynamic interpreter as a part of ELF loading chain.
Write ELF to the file descriptor from buffer and execute it.
int pawn_exec_fd(unsigned char *elf, char *argv[], char *env[])- For examples - examples