def run(self, jeb): self.jeb = jeb self.jebUi = self.jeb.getUI() # TODO: for dex: collapse all packages or third party packages. # for apk: collapse all packages first, than expand current package only. instance_tree_view = self.jebUi.getView(View.Type.CLASS_HIERARCHY) field_real_view = View.getDeclaredField("v") field_real_view.setAccessible(True) instance_real_view = field_real_view.get(instance_tree_view) field_pattern = None class_pattern = None for field in instance_real_view.getClass().getDeclaredFields(): if field.getType().getName() == "java.util.regex.Pattern": field_pattern = field class_pattern = field.getType() break if field_pattern is None or class_pattern is None: print "java.util.regex.Pattern field is not found." return field_pattern.setAccessible(True) method_compile = None for method in class_pattern.getMethods(): if method.getName() == "compile": args = 0 for x in method.getParameterTypes(): args += 1 if args == 1: method_compile = method break if method_compile is None: print "java.util.regex.Pattern#compile is not found." return temp = "|".join(third_party_packages.strip().replace(".", "\.").splitlines()) temp = "^({0}).*".format(temp) print temp new_pattern = method_compile.invoke(None, temp) field_pattern.set(instance_real_view, new_pattern) instance_tree_view.refresh() print "Done..."
def run(self, jeb): self.jeb = jeb self.jebUi = self.jeb.getUI() if not self.jeb.isFileLoaded(): print "Please load a file" return # TODO: for dex: collapse all packages or third party packages. # for apk: collapse all packages first, than expand current package only. instance_tree_view = self.jebUi.getView(View.Type.CLASS_HIERARCHY) field_real_view = View.getDeclaredField("v") field_real_view.setAccessible(True) instance_real_view = field_real_view.get(instance_tree_view) field_pattern = None for field in instance_real_view.getClass().getDeclaredFields(): if field.getType().getName() == "java.util.regex.Pattern": field_pattern = field break if field_pattern is None: print "Pattern field is not found." return field_pattern.setAccessible(True) temp = "|".join(common_packages.strip().replace(".", "\.").splitlines()) temp = "^({0}).*".format(temp) print temp new_pattern = Pattern.compile(temp) field_pattern.set(instance_real_view, new_pattern) instance_tree_view.refresh() print "Done..."