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:
143
apk_decompiled/sources/kotlinx/coroutines/NonCancellable.java
Normal file
143
apk_decompiled/sources/kotlinx/coroutines/NonCancellable.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user