diff --git a/src/launchpad/bar.py b/src/launchpad/bar.py new file mode 100644 index 00000000..5c0a9a24 --- /dev/null +++ b/src/launchpad/bar.py @@ -0,0 +1,19 @@ +class DexMapping: + def deobfuscate_method(self, class_name, obfuscated_method_name): + clazz = self.lookup_obfuscated_class(class_name) + if clazz is None: + clazz = self.lookup_deobfuscated_signature(class_name) + + if clazz is None or clazz.methods is None: + return None + + return clazz.methods.get(obfuscated_method_name) + + def lookup_obfuscated_class(self, obfuscated_class_name): + return self._classes.get(obfuscated_class_name) + + def lookup_deobfuscated_signature(self, deobfuscated_class_signature): + for clazz in self._classes.values(): + if clazz.deobfuscated_signature == deobfuscated_class_signature: + return clazz + return None diff --git a/src/launchpad/foo.py b/src/launchpad/foo.py new file mode 100644 index 00000000..c3ac164f --- /dev/null +++ b/src/launchpad/foo.py @@ -0,0 +1,6 @@ +class DexMapping: + def __init__(): + self._classes_by_deobfuscated = [clazz.deobfuscated_signature for clazz in classes] + + def lookup_deobfuscated_signature(self, deobfuscated_class_signature): + return self._classes_by_deobfuscated.get(deobfuscated_class_signature)