这是一个利用dex2jar将apk反解为jar的代码
#!/usr/bin/env python
# coding=utf-8
import os
import sys
import shutil
import zipfile
def unzip_dex(in_path, out_path):
if not os.path.exists(out_path):
os.makedirs(out_path)
zip_apk_path = os.path.join(out_path, "base.zip")
shutil.copy(in_path, zip_apk_path)
z = zipfile.ZipFile(zip_apk_path, 'r')
dex_file_list = []
for file_name in z.namelist():
if file_name.endswith(".dex"):
z.extract(member=file_name, path=out_path)
dex_file_list.append(os.path.join(out_path, file_name))
return dex_file_list
def run_dex2jar(dex_list, out_path):
for dex_file in dex_list:
jar_file = os.path.join(out_path, dex_file).split('.')[0]
jar_file += ".jar"
cmd = "d2j-dex2jar " + dex_file + " -f -o " + str(jar_file) + " -e " + out_path
print(cmd)
ret = os.popen(cmd).read()
print(ret)
def main(in_path, out_path):
dex_list = unzip_dex(in_path, out_path)
run_dex2jar(dex_list, out_path)
if __name__ == '__main__':
i_path = sys.argv[1]
o_path = sys.argv[2]
main(i_path, o_path)