Package vdb :: Package extensions :: Module arm
[hide private]
[frames] | no frames]

Source Code for Module vdb.extensions.arm

 1   
 2  import envi.cli as e_cli 
 3  import envi.archs.arm.thumb as e_thumb 
 4   
5 -def thumb(db, line):
6 ''' 7 Disassemble thumb instructions from the given address. 8 9 Usage: thumb <addr_exp> 10 ''' 11 t = db.getTrace() 12 13 d = e_thumb.ArmThumbDisasm() 14 15 argv = e_cli.splitargs(line) 16 size = 20 17 argc = len(argv) 18 if argc == 0: 19 addr = t.getProgramCounter() 20 else: 21 addr = t.parseExpression(argv[0]) 22 23 if argc > 1: 24 size = t.parseExpression(argv[1]) 25 26 bytes = t.readMemory(addr, size) 27 offset = 0 28 29 db.vprint("Dissassembly:") 30 while offset < size: 31 va = addr + offset 32 op = d.disasm(bytes, offset, va) 33 obytes = bytes[offset:offset+len(op)] 34 35 36 db.canvas.addVaText('0x%.8x' % va, va=va) 37 db.canvas.addText(": %s " % obytes.encode('hex').ljust(17)) 38 op.render(db.canvas) 39 db.canvas.addText("\n") 40 41 offset += len(op)
42
43 -def vdbExtension(db, trace):
44 db.config.set('Aliases','db','mem -F bytes') 45 db.config.set('Aliases','dw','mem -F u_int_16') 46 db.config.set('Aliases','dd','mem -F u_int_32') 47 db.config.set('Aliases','dq','mem -F u_int_64') 48 db.config.set('Aliases','dr','mem -F "Deref View"') 49 db.config.set('Aliases','ds','mem -F "Symbols View"') 50 db.registerCmdExtension(thumb)
51