Skip to content

Commit

Permalink
More and better r2pipe-api
Browse files Browse the repository at this point in the history
  • Loading branch information
radare committed Oct 13, 2017
1 parent 2ba3ff2 commit e3c587d
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 6 deletions.
31 changes: 27 additions & 4 deletions python/r2api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,43 @@ def __init__(self, r2):
self.searchIn = lambda x: self.r2.cmd('e search.in=%s'%(x))
self.analyzeCalls = lambda: self.r2.cmd('aac')
self.functions = lambda: ResultArray(self.r2.cmdj('aflj'))
self.basicBlocks = lambda: ResultArray(self.r2.cmdj('afbj'))
self.xrefsAt = lambda: ResultArray(self.r2.cmdj('axtj'))
self.refsTo = lambda: ResultArray(self.r2.cmdj('axfj'))
self.seek = lambda x: self.r2.cmd('s %s'%(x))

def read(self, len):
res = self.r2.cmd('p8 %s%s|'%(len, self._tmp_off))
self._tmp_off = ''
return res.decode("hex")

def write(self, buf):
res = self.r2.cmd('wx %s%s|'%(buf.encode("hex")), self._tmp_off)
self._tmp_off = ''
return res

def analyzeFunction(self):
res = self.r2.cmd('af %s|'%(self._tmp_off))
self._tmp_off = ''
return res

def disassembleFunction(self):
def disasmFunction(self):
res = self.r2.cmd('pdr %s|'%(self._tmp_off))
self._tmp_off = ''
return res

def disassemble(self, x):
res = self.r2.cmd('pd %s%s|'%(x,self._tmp_off))
def disasm(self, x):
res = self.r2.cmd('pd %s%s|'%(x, self._tmp_off))
self._tmp_off = ''
return res

def disasmBytes(self, x):
res = self.r2.cmd('pD %s%s|'%(x, self._tmp_off))
self._tmp_off = ''
return res

def bytes(self, x):
res = self.r2.cmd('p8 %s%s|'%(x,self._tmp_off))
self._tmp_off = ''
return res

Expand All @@ -63,7 +86,7 @@ def hexdump(self, x):
def at(self, x):
self._tmp_off = "@ %s"%(x)
return self

def quit(self):
self.r2.quit()
self.r2 = None
15 changes: 13 additions & 2 deletions python/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,23 @@
print r.at('entry0').hexdump(16)
print r.at('sym.imp.setenv').hexdump(16)

print r.at('entry0').disassemble(10)
print r.at('entry0').disasm(10)

print r.seek('entry0');
print r.analyzeFunction()
print r.disassembleFunction()
print r.disasmFunction()
for fcn in r.functions():
print fcn.name

print r.at('entry0 + 8').read(10)

for bb in r.basicBlocks():
print "B %s %s"%(bb.addr, bb.size)
try:
print r.at(bb.addr).disasmBytes(bb.size)
print "J %s"%(bb.jump)
print "F %s"%(bb.fail)
except:
pass

r.quit()

0 comments on commit e3c587d

Please sign in to comment.