This commit is contained in:
Jean-Marie Mineau 2024-11-05 16:05:50 +01:00
parent 4f197877ca
commit ef809274e4

View file

@ -311,11 +311,11 @@ def check_smali():
with (d / "app.apk").open("wb") as fp: with (d / "app.apk").open("wb") as fp:
fp.write(apk_bin) fp.write(apk_bin)
with zipfile.ZipFile(io.BytesIO(apk_bin)) as apk: with zipfile.ZipFile(io.BytesIO(apk_bin)) as apk:
json_data[sha256] = {} data[sha256] = {}
entry = analyze(apk, sha256, json_out=json_data[sha256]) entry = analyze(apk, sha256, json_out=data[sha256])
subprocess.run(["apktool", "d", "app.apk", "-o", "apktool_out"], cwd=d) subprocess.run(["apktool", "d", "app.apk", "-o", "apktool_out"], cwd=d)
smalli_dirs = [] smalli_dirs = []
for dex in json_data[sha256]["class_dex"]: for dex in data[sha256]["class_dex"]:
if dex == "classes.dex": if dex == "classes.dex":
smalli_dirs.append(out / "apktool_out" / "smali") smalli_dirs.append(out / "apktool_out" / "smali")
else: else:
@ -323,7 +323,7 @@ def check_smali():
out / "apktool_out" / "smali_" + dex.removesuffix(".dex") out / "apktool_out" / "smali_" + dex.removesuffix(".dex")
) )
dist_dup_classes = set() dist_dup_classes = set()
for cl in json_data[sha256]["duplicated_classes"]: for cl in data[sha256]["duplicated_classes"]:
cl_f = cl.removesuffix(";").removeprefix("L") + ".smali" cl_f = cl.removesuffix(";").removeprefix("L") + ".smali"
smali = None smali = None
for cdir in smalli_dirs: for cdir in smalli_dirs:
@ -334,5 +334,5 @@ def check_smali():
smali = smali_new smali = smali_new
elif smali != smali_new: elif smali != smali_new:
dist_dup_classes.add(cl) dist_dup_classes.add(cl)
json_data[sha256]["redef_classes"] = list(dist_dup_classes) data[sha256]["redef_classes"] = list(dist_dup_classes)
print(json.dumps(json_data)) print(json.dumps(data))