Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.
This commit is contained in:
79
apk_decompiled/sources/V2/c.java
Normal file
79
apk_decompiled/sources/V2/c.java
Normal file
@@ -0,0 +1,79 @@
|
||||
package V2;
|
||||
|
||||
import C.w;
|
||||
import a.AbstractC0106b;
|
||||
import java.lang.reflect.AccessibleObject;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public abstract class c {
|
||||
|
||||
/* renamed from: a, reason: collision with root package name */
|
||||
public static final AbstractC0106b f1878a;
|
||||
|
||||
/* JADX WARN: Multi-variable type inference failed */
|
||||
/* JADX WARN: Type inference failed for: r0v1, types: [a.b] */
|
||||
/* JADX WARN: Type inference failed for: r0v3 */
|
||||
/* JADX WARN: Type inference failed for: r0v4 */
|
||||
static {
|
||||
?? r02;
|
||||
try {
|
||||
r02 = new b();
|
||||
} catch (NoSuchMethodException unused) {
|
||||
r02 = new Object();
|
||||
}
|
||||
f1878a = r02;
|
||||
}
|
||||
|
||||
public static void a(AccessibleObject accessibleObject, StringBuilder sb) {
|
||||
sb.append('(');
|
||||
Class<?>[] parameterTypes = accessibleObject instanceof Method ? ((Method) accessibleObject).getParameterTypes() : ((Constructor) accessibleObject).getParameterTypes();
|
||||
for (int i = 0; i < parameterTypes.length; i++) {
|
||||
if (i > 0) {
|
||||
sb.append(", ");
|
||||
}
|
||||
sb.append(parameterTypes[i].getSimpleName());
|
||||
}
|
||||
sb.append(')');
|
||||
}
|
||||
|
||||
public static String b(Constructor constructor) {
|
||||
StringBuilder sb = new StringBuilder(constructor.getDeclaringClass().getName());
|
||||
a(constructor, sb);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String c(Field field) {
|
||||
return field.getDeclaringClass().getName() + "#" + field.getName();
|
||||
}
|
||||
|
||||
public static String d(AccessibleObject accessibleObject, boolean z3) {
|
||||
String str;
|
||||
if (accessibleObject instanceof Field) {
|
||||
str = "field '" + c((Field) accessibleObject) + "'";
|
||||
} else if (accessibleObject instanceof Method) {
|
||||
Method method = (Method) accessibleObject;
|
||||
StringBuilder sb = new StringBuilder(method.getName());
|
||||
a(method, sb);
|
||||
str = "method '" + method.getDeclaringClass().getName() + "#" + sb.toString() + "'";
|
||||
} else if (accessibleObject instanceof Constructor) {
|
||||
str = "constructor '" + b((Constructor) accessibleObject) + "'";
|
||||
} else {
|
||||
str = "<unknown AccessibleObject> " + accessibleObject.toString();
|
||||
}
|
||||
if (!z3 || !Character.isLowerCase(str.charAt(0))) {
|
||||
return str;
|
||||
}
|
||||
return Character.toUpperCase(str.charAt(0)) + str.substring(1);
|
||||
}
|
||||
|
||||
public static void e(AccessibleObject accessibleObject) {
|
||||
try {
|
||||
accessibleObject.setAccessible(true);
|
||||
} catch (Exception e4) {
|
||||
throw new RuntimeException(w.o("Failed making ", d(accessibleObject, false), " accessible; either increase its visibility or write a custom TypeAdapter for its declaring type."), e4);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user