def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs): res = self.res # register static structure self._register_static_structure() # libs res.log(CAT_LIBS, apk.get_libraries(), CAT_APK_INFO) # files res.log(CAT_FILES, apk.get_files(), CAT_APK_INFO) # permissions res.log(CAT_PERMISSIONS, sorted(apk.get_permissions()), CAT_APK_INFO) components_cache = get_components_cache(apk) # activities res.log(CAT_ACTIVITIES_LISTING, sorted(components_cache[CAT_ACTIVITIES]), CAT_APK_INFO, CAT_COMPONENTS, CAT_ACTIVITIES) res.log(CAT_ACTIVITIES_MAIN, apk.get_main_activity(), CAT_APK_INFO, CAT_COMPONENTS, CAT_ACTIVITIES) # services res.log(CAT_SERVICES, components_cache[CAT_SERVICES], CAT_APK_INFO, CAT_COMPONENTS) # receivers res.log(CAT_RECEIVERS, components_cache[CAT_RECEIVERS], CAT_APK_INFO, CAT_COMPONENTS) # content providers res.log(CAT_PROVIDERS, components_cache[CAT_PROVIDERS], CAT_APK_INFO, CAT_COMPONENTS) # intents for k, package_names in components_cache.items(): intents = {} for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = apk.get_intent_filters( intent_key, package_name) if package_intents: intents[package_name] = package_intents # we can also register the keys later for dynamic structures CAT = (CAT_APK_INFO, CAT_COMPONENTS, CAT_INTENTS) res.register_keys([k], *CAT) res.log(k, intents, *CAT)
def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs): res = self.res # register static structure self._register_static_structure() # libs res.log(CAT_LIBS, apk.get_libraries(), CAT_APK_INFO) # files res.log(CAT_FILES, apk.get_files(), CAT_APK_INFO) # permissions res.log(CAT_PERMISSIONS, sorted(apk.get_permissions()), CAT_APK_INFO) components_cache = get_components_cache(apk) # activities res.log( CAT_ACTIVITIES_LISTING, sorted(components_cache[CAT_ACTIVITIES]), CAT_APK_INFO, CAT_COMPONENTS, CAT_ACTIVITIES, ) res.log(CAT_ACTIVITIES_MAIN, apk.get_main_activity(), CAT_APK_INFO, CAT_COMPONENTS, CAT_ACTIVITIES) # services res.log(CAT_SERVICES, components_cache[CAT_SERVICES], CAT_APK_INFO, CAT_COMPONENTS) # receivers res.log(CAT_RECEIVERS, components_cache[CAT_RECEIVERS], CAT_APK_INFO, CAT_COMPONENTS) # content providers res.log(CAT_PROVIDERS, components_cache[CAT_PROVIDERS], CAT_APK_INFO, CAT_COMPONENTS) # intents for k, package_names in components_cache.items(): intents = {} for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = apk.get_intent_filters(intent_key, package_name) if package_intents: intents[package_name] = package_intents # we can also register the keys later for dynamic structures CAT = (CAT_APK_INFO, CAT_COMPONENTS, CAT_INTENTS) res.register_keys([k], *CAT) res.log(k, intents, *CAT)
def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs): res = self.res components_cache = get_components_cache(apk) # intents for k, package_names in components_cache.items(): intents = {} for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = apk.get_intent_filters(intent_key, package_name) if package_intents: intents[package_name] = package_intents res.register_keys([k], CAT_INTENTS) res.log(k, intents, CAT_INTENTS)
def _analyze(self, apk, dalvik_vm_format, vm_analysis, gvm_analysis, *args, **kwargs): res = self.res components_cache = get_components_cache(apk) # intents for k, package_names in components_cache.items(): intents = {} for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = apk.get_intent_filters( intent_key, package_name) if package_intents: intents[package_name] = package_intents res.register_keys([k], CAT_INTENTS) res.log(k, intents, CAT_INTENTS)
def get_manifest_components_with_intent_filter(self): ''' Get the package names which define an intent-filter. Returns ------- set<str> Set of package names. ''' res = set() # intents components_cache = get_components_cache(self) for k, package_names in components_cache.items(): for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = self.get_intent_filters(intent_key, package_name) if package_intents: res.add(package_name) return res
def get_manifest_components_with_intent_filter(self): ''' Get the package names which define an intent-filter. Returns ------- set<str> Set of package names. ''' res = set() # intents components_cache = get_components_cache(self) for k, package_names in components_cache.items(): for package_name in package_names: # get intent filter for activity, service or receiver intent_key = component_key_2_intent_key(k) package_intents = self.get_intent_filters( intent_key, package_name) if package_intents: res.add(package_name) return res