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:
77
apk_decompiled/sources/kotlin/random/RandomKt.java
Normal file
77
apk_decompiled/sources/kotlin/random/RandomKt.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package kotlin.random;
|
||||
|
||||
import com.google.firebase.messaging.Constants;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.SinceKotlin;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.LongCompanionObject;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
import kotlin.ranges.IntRange;
|
||||
import kotlin.ranges.LongRange;
|
||||
|
||||
@Metadata(d1 = {"\u0000:\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\u0010\t\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\u0010\u0006\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\u001a\u0010\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\u0007\u001a\u0010\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0004H\u0007\u001a\u0018\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\b2\u0006\u0010\t\u001a\u00020\bH\u0000\u001a\u0018\u0010\n\u001a\u00020\u000b2\u0006\u0010\u0007\u001a\u00020\f2\u0006\u0010\t\u001a\u00020\fH\u0000\u001a\u0018\u0010\n\u001a\u00020\u000b2\u0006\u0010\u0007\u001a\u00020\u00032\u0006\u0010\t\u001a\u00020\u0003H\u0000\u001a\u0018\u0010\n\u001a\u00020\u000b2\u0006\u0010\u0007\u001a\u00020\u00042\u0006\u0010\t\u001a\u00020\u0004H\u0000\u001a\u0010\u0010\r\u001a\u00020\u00032\u0006\u0010\u000e\u001a\u00020\u0003H\u0000\u001a\u0014\u0010\u000f\u001a\u00020\u0003*\u00020\u00012\u0006\u0010\u0010\u001a\u00020\u0011H\u0007\u001a\u0014\u0010\u0012\u001a\u00020\u0004*\u00020\u00012\u0006\u0010\u0010\u001a\u00020\u0013H\u0007\u001a\u0014\u0010\u0014\u001a\u00020\u0003*\u00020\u00032\u0006\u0010\u0015\u001a\u00020\u0003H\u0000¨\u0006\u0016"}, d2 = {"Random", "Lkotlin/random/Random;", "seed", "", "", "boundsErrorMessage", "", Constants.MessagePayloadKeys.FROM, "", "until", "checkRangeBounds", "", "", "fastLog2", "value", "nextInt", "range", "Lkotlin/ranges/IntRange;", "nextLong", "Lkotlin/ranges/LongRange;", "takeUpperBits", "bitCount", "kotlin-stdlib"}, k = 2, mv = {1, 9, 0}, xi = 48)
|
||||
@SourceDebugExtension({"SMAP\nRandom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Random.kt\nkotlin/random/RandomKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,383:1\n1#2:384\n*E\n"})
|
||||
/* loaded from: classes3.dex */
|
||||
public final class RandomKt {
|
||||
@SinceKotlin(version = "1.3")
|
||||
public static final Random Random(int i) {
|
||||
return new XorWowRandom(i, i >> 31);
|
||||
}
|
||||
|
||||
public static final String boundsErrorMessage(Object from, Object until) {
|
||||
Intrinsics.checkNotNullParameter(from, "from");
|
||||
Intrinsics.checkNotNullParameter(until, "until");
|
||||
return "Random range is empty: [" + from + ", " + until + ").";
|
||||
}
|
||||
|
||||
public static final void checkRangeBounds(int i, int i4) {
|
||||
if (i4 <= i) {
|
||||
throw new IllegalArgumentException(boundsErrorMessage(Integer.valueOf(i), Integer.valueOf(i4)).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public static final int fastLog2(int i) {
|
||||
return 31 - Integer.numberOfLeadingZeros(i);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
public static final int nextInt(Random random, IntRange range) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
Intrinsics.checkNotNullParameter(range, "range");
|
||||
if (!range.isEmpty()) {
|
||||
return range.getLast() < Integer.MAX_VALUE ? random.nextInt(range.getFirst(), range.getLast() + 1) : range.getFirst() > Integer.MIN_VALUE ? random.nextInt(range.getFirst() - 1, range.getLast()) + 1 : random.nextInt();
|
||||
}
|
||||
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
public static final long nextLong(Random random, LongRange range) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
Intrinsics.checkNotNullParameter(range, "range");
|
||||
if (!range.isEmpty()) {
|
||||
return range.getLast() < LongCompanionObject.MAX_VALUE ? random.nextLong(range.getFirst(), range.getLast() + 1) : range.getFirst() > Long.MIN_VALUE ? random.nextLong(range.getFirst() - 1, range.getLast()) + 1 : random.nextLong();
|
||||
}
|
||||
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
||||
}
|
||||
|
||||
public static final int takeUpperBits(int i, int i4) {
|
||||
return (i >>> (32 - i4)) & ((-i4) >> 31);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
public static final Random Random(long j4) {
|
||||
return new XorWowRandom((int) j4, (int) (j4 >> 32));
|
||||
}
|
||||
|
||||
public static final void checkRangeBounds(long j4, long j5) {
|
||||
if (j5 <= j4) {
|
||||
throw new IllegalArgumentException(boundsErrorMessage(Long.valueOf(j4), Long.valueOf(j5)).toString());
|
||||
}
|
||||
}
|
||||
|
||||
public static final void checkRangeBounds(double d4, double d5) {
|
||||
if (d5 <= d4) {
|
||||
throw new IllegalArgumentException(boundsErrorMessage(Double.valueOf(d4), Double.valueOf(d5)).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user