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:
251
apk_decompiled/sources/kotlin/UShortArray.java
Normal file
251
apk_decompiled/sources/kotlin/UShortArray.java
Normal file
@@ -0,0 +1,251 @@
|
||||
package kotlin;
|
||||
|
||||
import com.google.firebase.analytics.FirebaseAnalytics;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.NoSuchElementException;
|
||||
import kotlin.collections.ArraysKt;
|
||||
import kotlin.jvm.JvmInline;
|
||||
import kotlin.jvm.internal.CollectionToArray;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlin.jvm.internal.SourceDebugExtension;
|
||||
import kotlin.jvm.internal.markers.KMappedMarker;
|
||||
|
||||
@SinceKotlin(version = "1.3")
|
||||
@Metadata(d1 = {"\u0000F\n\u0002\u0018\u0002\n\u0002\u0010\u001e\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0003\n\u0002\u0010\u0017\n\u0002\b\u0006\n\u0002\u0010\u000b\n\u0002\b\t\n\u0002\u0010\u0000\n\u0002\b\f\n\u0002\u0010(\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0002\b\u0004\n\u0002\u0010\u000e\n\u0002\b\u0004\b\u0087@\u0018\u00002\b\u0012\u0004\u0012\u00020\u00020\u0001:\u00012B\u0011\b\u0016\u0012\u0006\u0010\u0003\u001a\u00020\u0004¢\u0006\u0004\b\u0005\u0010\u0006B\u0011\b\u0001\u0012\u0006\u0010\u0007\u001a\u00020\b¢\u0006\u0004\b\u0005\u0010\tJ\u0018\u0010\u000e\u001a\u00020\u000f2\u0006\u0010\u0010\u001a\u00020\u0002H\u0096\u0002¢\u0006\u0004\b\u0011\u0010\u0012J\u001d\u0010\u0013\u001a\u00020\u000f2\f\u0010\u0014\u001a\b\u0012\u0004\u0012\u00020\u00020\u0001H\u0016¢\u0006\u0004\b\u0015\u0010\u0016J\u001a\u0010\u0017\u001a\u00020\u000f2\b\u0010\u0018\u001a\u0004\u0018\u00010\u0019HÖ\u0003¢\u0006\u0004\b\u001a\u0010\u001bJ\u001b\u0010\u001c\u001a\u00020\u00022\u0006\u0010\u001d\u001a\u00020\u0004H\u0086\u0002ø\u0001\u0000¢\u0006\u0004\b\u001e\u0010\u001fJ\u0010\u0010 \u001a\u00020\u0004HÖ\u0001¢\u0006\u0004\b!\u0010\u000bJ\u000f\u0010\"\u001a\u00020\u000fH\u0016¢\u0006\u0004\b#\u0010$J\u0016\u0010%\u001a\b\u0012\u0004\u0012\u00020\u00020&H\u0096\u0002¢\u0006\u0004\b'\u0010(J \u0010)\u001a\u00020*2\u0006\u0010\u001d\u001a\u00020\u00042\u0006\u0010+\u001a\u00020\u0002H\u0086\u0002¢\u0006\u0004\b,\u0010-J\u0010\u0010.\u001a\u00020/HÖ\u0001¢\u0006\u0004\b0\u00101R\u0014\u0010\u0003\u001a\u00020\u00048VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\n\u0010\u000bR\u0016\u0010\u0007\u001a\u00020\b8\u0000X\u0081\u0004¢\u0006\b\n\u0000\u0012\u0004\b\f\u0010\r\u0088\u0001\u0007\u0092\u0001\u00020\b\u0082\u0002\u0004\n\u0002\b!¨\u00063"}, d2 = {"Lkotlin/UShortArray;", "", "Lkotlin/UShort;", "size", "", "constructor-impl", "(I)[S", "storage", "", "([S)[S", "getSize-impl", "([S)I", "getStorage$annotations", "()V", "contains", "", "element", "contains-xj2QHRw", "([SS)Z", "containsAll", "elements", "containsAll-impl", "([SLjava/util/Collection;)Z", "equals", "other", "", "equals-impl", "([SLjava/lang/Object;)Z", "get", FirebaseAnalytics.Param.INDEX, "get-Mh2AYeg", "([SI)S", "hashCode", "hashCode-impl", "isEmpty", "isEmpty-impl", "([S)Z", "iterator", "", "iterator-impl", "([S)Ljava/util/Iterator;", "set", "", "value", "set-01HTLdE", "([SIS)V", "toString", "", "toString-impl", "([S)Ljava/lang/String;", "Iterator", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
@ExperimentalUnsignedTypes
|
||||
@JvmInline
|
||||
@SourceDebugExtension({"SMAP\nUShortArray.kt\nKotlin\n*S Kotlin\n*F\n+ 1 UShortArray.kt\nkotlin/UShortArray\n+ 2 _Collections.kt\nkotlin/collections/CollectionsKt___CollectionsKt\n*L\n1#1,86:1\n1726#2,3:87\n*S KotlinDebug\n*F\n+ 1 UShortArray.kt\nkotlin/UShortArray\n*L\n62#1:87,3\n*E\n"})
|
||||
/* loaded from: classes3.dex */
|
||||
public final class UShortArray implements Collection<UShort>, KMappedMarker {
|
||||
private final short[] storage;
|
||||
|
||||
@Metadata(d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0010(\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0017\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0004\b\u0002\u0018\u00002\b\u0012\u0004\u0012\u00020\u00020\u0001B\r\u0012\u0006\u0010\u0003\u001a\u00020\u0004¢\u0006\u0002\u0010\u0005J\t\u0010\b\u001a\u00020\tH\u0096\u0002J\u0013\u0010\n\u001a\u00020\u0002H\u0096\u0002ø\u0001\u0000¢\u0006\u0004\b\u000b\u0010\fR\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u000e¢\u0006\u0002\n\u0000\u0082\u0002\u0004\n\u0002\b!¨\u0006\r"}, d2 = {"Lkotlin/UShortArray$Iterator;", "", "Lkotlin/UShort;", "array", "", "([S)V", FirebaseAnalytics.Param.INDEX, "", "hasNext", "", "next", "next-Mh2AYeg", "()S", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes3.dex */
|
||||
public static final class Iterator implements java.util.Iterator<UShort>, KMappedMarker {
|
||||
private final short[] array;
|
||||
private int index;
|
||||
|
||||
public Iterator(short[] array) {
|
||||
Intrinsics.checkNotNullParameter(array, "array");
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public boolean hasNext() {
|
||||
return this.index < this.array.length;
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public /* bridge */ /* synthetic */ UShort next() {
|
||||
return UShort.m391boximpl(m465nextMh2AYeg());
|
||||
}
|
||||
|
||||
/* renamed from: next-Mh2AYeg, reason: not valid java name */
|
||||
public short m465nextMh2AYeg() {
|
||||
int i = this.index;
|
||||
short[] sArr = this.array;
|
||||
if (i >= sArr.length) {
|
||||
throw new NoSuchElementException(String.valueOf(this.index));
|
||||
}
|
||||
this.index = i + 1;
|
||||
return UShort.m397constructorimpl(sArr[i]);
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
private /* synthetic */ UShortArray(short[] sArr) {
|
||||
this.storage = sArr;
|
||||
}
|
||||
|
||||
/* renamed from: box-impl, reason: not valid java name */
|
||||
public static final /* synthetic */ UShortArray m448boximpl(short[] sArr) {
|
||||
return new UShortArray(sArr);
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
/* renamed from: constructor-impl, reason: not valid java name */
|
||||
public static short[] m450constructorimpl(short[] storage) {
|
||||
Intrinsics.checkNotNullParameter(storage, "storage");
|
||||
return storage;
|
||||
}
|
||||
|
||||
/* renamed from: containsAll-impl, reason: not valid java name */
|
||||
public static boolean m452containsAllimpl(short[] sArr, Collection<UShort> elements) {
|
||||
Intrinsics.checkNotNullParameter(elements, "elements");
|
||||
Collection<UShort> collection = elements;
|
||||
if (collection.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
for (Object obj : collection) {
|
||||
if (!(obj instanceof UShort) || !ArraysKt.contains(sArr, ((UShort) obj).getData())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* renamed from: equals-impl, reason: not valid java name */
|
||||
public static boolean m453equalsimpl(short[] sArr, Object obj) {
|
||||
return (obj instanceof UShortArray) && Intrinsics.areEqual(sArr, ((UShortArray) obj).getStorage());
|
||||
}
|
||||
|
||||
/* renamed from: equals-impl0, reason: not valid java name */
|
||||
public static final boolean m454equalsimpl0(short[] sArr, short[] sArr2) {
|
||||
return Intrinsics.areEqual(sArr, sArr2);
|
||||
}
|
||||
|
||||
/* renamed from: get-Mh2AYeg, reason: not valid java name */
|
||||
public static final short m455getMh2AYeg(short[] sArr, int i) {
|
||||
return UShort.m397constructorimpl(sArr[i]);
|
||||
}
|
||||
|
||||
/* renamed from: getSize-impl, reason: not valid java name */
|
||||
public static int m456getSizeimpl(short[] sArr) {
|
||||
return sArr.length;
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
public static /* synthetic */ void getStorage$annotations() {
|
||||
}
|
||||
|
||||
/* renamed from: hashCode-impl, reason: not valid java name */
|
||||
public static int m457hashCodeimpl(short[] sArr) {
|
||||
return Arrays.hashCode(sArr);
|
||||
}
|
||||
|
||||
/* renamed from: isEmpty-impl, reason: not valid java name */
|
||||
public static boolean m458isEmptyimpl(short[] sArr) {
|
||||
return sArr.length == 0;
|
||||
}
|
||||
|
||||
/* renamed from: iterator-impl, reason: not valid java name */
|
||||
public static java.util.Iterator<UShort> m459iteratorimpl(short[] sArr) {
|
||||
return new Iterator(sArr);
|
||||
}
|
||||
|
||||
/* renamed from: set-01HTLdE, reason: not valid java name */
|
||||
public static final void m460set01HTLdE(short[] sArr, int i, short s4) {
|
||||
sArr[i] = s4;
|
||||
}
|
||||
|
||||
/* renamed from: toString-impl, reason: not valid java name */
|
||||
public static String m461toStringimpl(short[] sArr) {
|
||||
return "UShortArray(storage=" + Arrays.toString(sArr) + ')';
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public /* bridge */ /* synthetic */ boolean add(UShort uShort) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
/* renamed from: add-xj2QHRw, reason: not valid java name */
|
||||
public boolean m462addxj2QHRw(short s4) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean addAll(Collection<? extends UShort> collection) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public void clear() {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public final /* bridge */ boolean contains(Object obj) {
|
||||
if (obj instanceof UShort) {
|
||||
return m463containsxj2QHRw(((UShort) obj).getData());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* renamed from: contains-xj2QHRw, reason: not valid java name */
|
||||
public boolean m463containsxj2QHRw(short s4) {
|
||||
return m451containsxj2QHRw(this.storage, s4);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean containsAll(Collection<? extends Object> elements) {
|
||||
Intrinsics.checkNotNullParameter(elements, "elements");
|
||||
return m452containsAllimpl(this.storage, elements);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean equals(Object obj) {
|
||||
return m453equalsimpl(this.storage, obj);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
/* renamed from: getSize, reason: merged with bridge method [inline-methods] */
|
||||
public int size() {
|
||||
return m456getSizeimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public int hashCode() {
|
||||
return m457hashCodeimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean isEmpty() {
|
||||
return m458isEmptyimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection, java.lang.Iterable
|
||||
public java.util.Iterator<UShort> iterator() {
|
||||
return m459iteratorimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean remove(Object obj) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean removeAll(Collection<? extends Object> collection) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean retainAll(Collection<? extends Object> collection) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public Object[] toArray() {
|
||||
return CollectionToArray.toArray(this);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return m461toStringimpl(this.storage);
|
||||
}
|
||||
|
||||
/* renamed from: unbox-impl, reason: not valid java name and from getter */
|
||||
public final /* synthetic */ short[] getStorage() {
|
||||
return this.storage;
|
||||
}
|
||||
|
||||
/* renamed from: constructor-impl, reason: not valid java name */
|
||||
public static short[] m449constructorimpl(int i) {
|
||||
return m450constructorimpl(new short[i]);
|
||||
}
|
||||
|
||||
/* renamed from: contains-xj2QHRw, reason: not valid java name */
|
||||
public static boolean m451containsxj2QHRw(short[] sArr, short s4) {
|
||||
return ArraysKt.contains(sArr, s4);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public <T> T[] toArray(T[] array) {
|
||||
Intrinsics.checkNotNullParameter(array, "array");
|
||||
return (T[]) CollectionToArray.toArray(this, array);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user