Esempio n. 1
0
from dexparser import Dexparser
from dexparser import uleb128_value
import disassembler
import numpy as np
from scipy import sparse
import sys

#dexfile = Dexparser('../apps/com.apporio.glitchr.apk_FILES/classes.dex')
dexfile = Dexparser(sys.argv[1])

opcode_list = []

c_list = dexfile.classdef_list()
class_cnt = 0
for class_idx, flag, superclass_idx, interfaces_off, source_file_idx, annotation_off, class_data_off, static_values_off in c_list:
    #print 'class: ' + str(class_cnt)
    class_cnt = class_cnt + 1
    if class_data_off == 0:
        continue

    [
        static_field_list, instance_field_list, direct_method_list,
        virtual_method_list
    ] = dexfile.classdata_list(class_data_off)
    method_cnt = 0
    ###compute 2-gram for direct method
    for diff, access_flags, code_off in direct_method_list:
        if code_off == 0:
            continue
        #print 'method: ' + str(method_cnt)
        size = ord(dexfile.mmap[code_off + 12]) + (
Esempio n. 2
0
# 最后将打印出来的五大索引区域的列表信息,都保存到文件中
# save_file = open('save.log', 'w')
# title = '%s\n---> %s <---\n%s\n' % ('-*-'*30, '%s', '-*-'*30)
# save_file.write("%s%s\n%s%s\n%s%s\n%s%s\n%s%s\n" % (\
#     title % 'string', '\n'.join(string_list),\
#     title % 'type', '\n'.join(type_string_list), \
#     title % 'proto', '\n'.join(proto_string_list), \
#     title % 'method', '\n'.join(method_string_list), \
#     title % 'field', '\n'.join(field_string_list) \
#     ))
# save_file.close()

print("-*-" * 40)

class_list = dex.classdef_list()
for classitem in class_list:
    class_id = classitem[0]
    access_flag = classitem[1]
    superclass_idx = classitem[2]
    interfaces_off = classitem[3]
    source_file_idx = classitem[4]
    annotation_off = classitem[5]
    class_data_off = classitem[6]
    static_values_off = classitem[7]

    implement_content = ''
    # interfaces = 

    print("%x: %s ---> %s %s extends %s %s" % (class_id, string_list[source_file_idx], access_flag, type_string_list[class_id], type_string_list[superclass_idx], implement_content))