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,171 @@
package kotlin.collections;
import C.w;
import com.google.android.gms.measurement.internal.a;
import com.google.firebase.analytics.FirebaseAnalytics;
import java.util.Arrays;
import java.util.Iterator;
import java.util.RandomAccess;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlin.ranges.RangesKt;
@Metadata(d1 = {"\u0000>\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u0011\n\u0002\u0010\u0000\n\u0002\b\t\n\u0002\u0010\u0002\n\u0002\b\b\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010(\n\u0002\b\b\b\u0002\u0018\u0000*\u0004\b\u0000\u0010\u00012\b\u0012\u0004\u0012\u0002H\u00010\u00022\u00060\u0003j\u0002`\u0004B\u000f\b\u0016\u0012\u0006\u0010\u0005\u001a\u00020\u0006¢\u0006\u0002\u0010\u0007B\u001d\u0012\u000e\u0010\b\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\t\u0012\u0006\u0010\u000b\u001a\u00020\u0006¢\u0006\u0002\u0010\fJ\u0013\u0010\u0013\u001a\u00020\u00142\u0006\u0010\u0015\u001a\u00028\u0000¢\u0006\u0002\u0010\u0016J\u0014\u0010\u0017\u001a\b\u0012\u0004\u0012\u00028\u00000\u00002\u0006\u0010\u0018\u001a\u00020\u0006J\u0016\u0010\u0019\u001a\u00028\u00002\u0006\u0010\u001a\u001a\u00020\u0006H\u0096\u0002¢\u0006\u0002\u0010\u001bJ\u0006\u0010\u001c\u001a\u00020\u001dJ\u000f\u0010\u001e\u001a\b\u0012\u0004\u0012\u00028\u00000\u001fH\u0096\u0002J\u000e\u0010 \u001a\u00020\u00142\u0006\u0010!\u001a\u00020\u0006J\u0015\u0010\"\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\tH\u0014¢\u0006\u0002\u0010#J'\u0010\"\u001a\b\u0012\u0004\u0012\u0002H\u00010\t\"\u0004\b\u0001\u0010\u00012\f\u0010$\u001a\b\u0012\u0004\u0012\u0002H\u00010\tH\u0014¢\u0006\u0002\u0010%J\u0015\u0010&\u001a\u00020\u0006*\u00020\u00062\u0006\u0010!\u001a\u00020\u0006H\u0082\bR\u0018\u0010\b\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\n0\tX\u0082\u0004¢\u0006\u0004\n\u0002\u0010\rR\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u001e\u0010\u000f\u001a\u00020\u00062\u0006\u0010\u000e\u001a\u00020\u0006@RX\u0096\u000e¢\u0006\b\n\u0000\u001a\u0004\b\u0010\u0010\u0011R\u000e\u0010\u0012\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006'"}, d2 = {"Lkotlin/collections/RingBuffer;", "T", "Lkotlin/collections/AbstractList;", "Ljava/util/RandomAccess;", "Lkotlin/collections/RandomAccess;", "capacity", "", "(I)V", "buffer", "", "", "filledSize", "([Ljava/lang/Object;I)V", "[Ljava/lang/Object;", "<set-?>", "size", "getSize", "()I", "startIndex", "add", "", "element", "(Ljava/lang/Object;)V", "expanded", "maxCapacity", "get", FirebaseAnalytics.Param.INDEX, "(I)Ljava/lang/Object;", "isFull", "", "iterator", "", "removeFirst", "n", "toArray", "()[Ljava/lang/Object;", "array", "([Ljava/lang/Object;)[Ljava/lang/Object;", "forward", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
@SourceDebugExtension({"SMAP\nSlidingWindow.kt\nKotlin\n*S Kotlin\n*F\n+ 1 SlidingWindow.kt\nkotlin/collections/RingBuffer\n+ 2 fake.kt\nkotlin/jvm/internal/FakeKt\n*L\n1#1,206:1\n204#1:208\n204#1:209\n204#1:210\n1#2:207\n*S KotlinDebug\n*F\n+ 1 SlidingWindow.kt\nkotlin/collections/RingBuffer\n*L\n106#1:208\n175#1:209\n188#1:210\n*E\n"})
/* loaded from: classes3.dex */
final class RingBuffer<T> extends AbstractList<T> implements RandomAccess {
private final Object[] buffer;
private final int capacity;
private int size;
private int startIndex;
public RingBuffer(Object[] buffer, int i) {
Intrinsics.checkNotNullParameter(buffer, "buffer");
this.buffer = buffer;
if (i >= 0) {
if (i <= buffer.length) {
this.capacity = buffer.length;
this.size = i;
return;
} else {
StringBuilder t2 = w.t(i, "ring buffer filled size: ", " cannot be larger than the buffer size: ");
t2.append(buffer.length);
throw new IllegalArgumentException(t2.toString().toString());
}
}
throw new IllegalArgumentException(a.l(i, "ring buffer filled size should not be negative but it is ").toString());
}
private final int forward(int i, int i4) {
return (i + i4) % this.capacity;
}
@Override // java.util.Collection, java.util.List
public final void add(T element) {
if (isFull()) {
throw new IllegalStateException("ring buffer is full");
}
this.buffer[(size() + this.startIndex) % this.capacity] = element;
this.size = size() + 1;
}
/* JADX WARN: Multi-variable type inference failed */
public final RingBuffer<T> expanded(int maxCapacity) {
Object[] array;
int i = this.capacity;
int coerceAtMost = RangesKt.coerceAtMost(i + (i >> 1) + 1, maxCapacity);
if (this.startIndex == 0) {
array = Arrays.copyOf(this.buffer, coerceAtMost);
Intrinsics.checkNotNullExpressionValue(array, "copyOf(...)");
} else {
array = toArray(new Object[coerceAtMost]);
}
return new RingBuffer<>(array, size());
}
@Override // kotlin.collections.AbstractList, java.util.List
public T get(int index) {
AbstractList.INSTANCE.checkElementIndex$kotlin_stdlib(index, size());
return (T) this.buffer[(this.startIndex + index) % this.capacity];
}
@Override // kotlin.collections.AbstractList, kotlin.collections.AbstractCollection
/* renamed from: getSize, reason: from getter */
public int get_size() {
return this.size;
}
public final boolean isFull() {
return size() == this.capacity;
}
@Override // kotlin.collections.AbstractList, kotlin.collections.AbstractCollection, java.util.Collection, java.lang.Iterable
public Iterator<T> iterator() {
return new AbstractIterator<T>(this) { // from class: kotlin.collections.RingBuffer$iterator$1
private int count;
private int index;
final /* synthetic */ RingBuffer<T> this$0;
{
int i;
this.this$0 = this;
this.count = this.size();
i = ((RingBuffer) this).startIndex;
this.index = i;
}
/* JADX WARN: Multi-variable type inference failed */
@Override // kotlin.collections.AbstractIterator
public void computeNext() {
Object[] objArr;
if (this.count == 0) {
done();
return;
}
objArr = ((RingBuffer) this.this$0).buffer;
setNext(objArr[this.index]);
this.index = (this.index + 1) % ((RingBuffer) this.this$0).capacity;
this.count--;
}
};
}
public final void removeFirst(int n4) {
if (n4 < 0) {
throw new IllegalArgumentException(a.l(n4, "n shouldn't be negative but it is ").toString());
}
if (n4 > size()) {
StringBuilder t2 = w.t(n4, "n shouldn't be greater than the buffer size: n = ", ", size = ");
t2.append(size());
throw new IllegalArgumentException(t2.toString().toString());
}
if (n4 > 0) {
int i = this.startIndex;
int i4 = (i + n4) % this.capacity;
if (i > i4) {
ArraysKt___ArraysJvmKt.fill(this.buffer, (Object) null, i, this.capacity);
ArraysKt___ArraysJvmKt.fill(this.buffer, (Object) null, 0, i4);
} else {
ArraysKt___ArraysJvmKt.fill(this.buffer, (Object) null, i, i4);
}
this.startIndex = i4;
this.size = size() - n4;
}
}
@Override // kotlin.collections.AbstractCollection, java.util.Collection
public <T> T[] toArray(T[] array) {
Intrinsics.checkNotNullParameter(array, "array");
int length = array.length;
Object[] objArr = array;
if (length < size()) {
Object[] objArr2 = (T[]) Arrays.copyOf(array, size());
Intrinsics.checkNotNullExpressionValue(objArr2, "copyOf(...)");
objArr = objArr2;
}
int size = size();
int i = 0;
int i4 = 0;
for (int i5 = this.startIndex; i4 < size && i5 < this.capacity; i5++) {
objArr[i4] = this.buffer[i5];
i4++;
}
while (i4 < size) {
objArr[i4] = this.buffer[i];
i4++;
i++;
}
return (T[]) CollectionsKt__CollectionsJVMKt.terminateCollectionToArray(size, objArr);
}
/* JADX WARN: Multi-variable type inference failed */
@Override // kotlin.collections.AbstractCollection, java.util.Collection
public Object[] toArray() {
return toArray(new Object[size()]);
}
public RingBuffer(int i) {
this(new Object[i], 0);
}
}