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,143 @@
package kotlinx.coroutines;
import com.google.android.gms.measurement.api.AppMeasurementSdk;
import java.util.concurrent.CancellationException;
import kotlin.Deprecated;
import kotlin.DeprecationLevel;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.coroutines.AbstractCoroutineContextElement;
import kotlin.coroutines.Continuation;
import kotlin.jvm.functions.Function1;
import kotlin.sequences.Sequence;
import kotlin.sequences.SequencesKt;
import kotlinx.coroutines.Job;
import kotlinx.coroutines.selects.SelectClause0;
@Metadata(d1 = {"\u0000j\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u000b\n\u0002\b\u0007\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0003\n\u0002\u0010\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0005\bÆ\u0002\u0018\u00002\u00020\u00012\u00020\u0002B\u0007\b\u0002¢\u0006\u0002\u0010\u0003J\u0010\u0010\u001c\u001a\u00020\u001d2\u0006\u0010\u001e\u001a\u00020\u001fH\u0017J\u0012\u0010 \u001a\u00020\n2\b\u0010!\u001a\u0004\u0018\u00010\"H\u0017J\u0018\u0010 \u001a\u00020#2\u000e\u0010!\u001a\n\u0018\u00010$j\u0004\u0018\u0001`%H\u0017J\f\u0010&\u001a\u00060$j\u0002`%H\u0017JA\u0010'\u001a\u00020(2\u0006\u0010)\u001a\u00020\n2\u0006\u0010*\u001a\u00020\n2'\u0010+\u001a#\u0012\u0015\u0012\u0013\u0018\u00010\"¢\u0006\f\b-\u0012\b\b.\u0012\u0004\b\b(!\u0012\u0004\u0012\u00020#0,j\u0002`/H\u0017J1\u0010'\u001a\u00020(2'\u0010+\u001a#\u0012\u0015\u0012\u0013\u0018\u00010\"¢\u0006\f\b-\u0012\b\b.\u0012\u0004\b\b(!\u0012\u0004\u0012\u00020#0,j\u0002`/H\u0017J\u000e\u00100\u001a\u00020#H\u0097@¢\u0006\u0002\u00101J\b\u00102\u001a\u00020\nH\u0017J\b\u00103\u001a\u00020\u0012H\u0016R \u0010\u0004\u001a\b\u0012\u0004\u0012\u00020\u00020\u00058VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u0006\u0010\u0003\u001a\u0004\b\u0007\u0010\bR\u001a\u0010\t\u001a\u00020\n8VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u000b\u0010\u0003\u001a\u0004\b\t\u0010\fR\u001a\u0010\r\u001a\u00020\n8VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u000e\u0010\u0003\u001a\u0004\b\r\u0010\fR\u001a\u0010\u000f\u001a\u00020\n8VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u0010\u0010\u0003\u001a\u0004\b\u000f\u0010\fR\u000e\u0010\u0011\u001a\u00020\u0012X\u0082T¢\u0006\u0002\n\u0000R\u001a\u0010\u0013\u001a\u00020\u00148VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u0015\u0010\u0003\u001a\u0004\b\u0016\u0010\u0017R\u001c\u0010\u0018\u001a\u0004\u0018\u00010\u00028VX\u0097\u0004¢\u0006\f\u0012\u0004\b\u0019\u0010\u0003\u001a\u0004\b\u001a\u0010\u001b¨\u00064"}, d2 = {"Lkotlinx/coroutines/NonCancellable;", "Lkotlin/coroutines/AbstractCoroutineContextElement;", "Lkotlinx/coroutines/Job;", "()V", "children", "Lkotlin/sequences/Sequence;", "getChildren$annotations", "getChildren", "()Lkotlin/sequences/Sequence;", "isActive", "", "isActive$annotations", "()Z", "isCancelled", "isCancelled$annotations", "isCompleted", "isCompleted$annotations", "message", "", "onJoin", "Lkotlinx/coroutines/selects/SelectClause0;", "getOnJoin$annotations", "getOnJoin", "()Lkotlinx/coroutines/selects/SelectClause0;", "parent", "getParent$annotations", "getParent", "()Lkotlinx/coroutines/Job;", "attachChild", "Lkotlinx/coroutines/ChildHandle;", "child", "Lkotlinx/coroutines/ChildJob;", "cancel", "cause", "", "", "Ljava/util/concurrent/CancellationException;", "Lkotlinx/coroutines/CancellationException;", "getCancellationException", "invokeOnCompletion", "Lkotlinx/coroutines/DisposableHandle;", "onCancelling", "invokeImmediately", "handler", "Lkotlin/Function1;", "Lkotlin/ParameterName;", AppMeasurementSdk.ConditionalUserProperty.NAME, "Lkotlinx/coroutines/CompletionHandler;", "join", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "start", "toString", "kotlinx-coroutines-core"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes3.dex */
public final class NonCancellable extends AbstractCoroutineContextElement implements Job {
public static final NonCancellable INSTANCE = new NonCancellable();
private static final String message = "NonCancellable can be used only as an argument for 'withContext', direct usages of its API are prohibited";
private NonCancellable() {
super(Job.INSTANCE);
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void getChildren$annotations() {
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void getOnJoin$annotations() {
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void getParent$annotations() {
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void isActive$annotations() {
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void isCancelled$annotations() {
}
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public static /* synthetic */ void isCompleted$annotations() {
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public ChildHandle attachChild(ChildJob child) {
return NonDisposableHandle.INSTANCE;
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public void cancel(CancellationException cause) {
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public CancellationException getCancellationException() {
throw new IllegalStateException("This job is always active");
}
@Override // kotlinx.coroutines.Job
public Sequence<Job> getChildren() {
return SequencesKt.emptySequence();
}
@Override // kotlinx.coroutines.Job
public SelectClause0 getOnJoin() {
throw new UnsupportedOperationException("This job is always active");
}
@Override // kotlinx.coroutines.Job
public Job getParent() {
return null;
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public DisposableHandle invokeOnCompletion(Function1<? super Throwable, Unit> handler) {
return NonDisposableHandle.INSTANCE;
}
@Override // kotlinx.coroutines.Job
public boolean isActive() {
return true;
}
@Override // kotlinx.coroutines.Job
public boolean isCancelled() {
return false;
}
@Override // kotlinx.coroutines.Job
public boolean isCompleted() {
return false;
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public Object join(Continuation<? super Unit> continuation) {
throw new UnsupportedOperationException("This job is always active");
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.ERROR, message = "Operator '+' on two Job objects is meaningless. Job is a coroutine context element and `+` is a set-sum operator for coroutine contexts. The job to the right of `+` just replaces the job the left of `+`.")
public Job plus(Job job) {
return Job.DefaultImpls.plus((Job) this, job);
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public boolean start() {
return false;
}
public String toString() {
return "NonCancellable";
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.HIDDEN, message = "Since 1.2.0, binary compatibility with versions <= 1.1.x")
public /* synthetic */ boolean cancel(Throwable cause) {
return false;
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.WARNING, message = message)
public DisposableHandle invokeOnCompletion(boolean onCancelling, boolean invokeImmediately, Function1<? super Throwable, Unit> handler) {
return NonDisposableHandle.INSTANCE;
}
@Override // kotlinx.coroutines.Job
@Deprecated(level = DeprecationLevel.HIDDEN, message = "Since 1.2.0, binary compatibility with versions <= 1.1.x")
public /* synthetic */ void cancel() {
cancel((CancellationException) null);
}
}