Reverse engineering embedded software using Radare2
|Wiki Page:||Reverse engineering embedded software using Radare2|
The radare reverse engineering framework, including the radare2 disassembler/analyser, is a suite of tools built around a common library, that can be used to disassemble, decompile and reverse engineer software for a large number of processors, including x86, ARM, MIPS, PowerPC, Sparc, 68000 (and even the venerable 6502!)
The radare2 program provides much of the functionality of a particular three letter acronym "pro" software that costs hundreds of dollars. Development is active and ongoing on github. The tool is primarly console based, and highly scriptable, with features for generating graphical reports.
This tutorial will guide you through how to use the Radare2 open source reverse engineering tool to disassemble and understand software built for Linux on x86 PCs, and for embedded systems that use a MIPS-based system on chip. The tutorial includes two brief (5-10 minute) presentations on MIPS architecture and assembly and other relevant background topics.
Requirements: this is a hands on tutorial, bring your own laptop. We will be working with a version more recent than that provided by (for example, Debian Wheezy) so links to instructions will be posted to the conference chat list on how to install the software on typical Linux distributions prior to attendance. It would be advisable to do this prior to attendance so your time will be better spent learning how to use the tool.
Andrew McDonnell is a professional software engineer with two decades experience, having spent many years before that hacking code after receiving a Commodore 64 for Christmas at age 12. He has significant experience programming in C++, Java and Python and a multitude of scripting languages. Outside of family and work he sometimes has time to play with his collection of 8-bit and PC/XT-vintage computers; computing and electronics has always been his passion. He intermittently maintains a blog at http://blog.oldcomputerjunk.net sometimes posting how he solved a problem in the hope it may be useful to someone else.