RZ\_RUN(1) General Commands Manual RZ\_RUN(1)

# [NAME](#NAME)

`rz-run` — rizin utility to run programs in custom environments

# [SYNOPSIS](#SYNOPSIS)

`rz-run` \[`directives` | `script.rz`] \[`--` `program` \[`args`]]

# [DESCRIPTION](#DESCRIPTION)

This command is part of the Rizin project.

This program is used as a launcher for running programs with different environment, arguments, permissions, directories and overridden default file descriptors.

[`-l`](#l)

List all the supported profile directives.

[`-t`](#t)

Output a base template profile. Try rz-run -d &gt; profile.rz

[`-w`](#w)

Show the terminal name and wait for a connection from another process. Try rz-run stdio=&lt;ttypath&gt; program=/bin/sh

The program accepts a single argument which is the filename of the configuration file to run the program.

It is useful when you have to run a program using long arguments or pass long data to stdin or things like that usually required for exploiting crackmes :)

# [DIRECTIVES](#DIRECTIVES)

The rrz (rz-run) configuration file accepts the following directives, described as key=value entries and comments defined as lines starting with '#'.

`arg[0-511]`

Set value for argument N passed to the program

`aslr`

Enable or disable ASLR

`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

`core`

Set no limit the core file size

`connect`

Connect stdin/stdout/stderr to a socket

`pty`

Use a pty for connection over socket (with connect/listen)

`envfile`

Set a file with lines like \`var=value\` to be used as env

`fork`

Used with the listen option, allow to spawn a different process for each connection. Ignored when debugging.

`input`

Set string to be passed to the program via stdin

`libpath`

Override path where the dynamic loader will look for shared libraries

`listen`

Bound stdin/stdout/stderr to a listening socket

`maxstack`

Set the maximum size for the stack

`maxproc`

Set the maximum number of processes

`maxfd`

Set the maximum number of file descriptors

`nice`

Set the niceness level of the process

`preload`

Preload a library (not supported on Windows, only linux,osx,bsd)

`daemon`

Set to false by default, otherwise it will run the program in background, detached from the terminal.

`program`

Path to program to be executed

`pid`

Set to true to print the PID of the process to stderr

`pidfile`

Print the PID of the process to the specified file

`runlib`

Path to the library to be executed

`runlib.fcn`

Function name to call from runlib library

`rzpreload`

Preload with librz, kill -USR1 to get an rizin shell or -USRZ to spawn a webserver in a thread

`setenv`

Set value for given environment variable

`setegid`

Set effective process group id

`seteuid`

Set effective process uid

`setgid`

Set process group id

`setuid`

Set process uid

`sleep`

Sleep for the given amount of seconds

`stdio=value`

Set io streams (stdin, stdout, stderr) to a value

`stdio=!cmd`

Redirect input/output to the process created by the specified command

`stdin`

Set stdin, stdout, and stderr streams to the specified value

`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

`timeoutsig`

Signal to use when killing the child because the timeout happens

`unsetenv`

Unset one environment variable

# [VALUE PREFIXES](#VALUE_PREFIXES)

Every value in this configuration file can contain a special

`@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

# [EXAMPLES](#EXAMPLES)

Sample rz-run script

$ cat foo.rrz  
#!/usr/bin/rz-run  
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.rrz

Connecting a program to a socket

`nc` `-l` `9999`

`rz-run` `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 rizin  
$ rizin -r foo.rrz -d ls  
$ cat foo.rrz  
#!/usr/bin/rz-run  
stdio=/dev/ttys010  
\## Or you can use -R to set a key=value  
rizin -R stdio=/dev/ttys010 -d ls

You can also use the `--` flag to specify program and arguments in a more natural way:

`rz-run` `timeout=2` `file ...` `--` sleep 4

Run a library function

`rz-run` `runlib=/lib/libc-2.25.so` `runlib.fcn=system` `arg1="ls /"`

# [SEE ALSO](#SEE_ALSO)

[rizin(1)](/man/os/rizin/rizin.1), [rz-asm(1)](/man/os/rizin/rz-asm.1), [rz-bin(1)](/man/os/rizin/rz-bin.1), [rz-diff(1)](/man/os/rizin/rz-diff.1), [rz-find(1)](/man/os/rizin/rz-find.1), [rz-gg(1)](/man/os/rizin/rz-gg.1) ， [rz-hash(1)](/man/os/rizin/rz-hash.1)

# [AUTHORS](#AUTHORS)

pancake &lt;pancake@nopcode.org&gt;

byteninjaa0

January 24, 2024 Linux 4.19.0-gvisor

---

Document: rz-run(1) from rizin 0.9.1-r2 (Chainguard OS)
Source: https://github.com/rizinorg/rizin
