Mercurial > paraspace
view paraspace/dump_code.py @ 84:63de54e61e5b
Add dump_code.py
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 20 Jul 2011 21:31:22 +0800 |
parents | |
children | 8a53e6f7f517 |
line wrap: on
line source
from paraspace.dexfile import DEXFile from paraspace.dalvik_opcodes import split_blk_2_insns, decode_inst from paraspace.dalvik_opcodes import format_inst def dump_code_item(item, dex): print 'registersSize: %d' % (item.registersSize) print 'insSize: %d' % (item.insSize) print 'outsSize: %d' % (item.outsSize) print 'triesSize: %d' % (item.triesSize) print 'debugInfoOff: 0x%x' % (item.debugInfoOff) print 'insnsSize: %d' % (item.insnsSize) block = item.insns.data op_vectors = [decode_inst(insn) for insn in split_blk_2_insns(block)] for op_vector in op_vectors: op_str = format_inst(op_vector) print '\t%s' % (op_str) pass pass def dump_code_items_filename(fn): dex = DEXFile.open(fn) items = dex.codeItems.items for item in items: dump_code_item(item, dex) pass pass if __name__ == '__main__': import sys if len(sys.argv) != 2: print >> sys.stderr, 'Usage: %s <dex file>' % (sys.argv[0]) sys.exit(1) pass fn = sys.argv[1] dump_code_items_filename(fn) pass