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,128 @@
package kotlin.io;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
import kotlin.collections.CollectionsKt__IterablesKt;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.text.StringsKt__StringsKt;
/* JADX INFO: Access modifiers changed from: package-private */
@Metadata(d1 = {"\u0000$\n\u0000\n\u0002\u0010\u000b\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0000\u001a\u0011\u0010\u000b\u001a\u00020\f*\u00020\bH\u0002¢\u0006\u0002\b\r\u001a\u001c\u0010\u000e\u001a\u00020\u0002*\u00020\u00022\u0006\u0010\u000f\u001a\u00020\f2\u0006\u0010\u0010\u001a\u00020\fH\u0000\u001a\f\u0010\u0011\u001a\u00020\u0012*\u00020\u0002H\u0000\"\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00028F¢\u0006\u0006\u001a\u0004\b\u0000\u0010\u0003\"\u0018\u0010\u0004\u001a\u00020\u0002*\u00020\u00028@X\u0080\u0004¢\u0006\u0006\u001a\u0004\b\u0005\u0010\u0006\"\u0018\u0010\u0007\u001a\u00020\b*\u00020\u00028@X\u0080\u0004¢\u0006\u0006\u001a\u0004\b\t\u0010\\u0006\u0013"}, d2 = {"isRooted", "", "Ljava/io/File;", "(Ljava/io/File;)Z", "root", "getRoot", "(Ljava/io/File;)Ljava/io/File;", "rootName", "", "getRootName", "(Ljava/io/File;)Ljava/lang/String;", "getRootLength", "", "getRootLength$FilesKt__FilePathComponentsKt", "subPath", "beginIndex", "endIndex", "toComponents", "Lkotlin/io/FilePathComponents;", "kotlin-stdlib"}, k = 5, mv = {1, 9, 0}, xi = 49, xs = "kotlin/io/FilesKt")
@SourceDebugExtension({"SMAP\nFilePathComponents.kt\nKotlin\n*S Kotlin\n*F\n+ 1 FilePathComponents.kt\nkotlin/io/FilesKt__FilePathComponentsKt\n+ 2 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n*L\n1#1,148:1\n1549#2:149\n1620#2,3:150\n*S KotlinDebug\n*F\n+ 1 FilePathComponents.kt\nkotlin/io/FilesKt__FilePathComponentsKt\n*L\n133#1:149\n133#1:150,3\n*E\n"})
/* loaded from: classes3.dex */
public class FilesKt__FilePathComponentsKt {
public static final File getRoot(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
return new File(getRootName(file));
}
/* JADX WARN: Code restructure failed: missing block: B:7:0x0017, code lost:
r1 = kotlin.text.StringsKt__StringsKt.indexOf$default(r5, r0, 2, false, 4, (java.lang.Object) null);
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static final int getRootLength$FilesKt__FilePathComponentsKt(java.lang.String r5) {
/*
char r0 = java.io.File.separatorChar
r1 = 0
r2 = 4
int r3 = kotlin.text.StringsKt.l(r5, r0, r1, r2)
r4 = 1
if (r3 != 0) goto L2d
int r1 = r5.length()
if (r1 <= r4) goto L2c
char r1 = r5.charAt(r4)
if (r1 != r0) goto L2c
r1 = 2
int r1 = kotlin.text.StringsKt.l(r5, r0, r1, r2)
if (r1 < 0) goto L2c
int r1 = r1 + r4
int r0 = kotlin.text.StringsKt.l(r5, r0, r1, r2)
if (r0 < 0) goto L27
int r0 = r0 + r4
return r0
L27:
int r5 = r5.length()
return r5
L2c:
return r4
L2d:
r0 = 58
if (r3 <= 0) goto L3b
int r2 = r3 + (-1)
char r2 = r5.charAt(r2)
if (r2 != r0) goto L3b
int r3 = r3 + r4
return r3
L3b:
r2 = -1
if (r3 != r2) goto L49
boolean r0 = kotlin.text.StringsKt.h(r0, r5)
if (r0 == 0) goto L49
int r5 = r5.length()
return r5
L49:
return r1
*/
throw new UnsupportedOperationException("Method not decompiled: kotlin.io.FilesKt__FilePathComponentsKt.getRootLength$FilesKt__FilePathComponentsKt(java.lang.String):int");
}
public static final String getRootName(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
String path = file.getPath();
Intrinsics.checkNotNullExpressionValue(path, "getPath(...)");
String path2 = file.getPath();
Intrinsics.checkNotNullExpressionValue(path2, "getPath(...)");
String substring = path.substring(0, getRootLength$FilesKt__FilePathComponentsKt(path2));
Intrinsics.checkNotNullExpressionValue(substring, "substring(...)");
return substring;
}
public static final boolean isRooted(File file) {
Intrinsics.checkNotNullParameter(file, "<this>");
String path = file.getPath();
Intrinsics.checkNotNullExpressionValue(path, "getPath(...)");
return getRootLength$FilesKt__FilePathComponentsKt(path) > 0;
}
public static final File subPath(File file, int i, int i4) {
Intrinsics.checkNotNullParameter(file, "<this>");
return toComponents(file).subPath(i, i4);
}
public static final FilePathComponents toComponents(File file) {
List split$default;
int collectionSizeOrDefault;
List list;
Intrinsics.checkNotNullParameter(file, "<this>");
String path = file.getPath();
Intrinsics.checkNotNull(path);
int rootLength$FilesKt__FilePathComponentsKt = getRootLength$FilesKt__FilePathComponentsKt(path);
String substring = path.substring(0, rootLength$FilesKt__FilePathComponentsKt);
Intrinsics.checkNotNullExpressionValue(substring, "substring(...)");
String substring2 = path.substring(rootLength$FilesKt__FilePathComponentsKt);
Intrinsics.checkNotNullExpressionValue(substring2, "substring(...)");
if (substring2.length() == 0) {
list = CollectionsKt.emptyList();
} else {
split$default = StringsKt__StringsKt.split$default((CharSequence) substring2, new char[]{File.separatorChar}, false, 0, 6, (Object) null);
List list2 = split$default;
collectionSizeOrDefault = CollectionsKt__IterablesKt.collectionSizeOrDefault(list2, 10);
ArrayList arrayList = new ArrayList(collectionSizeOrDefault);
Iterator it = list2.iterator();
while (it.hasNext()) {
arrayList.add(new File((String) it.next()));
}
list = arrayList;
}
return new FilePathComponents(new File(substring), list);
}
}