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:
2025-12-04 13:59:54 +01:00
parent f2fd1c3bf5
commit e0133d2ca2
10432 changed files with 1019085 additions and 1 deletions

View File

@@ -0,0 +1,316 @@
package kotlin.reflect.full;
import com.google.android.gms.measurement.api.AppMeasurementSdk;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.SinceKotlin;
import kotlin.jvm.JvmName;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.reflect.KCallable;
import kotlin.reflect.KParameter;
@Metadata(d1 = {"\u00000\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0010 \n\u0002\b\u0006\n\u0002\u0010\u0011\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010$\n\u0002\b\u0003\n\u0002\u0010\u000e\n\u0000\u001a6\u0010\u000f\u001a\u0002H\u0010\"\u0004\b\u0000\u0010\u0010*\b\u0012\u0004\u0012\u0002H\u00100\u00022\u0016\u0010\u0011\u001a\f\u0012\b\b\u0001\u0012\u0004\u0018\u00010\u00130\u0012\"\u0004\u0018\u00010\u0013H\u0087@¢\u0006\u0002\u0010\u0014\u001a4\u0010\u0015\u001a\u0002H\u0010\"\u0004\b\u0000\u0010\u0010*\b\u0012\u0004\u0012\u0002H\u00100\u00022\u0014\u0010\u0011\u001a\u0010\u0012\u0004\u0012\u00020\u0001\u0012\u0006\u0012\u0004\u0018\u00010\u00130\u0016H\u0087@¢\u0006\u0002\u0010\u0017\u001a\u001a\u0010\u0018\u001a\u0004\u0018\u00010\u0001*\u0006\u0012\u0002\b\u00030\u00022\u0006\u0010\u0019\u001a\u00020\u001aH\u0007\"$\u0010\u0000\u001a\u0004\u0018\u00010\u0001*\u0006\u0012\u0002\b\u00030\u00028FX\u0087\u0004¢\u0006\f\u0012\u0004\b\u0003\u0010\u0004\u001a\u0004\b\u0005\u0010\u0006\"$\u0010\u0007\u001a\u0004\u0018\u00010\u0001*\u0006\u0012\u0002\b\u00030\u00028FX\u0087\u0004¢\u0006\f\u0012\u0004\b\b\u0010\u0004\u001a\u0004\b\t\u0010\u0006\"(\u0010\n\u001a\b\u0012\u0004\u0012\u00020\u00010\u000b*\u0006\u0012\u0002\b\u00030\u00028FX\u0087\u0004¢\u0006\f\u0012\u0004\b\f\u0010\u0004\u001a\u0004\b\r\u0010\u000e¨\u0006\u001b"}, d2 = {"extensionReceiverParameter", "Lkotlin/reflect/KParameter;", "Lkotlin/reflect/KCallable;", "getExtensionReceiverParameter$annotations", "(Lkotlin/reflect/KCallable;)V", "getExtensionReceiverParameter", "(Lkotlin/reflect/KCallable;)Lkotlin/reflect/KParameter;", "instanceParameter", "getInstanceParameter$annotations", "getInstanceParameter", "valueParameters", "", "getValueParameters$annotations", "getValueParameters", "(Lkotlin/reflect/KCallable;)Ljava/util/List;", "callSuspend", "R", "args", "", "", "(Lkotlin/reflect/KCallable;[Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "callSuspendBy", "", "(Lkotlin/reflect/KCallable;Ljava/util/Map;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "findParameterByName", AppMeasurementSdk.ConditionalUserProperty.NAME, "", "kotlin-reflection"}, k = 2, mv = {1, 9, 0}, xi = 48)
@JvmName(name = "KCallables")
@SourceDebugExtension({"SMAP\nKCallables.kt\nKotlin\n*S Kotlin\n*F\n+ 1 KCallables.kt\nkotlin/reflect/full/KCallables\n+ 2 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n+ 3 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,82:1\n661#2,11:83\n661#2,11:94\n766#2:105\n857#2,2:106\n661#2,11:108\n1#3:119\n*S KotlinDebug\n*F\n+ 1 KCallables.kt\nkotlin/reflect/full/KCallables\n*L\n23#1:83,11\n31#1:94,11\n38#1:105\n38#1:106,2\n45#1:108,11\n*E\n"})
/* loaded from: classes3.dex */
public final class KCallables {
/* JADX WARN: Removed duplicated region for block: B:20:0x0039 */
/* JADX WARN: Removed duplicated region for block: B:8:0x0023 */
@kotlin.SinceKotlin(version = "1.3")
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static final <R> java.lang.Object callSuspend(kotlin.reflect.KCallable<? extends R> r4, java.lang.Object[] r5, kotlin.coroutines.Continuation<? super R> r6) {
/*
boolean r0 = r6 instanceof kotlin.reflect.full.KCallables$callSuspend$1
if (r0 == 0) goto L13
r0 = r6
kotlin.reflect.full.KCallables$callSuspend$1 r0 = (kotlin.reflect.full.KCallables$callSuspend$1) r0
int r1 = r0.label
r2 = -2147483648(0xffffffff80000000, float:-0.0)
r3 = r1 & r2
if (r3 == 0) goto L13
int r1 = r1 - r2
r0.label = r1
goto L18
L13:
kotlin.reflect.full.KCallables$callSuspend$1 r0 = new kotlin.reflect.full.KCallables$callSuspend$1
r0.<init>(r6)
L18:
java.lang.Object r6 = r0.result
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
int r2 = r0.label
r3 = 1
if (r2 == 0) goto L39
if (r2 != r3) goto L31
java.lang.Object r4 = r0.L$1
java.lang.Object[] r4 = (java.lang.Object[]) r4
java.lang.Object r4 = r0.L$0
kotlin.reflect.KCallable r4 = (kotlin.reflect.KCallable) r4
kotlin.ResultKt.throwOnFailure(r6)
goto L7c
L31:
java.lang.IllegalStateException r4 = new java.lang.IllegalStateException
java.lang.String r5 = "call to 'resume' before 'invoke' with coroutine"
r4.<init>(r5)
throw r4
L39:
kotlin.ResultKt.throwOnFailure(r6)
boolean r6 = r4.isSuspend()
if (r6 != 0) goto L4c
int r6 = r5.length
java.lang.Object[] r5 = java.util.Arrays.copyOf(r5, r6)
java.lang.Object r4 = r4.call(r5)
return r4
L4c:
boolean r6 = r4 instanceof kotlin.reflect.KFunction
if (r6 == 0) goto L9e
r0.L$0 = r4
r0.L$1 = r5
r0.label = r3
kotlin.jvm.internal.SpreadBuilder r6 = new kotlin.jvm.internal.SpreadBuilder
r2 = 2
r6.<init>(r2)
r6.addSpread(r5)
r6.add(r0)
int r5 = r6.size()
java.lang.Object[] r5 = new java.lang.Object[r5]
java.lang.Object[] r5 = r6.toArray(r5)
java.lang.Object r6 = r4.call(r5)
java.lang.Object r5 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
if (r6 != r5) goto L79
kotlin.coroutines.jvm.internal.DebugProbesKt.probeCoroutineSuspended(r0)
L79:
if (r6 != r1) goto L7c
return r1
L7c:
kotlin.reflect.KType r5 = r4.getReturnType()
kotlin.reflect.KClassifier r5 = r5.getClassifier()
java.lang.Class<kotlin.Unit> r0 = kotlin.Unit.class
kotlin.reflect.KClass r0 = kotlin.jvm.internal.Reflection.getOrCreateKotlinClass(r0)
boolean r5 = kotlin.jvm.internal.Intrinsics.areEqual(r5, r0)
if (r5 == 0) goto L9d
kotlin.reflect.KType r4 = r4.getReturnType()
boolean r4 = r4.isMarkedNullable()
if (r4 != 0) goto L9d
kotlin.Unit r4 = kotlin.Unit.INSTANCE
return r4
L9d:
return r6
L9e:
java.lang.IllegalArgumentException r5 = new java.lang.IllegalArgumentException
java.lang.StringBuilder r6 = new java.lang.StringBuilder
java.lang.String r0 = "Cannot callSuspend on a property "
r6.<init>(r0)
r6.append(r4)
java.lang.String r4 = ": suspend properties are not supported yet"
r6.append(r4)
java.lang.String r4 = r6.toString()
r5.<init>(r4)
throw r5
*/
throw new UnsupportedOperationException("Method not decompiled: kotlin.reflect.full.KCallables.callSuspend(kotlin.reflect.KCallable, java.lang.Object[], kotlin.coroutines.Continuation):java.lang.Object");
}
/* JADX WARN: Removed duplicated region for block: B:20:0x003d */
/* JADX WARN: Removed duplicated region for block: B:8:0x0023 */
@kotlin.SinceKotlin(version = "1.3")
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static final <R> java.lang.Object callSuspendBy(kotlin.reflect.KCallable<? extends R> r4, java.util.Map<kotlin.reflect.KParameter, ? extends java.lang.Object> r5, kotlin.coroutines.Continuation<? super R> r6) {
/*
boolean r0 = r6 instanceof kotlin.reflect.full.KCallables$callSuspendBy$1
if (r0 == 0) goto L13
r0 = r6
kotlin.reflect.full.KCallables$callSuspendBy$1 r0 = (kotlin.reflect.full.KCallables$callSuspendBy$1) r0
int r1 = r0.label
r2 = -2147483648(0xffffffff80000000, float:-0.0)
r3 = r1 & r2
if (r3 == 0) goto L13
int r1 = r1 - r2
r0.label = r1
goto L18
L13:
kotlin.reflect.full.KCallables$callSuspendBy$1 r0 = new kotlin.reflect.full.KCallables$callSuspendBy$1
r0.<init>(r6)
L18:
java.lang.Object r6 = r0.result
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
int r2 = r0.label
r3 = 1
if (r2 == 0) goto L3d
if (r2 != r3) goto L35
java.lang.Object r4 = r0.L$2
kotlin.reflect.jvm.internal.KCallableImpl r4 = (kotlin.reflect.jvm.internal.KCallableImpl) r4
java.lang.Object r4 = r0.L$1
java.util.Map r4 = (java.util.Map) r4
java.lang.Object r4 = r0.L$0
kotlin.reflect.KCallable r4 = (kotlin.reflect.KCallable) r4
kotlin.ResultKt.throwOnFailure(r6)
goto L6d
L35:
java.lang.IllegalStateException r4 = new java.lang.IllegalStateException
java.lang.String r5 = "call to 'resume' before 'invoke' with coroutine"
r4.<init>(r5)
throw r4
L3d:
kotlin.ResultKt.throwOnFailure(r6)
boolean r6 = r4.isSuspend()
if (r6 != 0) goto L4b
java.lang.Object r4 = r4.callBy(r5)
return r4
L4b:
boolean r6 = r4 instanceof kotlin.reflect.KFunction
if (r6 == 0) goto La3
kotlin.reflect.jvm.internal.KCallableImpl r6 = kotlin.reflect.jvm.internal.UtilKt.asKCallableImpl(r4)
if (r6 == 0) goto L8f
r0.L$0 = r4
r0.L$1 = r5
r0.L$2 = r6
r0.label = r3
java.lang.Object r6 = r6.callDefaultMethod$kotlin_reflection(r5, r0)
java.lang.Object r5 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
if (r6 != r5) goto L6a
kotlin.coroutines.jvm.internal.DebugProbesKt.probeCoroutineSuspended(r0)
L6a:
if (r6 != r1) goto L6d
return r1
L6d:
kotlin.reflect.KType r5 = r4.getReturnType()
kotlin.reflect.KClassifier r5 = r5.getClassifier()
java.lang.Class<kotlin.Unit> r0 = kotlin.Unit.class
kotlin.reflect.KClass r0 = kotlin.jvm.internal.Reflection.getOrCreateKotlinClass(r0)
boolean r5 = kotlin.jvm.internal.Intrinsics.areEqual(r5, r0)
if (r5 == 0) goto L8e
kotlin.reflect.KType r4 = r4.getReturnType()
boolean r4 = r4.isMarkedNullable()
if (r4 != 0) goto L8e
kotlin.Unit r4 = kotlin.Unit.INSTANCE
return r4
L8e:
return r6
L8f:
kotlin.reflect.jvm.internal.KotlinReflectionInternalError r5 = new kotlin.reflect.jvm.internal.KotlinReflectionInternalError
java.lang.StringBuilder r6 = new java.lang.StringBuilder
java.lang.String r0 = "This callable does not support a default call: "
r6.<init>(r0)
r6.append(r4)
java.lang.String r4 = r6.toString()
r5.<init>(r4)
throw r5
La3:
java.lang.IllegalArgumentException r5 = new java.lang.IllegalArgumentException
java.lang.StringBuilder r6 = new java.lang.StringBuilder
java.lang.String r0 = "Cannot callSuspendBy on a property "
r6.<init>(r0)
r6.append(r4)
java.lang.String r4 = ": suspend properties are not supported yet"
r6.append(r4)
java.lang.String r4 = r6.toString()
r5.<init>(r4)
throw r5
*/
throw new UnsupportedOperationException("Method not decompiled: kotlin.reflect.full.KCallables.callSuspendBy(kotlin.reflect.KCallable, java.util.Map, kotlin.coroutines.Continuation):java.lang.Object");
}
@SinceKotlin(version = "1.1")
public static final KParameter findParameterByName(KCallable<?> kCallable, String name) {
Intrinsics.checkNotNullParameter(kCallable, "<this>");
Intrinsics.checkNotNullParameter(name, "name");
Iterator<T> it = kCallable.getParameters().iterator();
Object obj = null;
boolean z3 = false;
Object obj2 = null;
while (true) {
if (it.hasNext()) {
Object next = it.next();
if (Intrinsics.areEqual(((KParameter) next).getName(), name)) {
if (z3) {
break;
}
z3 = true;
obj2 = next;
}
} else if (z3) {
obj = obj2;
}
}
return (KParameter) obj;
}
public static final KParameter getExtensionReceiverParameter(KCallable<?> kCallable) {
Intrinsics.checkNotNullParameter(kCallable, "<this>");
Iterator<T> it = kCallable.getParameters().iterator();
Object obj = null;
boolean z3 = false;
Object obj2 = null;
while (true) {
if (it.hasNext()) {
Object next = it.next();
if (((KParameter) next).getKind() == KParameter.Kind.EXTENSION_RECEIVER) {
if (z3) {
break;
}
z3 = true;
obj2 = next;
}
} else if (z3) {
obj = obj2;
}
}
return (KParameter) obj;
}
@SinceKotlin(version = "1.1")
public static /* synthetic */ void getExtensionReceiverParameter$annotations(KCallable kCallable) {
}
public static final KParameter getInstanceParameter(KCallable<?> kCallable) {
Intrinsics.checkNotNullParameter(kCallable, "<this>");
Iterator<T> it = kCallable.getParameters().iterator();
Object obj = null;
boolean z3 = false;
Object obj2 = null;
while (true) {
if (it.hasNext()) {
Object next = it.next();
if (((KParameter) next).getKind() == KParameter.Kind.INSTANCE) {
if (z3) {
break;
}
z3 = true;
obj2 = next;
}
} else if (z3) {
obj = obj2;
}
}
return (KParameter) obj;
}
@SinceKotlin(version = "1.1")
public static /* synthetic */ void getInstanceParameter$annotations(KCallable kCallable) {
}
public static final List<KParameter> getValueParameters(KCallable<?> kCallable) {
Intrinsics.checkNotNullParameter(kCallable, "<this>");
List<KParameter> parameters = kCallable.getParameters();
ArrayList arrayList = new ArrayList();
for (Object obj : parameters) {
if (((KParameter) obj).getKind() == KParameter.Kind.VALUE) {
arrayList.add(obj);
}
}
return arrayList;
}
@SinceKotlin(version = "1.1")
public static /* synthetic */ void getValueParameters$annotations(KCallable kCallable) {
}
}