R2_NOPLUGINS
Do not load any plugin
Radare2 frontend for r_egg; compiles programs into tiny binaries for x86 and arm architectures
ragg2 [-FOLsrxhvz]
[-a
arch]
[-b
bits]
[-k
os]
[-o
file]
[-i
sc]
[-I
path]
[-E
enc]
[-B
hex]
[-c
k=v]
[-C
file]
[-p
pad]
[-q
off]
[-S
string]
[-f
fmt]
[-nN
dword]
[-dDw
off:hex]
[-e
expr]
Frontend for r_egg, compiling assembly programs into minimal binaries for x86-32, x86-64, and ARM architectures.
Built on top of r_asm and r_bin, it provides a library for generating small standalone binaries across supported platforms.
Programs generated by r_egg are relocatable and can be injected in a running process or on-disk binary file.
ragg2 can generate shellcodes from C code. The final code can be linked with rabin2 and it is relocatable, so it can be used to inject it on any remote process.
-a arch
Select architecture (x86, mips, arm)
-b bits
Register size (32, 64, ..)
-B hexpairs
Append some hexpair bytes
-c k=v
Set configuration options
-C file
Append contents of file
-d off:dword
Patch dword (4 bytes) at given offset
-D off:qword
Patch qword (8 bytes) at given offset
-e egg-expr
Take egg program from string instead of file
-E encoder
Use specific encoder. See -L
-f format
Output format (raw, c, pe, elf, mach0, python, javascript)
-F
Output native format (osx=mach0, linux=elf, ..)
-h
Show usage help message
-H var
Display variable
-i shellcode
Include shellcode plugin, uses options. See -L
-I path
Add include path
-k os
Operating system's kernel (linux,bsd,osx,w32)
-L
List all plugins (shellcodes and encoders)
-n dword
Append 32bit number (4 bytes)
-N dword
Append 64bit number (8 bytes)
-o file
Output file
-O
Use default output file (filename without extension or a.out)
-p padding
Add padding after compilation (padding=n10s32) ntas : begin nop, trap, 'a', sequence NTAS : same as above, but at the end
-P size
Prepend debruijn pattern
-q fragment
Debruijn pattern offset
-r
Show raw bytes instead of hexpairs
-s
Show assembler
-S string
Append a string
-v
Show version information
-w off:hex
Patch hexpairs at given offset
-x
Execute
-X hexpairs
Execute rop chain, using the stack provided
-z
Output in C string syntax
R2_NOPLUGINS
Do not load any plugin
R2_PLUGINS_ORDER
Plugin load order: i=internal, e=env, h=home, s=system; default=iehs; ? prints help
Using r_egg language:
$ cat hi.r
/* hello world in r_egg */
write@syscall(4); //x64 write@syscall(1);
exit@syscall(1); //x64 exit@syscall(60);
main@global(128) {
.var0 = "hi!\n";
write(1,.var0, 4);
exit(0);
}
$ ragg2 -O -F hi.r
$ ./hi
hi!
Using C language:
$ cat hi.c
main() {
write(1, "Hello\n", 6);
exit(0);
}
$ ragg2 -O -F hi.c
$ ./hi
Hello
Tiny binary output:
$ wc -c < hi
165
Compiled shellcode with zeroes:
$ ragg2 hi.c | tail -1
eb0748656c6c6f0a00bf01000000488d35edffffffba06000000b8010
000000f0531ffb83c0000000f0531c0c3
Using XOR encoder with key 64:
$ ragg2 -e xor -c key=64 -B $(ragg2 hi.c | tail -1)
6a2d596a405be8ffffffffc15e4883c60d301e48ffc6e2f9ab4708252
c2c2f4a40ff4140404008cd75adbfbfbffa46404040f8414040404f45
71bff87c4040404f45718083
3 releases since Debian 7 (Wheezy); the text changed 2 times.
-B since Arch Linux 2026-11-01;
-C since Arch Linux 2026-11-01;
-D since Arch Linux 2026-11-01;
-E since Arch Linux 2026-11-01;
-F since Arch Linux 2026-11-01;
-H since Arch Linux 2026-11-01;
-I since Arch Linux 2026-11-01;
-L since Arch Linux 2026-11-01;
-N since Arch Linux 2026-11-01;
-O since Arch Linux 2026-11-01;
-P since Arch Linux 2026-11-01;
-S since Arch Linux 2026-11-01;
-X since Arch Linux 2026-11-01;
-a since Arch Linux 2026-11-01;
-b since Arch Linux 2026-11-01;
-c since Arch Linux 2026-11-01;
-d since Arch Linux 2026-11-01;
-e since Arch Linux 2026-11-01;
-f since Arch Linux 2026-11-01;
-h since Arch Linux 2026-11-01;
-i since Arch Linux 2026-11-01;
-k since Arch Linux 2026-11-01;
-n since Arch Linux 2026-11-01;
-o since Arch Linux 2026-11-01;
-p since Arch Linux 2026-11-01;
-q since Arch Linux 2026-11-01;
-r since Arch Linux 2026-11-01;
-s since Arch Linux 2026-11-01;
-v since Arch Linux 2026-11-01;
-w since Arch Linux 2026-11-01;
-x since Arch Linux 2026-11-01;
-z since Arch Linux 2026-11-01.