Tutorials/Reverse engineering embedded software using Radare2
This page describes preparation for Reverse engineering embedded software using Radare2
We will try and get through all the following:
- Introduction to Radare2 reverse engineering tool
- The Radare2 utilities
- Basics of using the Radare2 reverse engineering to with a binary you probably have on your laptop
- Looking at an arduino binary
- Introduction to MIPS architecture and assembly
- Extracting firmware images
You might like to bring your own binary to play with as well instead!
Important - please make an rc file
Radare2 was created by other, many people. Radare2 will by default print fortune cookies. Please, turn this feature off, by making the following file, in case there is a possibility of NSFW output.
Instructions for Linux/Unix systems:
echo 'e cfg.fortunes=false' > ~/.radare2rc
If you are planning to work through the examples and try your own thing during the session, you really want to get this sorted before the event.
- a C compiler and libraries needed to build radare2 - the "apt-gettable" version is out of date
- xdot for viewing callgraphs.
Various other tools may be helpful, and indeed needed (e.g. an editor) to complete some of the examples
If you are using a Debian-derived distro, for example:
sudo apt-get install build-essential xdot eog ghex binwalk vim gedit srecord
It should be possible to build radare2 on Linux, FreeBSD/NetBSD etc, Max OS/X and Windows and possibly on Android if you try hard enough (using a Debian root, for example)
However, the tutorial examples have only been tested using Debian Wheezy.
Clone & build radare2
Note, changing to the lca2015_tutorial branch is important, because the software is under active development there could be breakage in master upstream
git clone http://github.com/pastcompute/radare2 cd radare2 git checkout tutorial_branch ./configure make -j sudo make symstall
Note, you can install as a normal user if you need to:
./configure --prefix=$HOME/path/to/wherever make -j sudo make symstall export PATH=$HOME/path/to/wherever:$PATH
Clone the examples repository
The tutorial is not until Tuesday Afternoon so if you need help with the above ping me on Twitter : @pastcompute