84
|
1 from paraspace.dexfile import DEXFile
|
|
2 from paraspace.dalvik_opcodes import split_blk_2_insns, decode_inst
|
|
3 from paraspace.dalvik_opcodes import format_inst
|
|
4
|
|
5
|
|
6 def dump_code_item(item, dex):
|
|
7 print 'registersSize: %d' % (item.registersSize)
|
|
8 print 'insSize: %d' % (item.insSize)
|
|
9 print 'outsSize: %d' % (item.outsSize)
|
|
10 print 'triesSize: %d' % (item.triesSize)
|
|
11 print 'debugInfoOff: 0x%x' % (item.debugInfoOff)
|
|
12 print 'insnsSize: %d' % (item.insnsSize)
|
|
13 block = item.insns.data
|
|
14 op_vectors = [decode_inst(insn) for insn in split_blk_2_insns(block)]
|
|
15 for op_vector in op_vectors:
|
|
16 op_str = format_inst(op_vector)
|
|
17 print '\t%s' % (op_str)
|
|
18 pass
|
|
19 pass
|
|
20
|
|
21
|
|
22 def dump_code_items_filename(fn):
|
|
23 dex = DEXFile.open(fn)
|
|
24 items = dex.codeItems.items
|
|
25 for item in items:
|
|
26 dump_code_item(item, dex)
|
|
27 pass
|
|
28 pass
|
|
29
|
|
30
|
|
31 if __name__ == '__main__':
|
|
32 import sys
|
|
33
|
|
34 if len(sys.argv) != 2:
|
|
35 print >> sys.stderr, 'Usage: %s <dex file>' % (sys.argv[0])
|
|
36 sys.exit(1)
|
|
37 pass
|
|
38
|
|
39 fn = sys.argv[1]
|
|
40 dump_code_items_filename(fn)
|
|
41 pass
|