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,126 @@
package kotlin.text;
import java.util.List;
import java.util.regex.Matcher;
import kotlin.Metadata;
import kotlin.collections.AbstractList;
import kotlin.jvm.internal.Intrinsics;
import kotlin.ranges.IntRange;
import kotlin.text.MatchResult;
@Metadata(d1 = {"\u0000<\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\r\n\u0002\b\u0002\n\u0002\u0010 \n\u0002\u0010\u000e\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0007\b\u0002\u0018\u00002\u00020\u0001B\u0015\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006J\n\u0010\u001c\u001a\u0004\u0018\u00010\u0001H\u0016R\u001a\u0010\u0007\u001a\b\u0012\u0004\u0012\u00020\t0\b8VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\n\u0010\u000bR\u0016\u0010\f\u001a\n\u0012\u0004\u0012\u00020\t\u0018\u00010\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u0014\u0010\r\u001a\u00020\u000eX\u0096\u0004¢\u0006\b\n\u0000\u001a\u0004\b\u000f\u0010\u0010R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0011\u001a\u00020\u00128BX\u0082\u0004¢\u0006\u0006\u001a\u0004\b\u0013\u0010\u0014R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0015\u001a\u00020\u00168VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u0017\u0010\u0018R\u0014\u0010\u0019\u001a\u00020\t8VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u001a\u0010\u001b¨\u0006\u001d"}, d2 = {"Lkotlin/text/MatcherMatchResult;", "Lkotlin/text/MatchResult;", "matcher", "Ljava/util/regex/Matcher;", "input", "", "(Ljava/util/regex/Matcher;Ljava/lang/CharSequence;)V", "groupValues", "", "", "getGroupValues", "()Ljava/util/List;", "groupValues_", "groups", "Lkotlin/text/MatchGroupCollection;", "getGroups", "()Lkotlin/text/MatchGroupCollection;", "matchResult", "Ljava/util/regex/MatchResult;", "getMatchResult", "()Ljava/util/regex/MatchResult;", "range", "Lkotlin/ranges/IntRange;", "getRange", "()Lkotlin/ranges/IntRange;", "value", "getValue", "()Ljava/lang/String;", "next", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
/* loaded from: classes3.dex */
final class MatcherMatchResult implements MatchResult {
private List<String> groupValues_;
private final MatchGroupCollection groups;
private final CharSequence input;
private final Matcher matcher;
public MatcherMatchResult(Matcher matcher, CharSequence input) {
Intrinsics.checkNotNullParameter(matcher, "matcher");
Intrinsics.checkNotNullParameter(input, "input");
this.matcher = matcher;
this.input = input;
this.groups = new MatcherMatchResult$groups$1(this);
}
/* JADX INFO: Access modifiers changed from: private */
public final java.util.regex.MatchResult getMatchResult() {
return this.matcher;
}
@Override // kotlin.text.MatchResult
public MatchResult.Destructured getDestructured() {
return MatchResult.DefaultImpls.getDestructured(this);
}
@Override // kotlin.text.MatchResult
public List<String> getGroupValues() {
if (this.groupValues_ == null) {
this.groupValues_ = new AbstractList<String>() { // from class: kotlin.text.MatcherMatchResult$groupValues$1
@Override // kotlin.collections.AbstractCollection, java.util.Collection
public final /* bridge */ boolean contains(Object obj) {
if (obj instanceof String) {
return contains((String) obj);
}
return false;
}
@Override // kotlin.collections.AbstractList, kotlin.collections.AbstractCollection
/* renamed from: getSize */
public int get_size() {
java.util.regex.MatchResult matchResult;
matchResult = MatcherMatchResult.this.getMatchResult();
return matchResult.groupCount() + 1;
}
@Override // kotlin.collections.AbstractList, java.util.List
public final /* bridge */ int indexOf(Object obj) {
if (obj instanceof String) {
return indexOf((String) obj);
}
return -1;
}
@Override // kotlin.collections.AbstractList, java.util.List
public final /* bridge */ int lastIndexOf(Object obj) {
if (obj instanceof String) {
return lastIndexOf((String) obj);
}
return -1;
}
public /* bridge */ boolean contains(String str) {
return super.contains((MatcherMatchResult$groupValues$1) str);
}
@Override // kotlin.collections.AbstractList, java.util.List
public String get(int index) {
java.util.regex.MatchResult matchResult;
matchResult = MatcherMatchResult.this.getMatchResult();
String group = matchResult.group(index);
return group == null ? "" : group;
}
public /* bridge */ int indexOf(String str) {
return super.indexOf((MatcherMatchResult$groupValues$1) str);
}
public /* bridge */ int lastIndexOf(String str) {
return super.lastIndexOf((MatcherMatchResult$groupValues$1) str);
}
};
}
List<String> list = this.groupValues_;
Intrinsics.checkNotNull(list);
return list;
}
@Override // kotlin.text.MatchResult
public MatchGroupCollection getGroups() {
return this.groups;
}
@Override // kotlin.text.MatchResult
public IntRange getRange() {
return RegexKt.access$range(getMatchResult());
}
@Override // kotlin.text.MatchResult
public String getValue() {
String group = getMatchResult().group();
Intrinsics.checkNotNullExpressionValue(group, "group(...)");
return group;
}
@Override // kotlin.text.MatchResult
public MatchResult next() {
int end = getMatchResult().end() + (getMatchResult().end() == getMatchResult().start() ? 1 : 0);
if (end > this.input.length()) {
return null;
}
Matcher matcher = this.matcher.pattern().matcher(this.input);
Intrinsics.checkNotNullExpressionValue(matcher, "matcher(...)");
return RegexKt.access$findNext(matcher, end, this.input);
}
}