Source code for vdb.extensions.arm
import envi.cli as e_cli
import envi.archs.arm.thumb as e_thumb
def thumb(db, line):
[docs] '''
Disassemble thumb instructions from the given address.
Usage: thumb <addr_exp>
'''
t = db.getTrace()
d = e_thumb.ArmThumbDisasm()
argv = e_cli.splitargs(line)
size = 20
argc = len(argv)
if argc == 0:
addr = t.getProgramCounter()
else:
addr = t.parseExpression(argv[0])
if argc > 1:
size = t.parseExpression(argv[1])
bytes = t.readMemory(addr, size)
offset = 0
db.vprint("Dissassembly:")
while offset < size:
va = addr + offset
op = d.disasm(bytes, offset, va)
obytes = bytes[offset:offset+len(op)]
db.canvas.addVaText('0x%.8x' % va, va=va)
db.canvas.addText(": %s " % obytes.encode('hex').ljust(17))
op.render(db.canvas)
db.canvas.addText("\n")
offset += len(op)
def vdbExtension(db, trace):
[docs] db.config.set('Aliases','db','mem -F bytes')
db.config.set('Aliases','dw','mem -F u_int_16')
db.config.set('Aliases','dd','mem -F u_int_32')
db.config.set('Aliases','dq','mem -F u_int_64')
db.config.set('Aliases','dr','mem -F "Deref View"')
db.config.set('Aliases','ds','mem -F "Symbols View"')
db.registerCmdExtension(thumb)