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:
@@ -0,0 +1,170 @@
|
||||
package kotlin.text;
|
||||
|
||||
import kotlin.Metadata;
|
||||
import kotlin.SinceKotlin;
|
||||
import kotlin.jvm.internal.IntCompanionObject;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: package-private */
|
||||
@Metadata(d1 = {"\u0000.\n\u0000\n\u0002\u0010\u0001\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0005\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0010\t\n\u0002\b\u0003\n\u0002\u0010\n\n\u0002\b\u0003\u001a\u0010\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\u0000\u001a\u0013\u0010\u0004\u001a\u0004\u0018\u00010\u0005*\u00020\u0003H\u0007¢\u0006\u0002\u0010\u0006\u001a\u001b\u0010\u0004\u001a\u0004\u0018\u00010\u0005*\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0007¢\u0006\u0002\u0010\t\u001a\u0013\u0010\n\u001a\u0004\u0018\u00010\b*\u00020\u0003H\u0007¢\u0006\u0002\u0010\u000b\u001a\u001b\u0010\n\u001a\u0004\u0018\u00010\b*\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0007¢\u0006\u0002\u0010\f\u001a\u0013\u0010\r\u001a\u0004\u0018\u00010\u000e*\u00020\u0003H\u0007¢\u0006\u0002\u0010\u000f\u001a\u001b\u0010\r\u001a\u0004\u0018\u00010\u000e*\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0007¢\u0006\u0002\u0010\u0010\u001a\u0013\u0010\u0011\u001a\u0004\u0018\u00010\u0012*\u00020\u0003H\u0007¢\u0006\u0002\u0010\u0013\u001a\u001b\u0010\u0011\u001a\u0004\u0018\u00010\u0012*\u00020\u00032\u0006\u0010\u0007\u001a\u00020\bH\u0007¢\u0006\u0002\u0010\u0014¨\u0006\u0015"}, d2 = {"numberFormatError", "", "input", "", "toByteOrNull", "", "(Ljava/lang/String;)Ljava/lang/Byte;", "radix", "", "(Ljava/lang/String;I)Ljava/lang/Byte;", "toIntOrNull", "(Ljava/lang/String;)Ljava/lang/Integer;", "(Ljava/lang/String;I)Ljava/lang/Integer;", "toLongOrNull", "", "(Ljava/lang/String;)Ljava/lang/Long;", "(Ljava/lang/String;I)Ljava/lang/Long;", "toShortOrNull", "", "(Ljava/lang/String;)Ljava/lang/Short;", "(Ljava/lang/String;I)Ljava/lang/Short;", "kotlin-stdlib"}, k = 5, mv = {1, 9, 0}, xi = 49, xs = "kotlin/text/StringsKt")
|
||||
/* loaded from: classes3.dex */
|
||||
public class StringsKt__StringNumberConversionsKt extends StringsKt__StringNumberConversionsJVMKt {
|
||||
public static final Void numberFormatError(String input) {
|
||||
Intrinsics.checkNotNullParameter(input, "input");
|
||||
throw new NumberFormatException("Invalid number format: '" + input + '\'');
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Byte toByteOrNull(String str) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
return toByteOrNull(str, 10);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static Integer toIntOrNull(String str) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
return toIntOrNull(str, 10);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static Long toLongOrNull(String str) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
return toLongOrNull(str, 10);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Short toShortOrNull(String str) {
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
return toShortOrNull(str, 10);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Byte toByteOrNull(String str, int i) {
|
||||
int intValue;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Integer intOrNull = toIntOrNull(str, i);
|
||||
if (intOrNull == null || (intValue = intOrNull.intValue()) < -128 || intValue > 127) {
|
||||
return null;
|
||||
}
|
||||
return Byte.valueOf((byte) intValue);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Integer toIntOrNull(String str, int i) {
|
||||
boolean z3;
|
||||
int i4;
|
||||
int i5;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
CharsKt__CharJVMKt.checkRadix(i);
|
||||
int length = str.length();
|
||||
if (length == 0) {
|
||||
return null;
|
||||
}
|
||||
int i6 = 0;
|
||||
char charAt = str.charAt(0);
|
||||
int i7 = -2147483647;
|
||||
if (Intrinsics.compare((int) charAt, 48) < 0) {
|
||||
i4 = 1;
|
||||
if (length == 1) {
|
||||
return null;
|
||||
}
|
||||
if (charAt == '-') {
|
||||
i7 = IntCompanionObject.MIN_VALUE;
|
||||
z3 = true;
|
||||
} else {
|
||||
if (charAt != '+') {
|
||||
return null;
|
||||
}
|
||||
z3 = false;
|
||||
}
|
||||
} else {
|
||||
z3 = false;
|
||||
i4 = 0;
|
||||
}
|
||||
int i8 = -59652323;
|
||||
while (i4 < length) {
|
||||
int digitOf = CharsKt__CharJVMKt.digitOf(str.charAt(i4), i);
|
||||
if (digitOf < 0) {
|
||||
return null;
|
||||
}
|
||||
if ((i6 < i8 && (i8 != -59652323 || i6 < (i8 = i7 / i))) || (i5 = i6 * i) < i7 + digitOf) {
|
||||
return null;
|
||||
}
|
||||
i6 = i5 - digitOf;
|
||||
i4++;
|
||||
}
|
||||
return z3 ? Integer.valueOf(i6) : Integer.valueOf(-i6);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Long toLongOrNull(String str, int i) {
|
||||
boolean z3;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
CharsKt__CharJVMKt.checkRadix(i);
|
||||
int length = str.length();
|
||||
Long l4 = null;
|
||||
if (length == 0) {
|
||||
return null;
|
||||
}
|
||||
int i4 = 0;
|
||||
char charAt = str.charAt(0);
|
||||
long j4 = -9223372036854775807L;
|
||||
if (Intrinsics.compare((int) charAt, 48) < 0) {
|
||||
z3 = true;
|
||||
if (length == 1) {
|
||||
return null;
|
||||
}
|
||||
if (charAt == '-') {
|
||||
j4 = Long.MIN_VALUE;
|
||||
i4 = 1;
|
||||
} else {
|
||||
if (charAt != '+') {
|
||||
return null;
|
||||
}
|
||||
z3 = false;
|
||||
i4 = 1;
|
||||
}
|
||||
} else {
|
||||
z3 = false;
|
||||
}
|
||||
long j5 = 0;
|
||||
long j6 = -256204778801521550L;
|
||||
while (i4 < length) {
|
||||
int digitOf = CharsKt__CharJVMKt.digitOf(str.charAt(i4), i);
|
||||
if (digitOf < 0) {
|
||||
return l4;
|
||||
}
|
||||
if (j5 < j6) {
|
||||
if (j6 != -256204778801521550L) {
|
||||
return l4;
|
||||
}
|
||||
j6 = j4 / i;
|
||||
if (j5 < j6) {
|
||||
return l4;
|
||||
}
|
||||
}
|
||||
Long l5 = l4;
|
||||
int i5 = i4;
|
||||
long j7 = j5 * i;
|
||||
long j8 = digitOf;
|
||||
if (j7 < j4 + j8) {
|
||||
return l5;
|
||||
}
|
||||
j5 = j7 - j8;
|
||||
i4 = i5 + 1;
|
||||
l4 = l5;
|
||||
}
|
||||
return z3 ? Long.valueOf(j5) : Long.valueOf(-j5);
|
||||
}
|
||||
|
||||
@SinceKotlin(version = "1.1")
|
||||
public static final Short toShortOrNull(String str, int i) {
|
||||
int intValue;
|
||||
Intrinsics.checkNotNullParameter(str, "<this>");
|
||||
Integer intOrNull = toIntOrNull(str, i);
|
||||
if (intOrNull == null || (intValue = intOrNull.intValue()) < -32768 || intValue > 32767) {
|
||||
return null;
|
||||
}
|
||||
return Short.valueOf((short) intValue);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user