Radare2, gcc and Docker toolkit
October 19, 2016
radare
docker
Let’s begin by creating a docker-compose.yml
file in our project root.
version: "2"
services:
build:
image: gcc
volumes:
- ./src:/src
command: "true"
radare:
image: remnux/radare2
volumes:
- ./src:/home/nonroot/workdir
command: "true"
Create a directory called src
in your project root and create a file
sample.c
inside that directory.
#include <stdio.h>
int main() {
int a = 1;
int b = 2;
printf("Hello, world");
return 0;
}
Build binary
$ docker-compose run --rm build gcc -o /src/sample /src/sample.c
Analyze binary
Launch the radare2
container.
$ docker-compose run --rm radare r2 sample
Use commands aa
to analyze the binary and pdf@main
to
print-disassemble-function
main function.
-- Thank you for using radare2. Have a nice night!
[0x004003f0]> aa
[x] Analyze all flags starting with sym. and entry0 (aa)
[0x004003f0]> pdf@main
;-- main:
/ (fcn) sym.main 40
| ; var int local_4h @ rbp-0x4
| ; var int local_8h @ rbp-0x8
| ; DATA XREF from 0x0040040d (entry0)
| 0x004004e6 55 push rbp
| 0x004004e7 4889e5 mov rbp, rsp
| 0x004004ea 4883ec10 sub rsp, 0x10
| 0x004004ee c745fc010000. mov dword [rbp - local_4h], 1
| 0x004004f5 c745f8020000. mov dword [rbp - local_8h], 2
| 0x004004fc bf94054000 mov edi, str.Hello__world ; "Hello, world" @ 0x400594
| 0x00400501 b800000000 mov eax, 0
| 0x00400506 e8b5feffff call sym.imp.printf
| 0x0040050b 90 nop
| 0x0040050c c9 leave
\ 0x0040050d c3 ret
[0x004003f0]>