don't call androguard when not necessary

This commit is contained in:
Jean-Marie Mineau 2025-05-23 16:11:51 +02:00
parent 56534b6576
commit 9f9593e505
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2

View file

@ -89,14 +89,16 @@ def check_app_result(
dex = DEX(dex_bin) dex = DEX(dex_bin)
classes_by_cl[cl_id].extend(dex.get_classes()) classes_by_cl[cl_id].extend(dex.get_classes())
apk_name = f"{path.name}.apk" # Don't do androguard scan when there is no other dynloading
apk = APK(str(app_folder / apk_name)) if len(data["dyn_code_load"]) != 0:
cl_id = data["apk_cl_id"] apk_name = f"{path.name}.apk"
if cl_id not in classes_by_cl: apk = APK(str(app_folder / apk_name))
classes_by_cl[cl_id] = [] cl_id = data["apk_cl_id"]
for dex_bin in apk.get_all_dex(): if cl_id not in classes_by_cl:
dex = DEX(dex_bin) classes_by_cl[cl_id] = []
classes_by_cl[cl_id].extend(dex.get_classes()) for dex_bin in apk.get_all_dex():
dex = DEX(dex_bin)
classes_by_cl[cl_id].extend(dex.get_classes())
nb_class_collision = 0 nb_class_collision = 0
already_found: set[str] = set() already_found: set[str] = set()