Mercurial > paraspace
view paraspace/dump_code.py @ 134:3dee4d929e1f
Wrap _DEX_TypeList to _DEX_TypeList_align before append to list.
- Fix the issue described by map_verify_error_test().
- When inject a _DEX_ClassDef, dexfile_insert_classdefs_relative() should
also inject related _DEX_TypeList.
- But, dex_append_obj_list() does not known that _DEX_TypeList
should be wrapped to to _DEX_TypeList_align and appended to
DEXFile.typeLists. We add a special case in
dex_append_obj_list() to wrap _DEX_TypeList before trying to
insert to a list.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Tue, 09 Aug 2011 17:23:01 +0800 |
parents | 8a53e6f7f517 |
children |
line wrap: on
line source
from paraspace.dexfile import DEXFile from paraspace.dalvik_opcodes import decode_insn_blk, 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_insn_blk(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