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:
149
apk_decompiled/sources/kotlin/random/URandomKt.java
Normal file
149
apk_decompiled/sources/kotlin/random/URandomKt.java
Normal file
@@ -0,0 +1,149 @@
|
||||
package kotlin.random;
|
||||
|
||||
import com.google.firebase.messaging.Constants;
|
||||
import kotlin.ExperimentalUnsignedTypes;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.SinceKotlin;
|
||||
import kotlin.UByteArray;
|
||||
import kotlin.UInt;
|
||||
import kotlin.ULong;
|
||||
import kotlin.WasExperimental;
|
||||
import kotlin.jvm.internal.IntCompanionObject;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
import kotlin.ranges.UIntRange;
|
||||
import kotlin.ranges.ULongRange;
|
||||
|
||||
@Metadata(d1 = {"\u0000:\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u000f\n\u0002\u0018\u0002\n\u0002\b\u0007\n\u0002\u0018\u0002\n\u0002\b\u0002\u001a\u001f\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0003H\u0000¢\u0006\u0004\b\u0005\u0010\u0006\u001a\u001f\u0010\u0007\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\b2\u0006\u0010\u0004\u001a\u00020\bH\u0000¢\u0006\u0004\b\t\u0010\n\u001a\u0019\u0010\u000b\u001a\u00020\f*\u00020\r2\u0006\u0010\u000e\u001a\u00020\u000fH\u0007¢\u0006\u0002\u0010\u0010\u001a\u001b\u0010\u000b\u001a\u00020\f*\u00020\r2\u0006\u0010\u0011\u001a\u00020\fH\u0007¢\u0006\u0004\b\u0012\u0010\u0013\u001a/\u0010\u000b\u001a\u00020\f*\u00020\r2\u0006\u0010\u0011\u001a\u00020\f2\b\b\u0002\u0010\u0014\u001a\u00020\u000f2\b\b\u0002\u0010\u0015\u001a\u00020\u000fH\u0007¢\u0006\u0004\b\u0016\u0010\u0017\u001a\u0011\u0010\u0018\u001a\u00020\u0003*\u00020\rH\u0007¢\u0006\u0002\u0010\u0019\u001a\u001b\u0010\u0018\u001a\u00020\u0003*\u00020\r2\u0006\u0010\u0004\u001a\u00020\u0003H\u0007¢\u0006\u0004\b\u001a\u0010\u001b\u001a#\u0010\u0018\u001a\u00020\u0003*\u00020\r2\u0006\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0003H\u0007¢\u0006\u0004\b\u001c\u0010\u001d\u001a\u0019\u0010\u0018\u001a\u00020\u0003*\u00020\r2\u0006\u0010\u001e\u001a\u00020\u001fH\u0007¢\u0006\u0002\u0010 \u001a\u0011\u0010!\u001a\u00020\b*\u00020\rH\u0007¢\u0006\u0002\u0010\"\u001a\u001b\u0010!\u001a\u00020\b*\u00020\r2\u0006\u0010\u0004\u001a\u00020\bH\u0007¢\u0006\u0004\b#\u0010$\u001a#\u0010!\u001a\u00020\b*\u00020\r2\u0006\u0010\u0002\u001a\u00020\b2\u0006\u0010\u0004\u001a\u00020\bH\u0007¢\u0006\u0004\b%\u0010&\u001a\u0019\u0010!\u001a\u00020\b*\u00020\r2\u0006\u0010\u001e\u001a\u00020'H\u0007¢\u0006\u0002\u0010(¨\u0006)"}, d2 = {"checkUIntRangeBounds", "", Constants.MessagePayloadKeys.FROM, "Lkotlin/UInt;", "until", "checkUIntRangeBounds-J1ME1BU", "(II)V", "checkULongRangeBounds", "Lkotlin/ULong;", "checkULongRangeBounds-eb3DHEI", "(JJ)V", "nextUBytes", "Lkotlin/UByteArray;", "Lkotlin/random/Random;", "size", "", "(Lkotlin/random/Random;I)[B", "array", "nextUBytes-EVgfTAA", "(Lkotlin/random/Random;[B)[B", "fromIndex", "toIndex", "nextUBytes-Wvrt4B4", "(Lkotlin/random/Random;[BII)[B", "nextUInt", "(Lkotlin/random/Random;)I", "nextUInt-qCasIEU", "(Lkotlin/random/Random;I)I", "nextUInt-a8DCA5k", "(Lkotlin/random/Random;II)I", "range", "Lkotlin/ranges/UIntRange;", "(Lkotlin/random/Random;Lkotlin/ranges/UIntRange;)I", "nextULong", "(Lkotlin/random/Random;)J", "nextULong-V1Xi4fY", "(Lkotlin/random/Random;J)J", "nextULong-jmpaW-c", "(Lkotlin/random/Random;JJ)J", "Lkotlin/ranges/ULongRange;", "(Lkotlin/random/Random;Lkotlin/ranges/ULongRange;)J", "kotlin-stdlib"}, k = 2, mv = {1, 9, 0}, xi = 48)
|
||||
@SourceDebugExtension({"SMAP\nURandom.kt\nKotlin\n*S Kotlin\n*F\n+ 1 URandom.kt\nkotlin/random/URandomKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,155:1\n1#2:156\n*E\n"})
|
||||
/* loaded from: classes3.dex */
|
||||
public final class URandomKt {
|
||||
/* renamed from: checkUIntRangeBounds-J1ME1BU, reason: not valid java name */
|
||||
public static final void m1329checkUIntRangeBoundsJ1ME1BU(int i, int i4) {
|
||||
if (Integer.compareUnsigned(i4, i) <= 0) {
|
||||
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(UInt.m205boximpl(i), UInt.m205boximpl(i4)).toString());
|
||||
}
|
||||
}
|
||||
|
||||
/* renamed from: checkULongRangeBounds-eb3DHEI, reason: not valid java name */
|
||||
public static final void m1330checkULongRangeBoundseb3DHEI(long j4, long j5) {
|
||||
if (Long.compareUnsigned(j5, j4) <= 0) {
|
||||
throw new IllegalArgumentException(RandomKt.boundsErrorMessage(ULong.m284boximpl(j4), ULong.m284boximpl(j5)).toString());
|
||||
}
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
public static final byte[] nextUBytes(Random random, int i) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
return UByteArray.m187constructorimpl(random.nextBytes(i));
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
/* renamed from: nextUBytes-EVgfTAA, reason: not valid java name */
|
||||
public static final byte[] m1331nextUBytesEVgfTAA(Random nextUBytes, byte[] array) {
|
||||
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
|
||||
Intrinsics.checkNotNullParameter(array, "array");
|
||||
nextUBytes.nextBytes(array);
|
||||
return array;
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
/* renamed from: nextUBytes-Wvrt4B4, reason: not valid java name */
|
||||
public static final byte[] m1332nextUBytesWvrt4B4(Random nextUBytes, byte[] array, int i, int i4) {
|
||||
Intrinsics.checkNotNullParameter(nextUBytes, "$this$nextUBytes");
|
||||
Intrinsics.checkNotNullParameter(array, "array");
|
||||
nextUBytes.nextBytes(array, i, i4);
|
||||
return array;
|
||||
}
|
||||
|
||||
/* renamed from: nextUBytes-Wvrt4B4$default, reason: not valid java name */
|
||||
public static /* synthetic */ byte[] m1333nextUBytesWvrt4B4$default(Random random, byte[] bArr, int i, int i4, int i5, Object obj) {
|
||||
if ((i5 & 2) != 0) {
|
||||
i = 0;
|
||||
}
|
||||
if ((i5 & 4) != 0) {
|
||||
i4 = UByteArray.m193getSizeimpl(bArr);
|
||||
}
|
||||
return m1332nextUBytesWvrt4B4(random, bArr, i, i4);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
public static final int nextUInt(Random random) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
return UInt.m211constructorimpl(random.nextInt());
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
/* renamed from: nextUInt-a8DCA5k, reason: not valid java name */
|
||||
public static final int m1334nextUInta8DCA5k(Random nextUInt, int i, int i4) {
|
||||
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
|
||||
m1329checkUIntRangeBoundsJ1ME1BU(i, i4);
|
||||
return UInt.m211constructorimpl(nextUInt.nextInt(i ^ IntCompanionObject.MIN_VALUE, i4 ^ IntCompanionObject.MIN_VALUE) ^ IntCompanionObject.MIN_VALUE);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
/* renamed from: nextUInt-qCasIEU, reason: not valid java name */
|
||||
public static final int m1335nextUIntqCasIEU(Random nextUInt, int i) {
|
||||
Intrinsics.checkNotNullParameter(nextUInt, "$this$nextUInt");
|
||||
return m1334nextUInta8DCA5k(nextUInt, 0, i);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
public static final long nextULong(Random random) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
return ULong.m290constructorimpl(random.nextLong());
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
/* renamed from: nextULong-V1Xi4fY, reason: not valid java name */
|
||||
public static final long m1336nextULongV1Xi4fY(Random nextULong, long j4) {
|
||||
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
|
||||
return m1337nextULongjmpaWc(nextULong, 0L, j4);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
/* renamed from: nextULong-jmpaW-c, reason: not valid java name */
|
||||
public static final long m1337nextULongjmpaWc(Random nextULong, long j4, long j5) {
|
||||
Intrinsics.checkNotNullParameter(nextULong, "$this$nextULong");
|
||||
m1330checkULongRangeBoundseb3DHEI(j4, j5);
|
||||
return ULong.m290constructorimpl(nextULong.nextLong(j4 ^ Long.MIN_VALUE, j5 ^ Long.MIN_VALUE) ^ Long.MIN_VALUE);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
public static final int nextUInt(Random random, UIntRange range) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
Intrinsics.checkNotNullParameter(range, "range");
|
||||
if (!range.isEmpty()) {
|
||||
return Integer.compareUnsigned(range.getLast(), -1) < 0 ? m1334nextUInta8DCA5k(random, range.getFirst(), UInt.m211constructorimpl(range.getLast() + 1)) : Integer.compareUnsigned(range.getFirst(), 0) > 0 ? UInt.m211constructorimpl(m1334nextUInta8DCA5k(random, UInt.m211constructorimpl(range.getFirst() - 1), range.getLast()) + 1) : nextUInt(random);
|
||||
}
|
||||
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.5")
|
||||
@WasExperimental(markerClass = {ExperimentalUnsignedTypes.class})
|
||||
public static final long nextULong(Random random, ULongRange range) {
|
||||
Intrinsics.checkNotNullParameter(random, "<this>");
|
||||
Intrinsics.checkNotNullParameter(range, "range");
|
||||
if (!range.isEmpty()) {
|
||||
if (Long.compareUnsigned(range.getLast(), -1L) < 0) {
|
||||
return m1337nextULongjmpaWc(random, range.getFirst(), ULong.m290constructorimpl(ULong.m290constructorimpl(1 & 4294967295L) + range.getLast()));
|
||||
}
|
||||
if (Long.compareUnsigned(range.getFirst(), 0L) <= 0) {
|
||||
return nextULong(random);
|
||||
}
|
||||
long j4 = 1 & 4294967295L;
|
||||
return ULong.m290constructorimpl(ULong.m290constructorimpl(j4) + m1337nextULongjmpaWc(random, ULong.m290constructorimpl(range.getFirst() - ULong.m290constructorimpl(j4)), range.getLast()));
|
||||
}
|
||||
throw new IllegalArgumentException("Cannot get random in empty range: " + range);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user