From 9f9593e5059f7c0d061d081d8a69ea4fdb2dcb05 Mon Sep 17 00:00:00 2001 From: Jean-Marie Mineau Date: Fri, 23 May 2025 16:11:51 +0200 Subject: [PATCH] don't call androguard when not necessary --- experiment/check_runtimedata.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/experiment/check_runtimedata.py b/experiment/check_runtimedata.py index 1313cdf..4e8601c 100644 --- a/experiment/check_runtimedata.py +++ b/experiment/check_runtimedata.py @@ -89,14 +89,16 @@ def check_app_result( dex = DEX(dex_bin) classes_by_cl[cl_id].extend(dex.get_classes()) - apk_name = f"{path.name}.apk" - apk = APK(str(app_folder / apk_name)) - cl_id = data["apk_cl_id"] - if cl_id not in classes_by_cl: - classes_by_cl[cl_id] = [] - for dex_bin in apk.get_all_dex(): - dex = DEX(dex_bin) - classes_by_cl[cl_id].extend(dex.get_classes()) + # Don't do androguard scan when there is no other dynloading + if len(data["dyn_code_load"]) != 0: + apk_name = f"{path.name}.apk" + apk = APK(str(app_folder / apk_name)) + cl_id = data["apk_cl_id"] + if cl_id not in classes_by_cl: + classes_by_cl[cl_id] = [] + 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 already_found: set[str] = set()