File: test-r2rc.py

package info (click to toggle)
radare2 0.9.6-3.1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 17,496 kB
  • ctags: 45,959
  • sloc: ansic: 240,999; sh: 3,645; makefile: 2,520; python: 1,212; asm: 312; ruby: 214; awk: 209; perl: 188; lisp: 169; java: 23; xml: 17; php: 6
file content (44 lines) | stat: -rwxr-xr-x 734 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/python
# -- pancake

import sys
from r_asm import *
from r_util import *
from r_bin import *

try:
	program = sys.argv[1]
except:
	print "Usage: test-r2rc [path-to-program]"
	sys.exit (1)

a = RAsm ()
a.use ("x86.nasm")

b = RBin ()
off_printf = 0
b.load (program, None)
baddr = b.get_baddr ()
for i in b.get_imports ():
	if i.name == "printf":
		off_printf = baddr+i.rva
		break

if off_printf == 0:
	print "Program %s does not imports 'printf'"%program
	sys.exit(1)

r2rc_code="""
printf@alias(0x%08lx);

main@global(32,32) {
	printf ("Hello World\n");
}
"""%(off_printf)

r2rc_asm = RSystem.cmd_str ("r2rc", r2rc_code)[0]
code = a.massemble (r2rc_asm)
if code is None:
	print "Cannot assemble"
else:
	print code.buf_hex