The Official Radare2 Book | страница 3



A program to find byte patterns in files.

A frontend for r_egg. ragg2 compiles programs written in a simple high-level language into tiny binaries for x86, x86-64, and ARM.

$ 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!


$ cat hi.c

main@global(0,6) {

write(1, "Hello0", 6);

exit(0);

}

$ ragg2 hi.c

$ ./hi.c.bin

Hello

A launcher for running programs within different environments, with different arguments, permissions, directories, and overridden default file descriptors. rarun2 is useful for:

   • Solving crackmes

   • Fuzzing

   • Test suites

$ cat foo.rr2

#!/usr/bin/rarun2

program=./pp400

arg0=10

stdin=foo.txt

chdir=/tmp

#chroot=.

./foo.rr2

$ nc -l 9999

$ rarun2 program=/bin/ls connect=localhost:9999

1 - open a new terminal and type 'tty' to get a terminal name:

$ tty ; clear ; sleep 999999

/dev/ttyS010

2 - Create a new file containing the following rarun2 profile named foo.rr2:

#!/usr/bin/rarun2

program=/bin/ls

stdio=/dev/ttys010

3 - Launch the following radare2 command:

r2 -r foo.rr2 -d /bin/ls

A minimalistic mathematical expression evaluator for the shell that is useful for making base conversions between floating point values, hexadecimal representations, hexpair strings to ASCII, octal to integer, and more. It also supports endianness settings and can be used as an interactive shell if no arguments are given.

$ rax2 1337

0x539


$ rax2 0x400000

4194304


$ rax2 -b 01111001

y


$ rax2 -S radare2

72616461726532


$ rax2 -s 617765736f6d65

awesome

You can get radare from the GitHub repository: https://github.com/radareorg/radare2

Binary packages are available for a number of operating systems (Ubuntu, Maemo, Gentoo, Windows, iPhone, and so on). But you are highly encouraged to get the source and compile it yourself to better understand the dependencies, to make examples more accessible and, of course, to have the most recent version.

A new stable release is typically published every month.

The radare development repository is often more stable than the 'stable' releases. To obtain the latest version:

$ git clone https://github.com/radareorg/radare2.git

This will probably take a while, so take a coffee break and continue reading this book.