示例#1
0
def extract_dex(file_path):

    start_time = time.time()
    logging.warning('{} is processing...'.format(file_path))

    a, d, dx = AnalyzeAPK(
        file_path)  # type: (APK, list[DalvikVMFormat], Analysis)

    dex = list(a.get_all_dex())[0]

    end_time = time.time()
    logging.warning('{} cost {}s'.format(file_path,
                                         format(end_time - start_time, '.2f')))

    return dex
        'urls':
        get_urls(apk),
    }

    # Certificate
    if len(apk.get_certificates()) > 0:
        cert = apk.get_certificates()[0]
        res['certificate']['sha1'] = cert.sha1_fingerprint.replace(' ', '')
        res['certificate']['serial'] = '{:X}'.format(cert.serial_number)
        res['certificate']['issuerDN'] = convert_x509_name(cert.issuer)
        res['certificate']['subjectDN'] = convert_x509_name(cert.subject)
        res['certificate']['not_before'] = cert['tbs_certificate']['validity'][
            'not_before'].native.strftime('%b %-d %X %Y %Z')
        res['certificate']['not_after'] = cert['tbs_certificate']['validity'][
            'not_after'].native.strftime('%b %-d %X %Y %Z')

    # Dexes
    dex_names = list(apk.get_dex_names())
    dex_values = list(apk.get_all_dex())
    for dex in range(len(dex_names)):
        m = hashlib.sha256()
        m.update(dex_values[dex])
        res['dexes'][dex_names[dex][:-4]] = {
            'sha256': m.hexdigest(),
            'ssdeep': ssdeep.hash(dex_values[dex])
        }

    res['functionalities'] = find_functionalities(dexes)

    print(json.dumps(res, indent=4, sort_keys=True))