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,113 @@
package kotlin.text;
import C.w;
import kotlin.ExperimentalStdlibApi;
import kotlin.Metadata;
import kotlin.SinceKotlin;
import kotlin.WasExperimental;
import kotlin.internal.InlineOnly;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.ranges.CharRange;
import kotlin.ranges.IntRange;
@Metadata(d1 = {"\u0000\u001e\n\u0000\n\u0002\u0010\f\n\u0002\u0010\b\n\u0002\b\u0006\n\u0002\u0010\u000b\n\u0002\b\u0004\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\f\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u0007\u001a\u0014\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0002H\u0007\u001a\f\u0010\u0004\u001a\u00020\u0002*\u00020\u0001H\u0007\u001a\u0014\u0010\u0004\u001a\u00020\u0002*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0002H\u0007\u001a\u0013\u0010\u0005\u001a\u0004\u0018\u00010\u0002*\u00020\u0001H\u0007¢\u0006\u0002\u0010\u0006\u001a\u001b\u0010\u0005\u001a\u0004\u0018\u00010\u0002*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0002H\u0007¢\u0006\u0002\u0010\u0007\u001a\u001c\u0010\b\u001a\u00020\t*\u00020\u00012\u0006\u0010\n\u001a\u00020\u00012\b\b\u0002\u0010\u000b\u001a\u00020\t\u001a\n\u0010\f\u001a\u00020\t*\u00020\u0001\u001a\u0015\u0010\r\u001a\u00020\u000e*\u00020\u00012\u0006\u0010\n\u001a\u00020\u000eH\u0087\n\u001a\f\u0010\u000f\u001a\u00020\u000e*\u00020\u0001H\u0007¨\u0006\u0010"}, d2 = {"digitToChar", "", "", "radix", "digitToInt", "digitToIntOrNull", "(C)Ljava/lang/Integer;", "(CI)Ljava/lang/Integer;", "equals", "", "other", "ignoreCase", "isSurrogate", "plus", "", "titlecase", "kotlin-stdlib"}, k = 5, mv = {1, 9, 0}, xi = 49, xs = "kotlin/text/CharsKt")
@SourceDebugExtension({"SMAP\nChar.kt\nKotlin\n*S Kotlin\n*F\n+ 1 Char.kt\nkotlin/text/CharsKt__CharKt\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,344:1\n1#2:345\n*E\n"})
/* loaded from: classes3.dex */
class CharsKt__CharKt extends CharsKt__CharJVMKt {
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final char digitToChar(int i) {
if (new IntRange(0, 9).contains(i)) {
return (char) (i + 48);
}
throw new IllegalArgumentException(w.i(i, "Int ", " is not a decimal digit"));
}
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final int digitToInt(char c4) {
int digitOf = CharsKt__CharJVMKt.digitOf(c4, 10);
if (digitOf >= 0) {
return digitOf;
}
throw new IllegalArgumentException("Char " + c4 + " is not a decimal digit");
}
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final Integer digitToIntOrNull(char c4) {
Integer valueOf = Integer.valueOf(CharsKt__CharJVMKt.digitOf(c4, 10));
if (valueOf.intValue() >= 0) {
return valueOf;
}
return null;
}
public static final boolean equals(char c4, char c5, boolean z3) {
if (c4 == c5) {
return true;
}
if (!z3) {
return false;
}
char upperCase = Character.toUpperCase(c4);
char upperCase2 = Character.toUpperCase(c5);
return upperCase == upperCase2 || Character.toLowerCase(upperCase) == Character.toLowerCase(upperCase2);
}
public static /* synthetic */ boolean equals$default(char c4, char c5, boolean z3, int i, Object obj) {
if ((i & 2) != 0) {
z3 = false;
}
return equals(c4, c5, z3);
}
public static final boolean isSurrogate(char c4) {
return new CharRange((char) 55296, (char) 57343).contains(c4);
}
@InlineOnly
private static final String plus(char c4, String other) {
Intrinsics.checkNotNullParameter(other, "other");
return c4 + other;
}
@SinceKotlin(version = "1.5")
public static final String titlecase(char c4) {
return _OneToManyTitlecaseMappingsKt.titlecaseImpl(c4);
}
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final Integer digitToIntOrNull(char c4, int i) {
CharsKt__CharJVMKt.checkRadix(i);
Integer valueOf = Integer.valueOf(CharsKt__CharJVMKt.digitOf(c4, i));
if (valueOf.intValue() >= 0) {
return valueOf;
}
return null;
}
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final int digitToInt(char c4, int i) {
Integer digitToIntOrNull = digitToIntOrNull(c4, i);
if (digitToIntOrNull != null) {
return digitToIntOrNull.intValue();
}
throw new IllegalArgumentException("Char " + c4 + " is not a digit in the given radix=" + i);
}
@SinceKotlin(version = "1.5")
@WasExperimental(markerClass = {ExperimentalStdlibApi.class})
public static final char digitToChar(int i, int i4) {
if (!new IntRange(2, 36).contains(i4)) {
throw new IllegalArgumentException(w.i(i4, "Invalid radix: ", ". Valid radix values are in range 2..36"));
}
if (i < 0 || i >= i4) {
throw new IllegalArgumentException(w.k("Digit ", i, i4, " does not represent a valid digit in radix "));
}
return (char) (i < 10 ? i + 48 : ((char) (i + 65)) - '\n');
}
}