FreeBSD Manual Pages
NAME rarun2 -- radare2 utility to run programs in exotic environments SYNOPSIS rarun2 [-vt] [directives ...] [script.rr2] [Fl- program args ...] DESCRIPTION A launcher for executing programs with custom environments, arguments, per- missions, working directories, and redirected file descriptors. Supports inline directive arguments, script files, or program specifica- tions after the '--' separator. Ideal for simplifying complex command lines, preparing specialized environ- ments, and automating testing or exploitation scenarios. OPTIONS -v Show version -t Show terminal name -- Use remaining arguments as program and program arguments DIRECTIVES The rr2 (rarun2) configuration file accepts the following directives, de- scribed as key=value entries and comments defined as lines starting with '#'. program= Path to program to be executed arg0=..argN= Set values for arguments passed to the program aslr= Enable or disable ASLR (yes|no) bits= Set 32 or 64 bit (if the architecture supports it) chdir= Change directory before executing the program chroot= Run the program in chroot (requires some previous setup) clearenv= Unset the whole environment (true|false) connect= Connect stdin/stdout/stderr to a socket (host:port) core= Set no limit to the core file size (true|false) daemon= Run in background, detached from terminal (default: false) envfile= Set a file with lines like 'var=value' to be used as env execve= Use execve instead of posix_spawn (osx tricks) fork= Allow spawning different process for each connection with 'lis- ten' input= Set string to be passed to the program via stdin libpath= Override path where the dynamic loader looks for shared li- braries listen= Bind stdin/stdout/stderr to a listening socket (port) maxfd= Set the maximum number of file descriptors maxproc= Set the maximum number of processes maxstack= Set the maximum size for the stack nice= Set the niceness level of the process pid= Set process pid pidfile= Write pid to a file preload= Preload a library (not supported on Windows, only linux,osx,bsd) pty= Use a pty for connection over socket (true|false) r2preload= Preload with libr2, kill -USR1 for r2 shell, -USR2 for web- server r2preweb= Run webserver in a thread at start with r2preload runlib= Path to the library to be executed runlib.fcn= Function name to call from runlib library setegid= Set effective process group id seteuid= Set effective process uid setenv= Set value for given environment variable (NAME=VALUE) setgid= Set process group id setuid= Set process uid sleep= Sleep for the given amount of seconds before execution stderrout= Redirect stderr file descriptor to stdout (true|false) stdio= Select file or terminal for stdout/stderr/stdin stdin= Select file to read data from stdin stdout= Select file to replace stdout file descriptor stderr= Select file to replace stderr file descriptor system= Execute the given command timeout= Set a timeout in seconds timeoutsig= Signal to use when killing child on timeout (SIGTERM) times= Print runtime in milliseconds to stderr (true|false) unsetenv= Unset one environment variable VALUE PREFIXES Every value in this configuration file can contain a special prefix: @filename Slurp contents of file and put them inside the key text Escape characters useful for hex chars 'string' Escape characters useful for hex chars !cmd Run command to store the output in the variable :102030 Parse hexpair string and store it in the variable :!cmd Parse hexpair string from output of command and store it in the variable %1234 Parses the input string and returns it as integer @300@ABCD 300 characters filled with ABCD pattern ENVIRONMENT RARUN2_ARGS Useful to run "rarun2" but parse arguments from environment var EXAMPLES Sample rarun2 script: $ cat foo.rr2 #!/usr/bin/rarun2 program=./pp400 arg0=10 stdin=foo.txt chdir=/tmp clearenv=true setenv=EGG=eggsy setenv=NOFUN=nogames unsetenv=NOFUN # EGG will be the only env variable #chroot=. $ ./foo.rr2 Connecting a program to a socket: $ nc -l 9999 $ rarun2 program=/bin/ls connect=localhost:9999 Debugging a program redirecting IO to another terminal: ## open a new terminal and type 'tty' to get $ tty ; clear ; sleep 999999 /dev/ttyS010 ## in another terminal run r2 $ r2 -r foo.rr2 -d ls $ cat foo.rr2 #!/usr/bin/rarun2 stdio=/dev/ttys010 ## Or you can use -R to set a key=value r2 -R stdio=/dev/ttys010 -d ls You can also use the -- flag to specify program and arguments: $ rarun2 timeout=2 -- sleep 4 Run a library function: $ rarun2 runlib=/lib/libc-2.25.so runlib.fcn=system arg1="ls /" SEE ALSO radare2(1) AUTHORS Written by pancake <pancake@nopcode.org> Jul 10, 2025 RARUN2(1)
NAME | SYNOPSIS | DESCRIPTION | OPTIONS | DIRECTIVES | VALUE PREFIXES | ENVIRONMENT | EXAMPLES | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rarun2&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>
