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/UByteArray.java
Normal file
251
apk_decompiled/sources/kotlin/UByteArray.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\u0012\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/UByteArray;", "", "Lkotlin/UByte;", "size", "", "constructor-impl", "(I)[B", "storage", "", "([B)[B", "getSize-impl", "([B)I", "getStorage$annotations", "()V", "contains", "", "element", "contains-7apg3OU", "([BB)Z", "containsAll", "elements", "containsAll-impl", "([BLjava/util/Collection;)Z", "equals", "other", "", "equals-impl", "([BLjava/lang/Object;)Z", "get", FirebaseAnalytics.Param.INDEX, "get-w2LRezQ", "([BI)B", "hashCode", "hashCode-impl", "isEmpty", "isEmpty-impl", "([B)Z", "iterator", "", "iterator-impl", "([B)Ljava/util/Iterator;", "set", "", "value", "set-VurrAj0", "([BIB)V", "toString", "", "toString-impl", "([B)Ljava/lang/String;", "Iterator", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
@ExperimentalUnsignedTypes
|
||||
@JvmInline
|
||||
@SourceDebugExtension({"SMAP\nUByteArray.kt\nKotlin\n*S Kotlin\n*F\n+ 1 UByteArray.kt\nkotlin/UByteArray\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 UByteArray.kt\nkotlin/UByteArray\n*L\n62#1:87,3\n*E\n"})
|
||||
/* loaded from: classes3.dex */
|
||||
public final class UByteArray implements Collection<UByte>, KMappedMarker {
|
||||
private final byte[] storage;
|
||||
|
||||
@Metadata(d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0010(\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0012\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/UByteArray$Iterator;", "", "Lkotlin/UByte;", "array", "", "([B)V", FirebaseAnalytics.Param.INDEX, "", "hasNext", "", "next", "next-w2LRezQ", "()B", "kotlin-stdlib"}, k = 1, mv = {1, 9, 0}, xi = 48)
|
||||
/* loaded from: classes3.dex */
|
||||
public static final class Iterator implements java.util.Iterator<UByte>, KMappedMarker {
|
||||
private final byte[] array;
|
||||
private int index;
|
||||
|
||||
public Iterator(byte[] 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 */ UByte next() {
|
||||
return UByte.m128boximpl(m202nextw2LRezQ());
|
||||
}
|
||||
|
||||
/* renamed from: next-w2LRezQ, reason: not valid java name */
|
||||
public byte m202nextw2LRezQ() {
|
||||
int i = this.index;
|
||||
byte[] bArr = this.array;
|
||||
if (i >= bArr.length) {
|
||||
throw new NoSuchElementException(String.valueOf(this.index));
|
||||
}
|
||||
this.index = i + 1;
|
||||
return UByte.m134constructorimpl(bArr[i]);
|
||||
}
|
||||
|
||||
@Override // java.util.Iterator
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
private /* synthetic */ UByteArray(byte[] bArr) {
|
||||
this.storage = bArr;
|
||||
}
|
||||
|
||||
/* renamed from: box-impl, reason: not valid java name */
|
||||
public static final /* synthetic */ UByteArray m185boximpl(byte[] bArr) {
|
||||
return new UByteArray(bArr);
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
/* renamed from: constructor-impl, reason: not valid java name */
|
||||
public static byte[] m187constructorimpl(byte[] storage) {
|
||||
Intrinsics.checkNotNullParameter(storage, "storage");
|
||||
return storage;
|
||||
}
|
||||
|
||||
/* renamed from: containsAll-impl, reason: not valid java name */
|
||||
public static boolean m189containsAllimpl(byte[] bArr, Collection<UByte> elements) {
|
||||
Intrinsics.checkNotNullParameter(elements, "elements");
|
||||
Collection<UByte> collection = elements;
|
||||
if (collection.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
for (Object obj : collection) {
|
||||
if (!(obj instanceof UByte) || !ArraysKt.contains(bArr, ((UByte) obj).getData())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* renamed from: equals-impl, reason: not valid java name */
|
||||
public static boolean m190equalsimpl(byte[] bArr, Object obj) {
|
||||
return (obj instanceof UByteArray) && Intrinsics.areEqual(bArr, ((UByteArray) obj).getStorage());
|
||||
}
|
||||
|
||||
/* renamed from: equals-impl0, reason: not valid java name */
|
||||
public static final boolean m191equalsimpl0(byte[] bArr, byte[] bArr2) {
|
||||
return Intrinsics.areEqual(bArr, bArr2);
|
||||
}
|
||||
|
||||
/* renamed from: get-w2LRezQ, reason: not valid java name */
|
||||
public static final byte m192getw2LRezQ(byte[] bArr, int i) {
|
||||
return UByte.m134constructorimpl(bArr[i]);
|
||||
}
|
||||
|
||||
/* renamed from: getSize-impl, reason: not valid java name */
|
||||
public static int m193getSizeimpl(byte[] bArr) {
|
||||
return bArr.length;
|
||||
}
|
||||
|
||||
@PublishedApi
|
||||
public static /* synthetic */ void getStorage$annotations() {
|
||||
}
|
||||
|
||||
/* renamed from: hashCode-impl, reason: not valid java name */
|
||||
public static int m194hashCodeimpl(byte[] bArr) {
|
||||
return Arrays.hashCode(bArr);
|
||||
}
|
||||
|
||||
/* renamed from: isEmpty-impl, reason: not valid java name */
|
||||
public static boolean m195isEmptyimpl(byte[] bArr) {
|
||||
return bArr.length == 0;
|
||||
}
|
||||
|
||||
/* renamed from: iterator-impl, reason: not valid java name */
|
||||
public static java.util.Iterator<UByte> m196iteratorimpl(byte[] bArr) {
|
||||
return new Iterator(bArr);
|
||||
}
|
||||
|
||||
/* renamed from: set-VurrAj0, reason: not valid java name */
|
||||
public static final void m197setVurrAj0(byte[] bArr, int i, byte b4) {
|
||||
bArr[i] = b4;
|
||||
}
|
||||
|
||||
/* renamed from: toString-impl, reason: not valid java name */
|
||||
public static String m198toStringimpl(byte[] bArr) {
|
||||
return "UByteArray(storage=" + Arrays.toString(bArr) + ')';
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public /* bridge */ /* synthetic */ boolean add(UByte uByte) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
/* renamed from: add-7apg3OU, reason: not valid java name */
|
||||
public boolean m199add7apg3OU(byte b4) {
|
||||
throw new UnsupportedOperationException("Operation is not supported for read-only collection");
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean addAll(Collection<? extends UByte> 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 UByte) {
|
||||
return m200contains7apg3OU(((UByte) obj).getData());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* renamed from: contains-7apg3OU, reason: not valid java name */
|
||||
public boolean m200contains7apg3OU(byte b4) {
|
||||
return m188contains7apg3OU(this.storage, b4);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean containsAll(Collection<? extends Object> elements) {
|
||||
Intrinsics.checkNotNullParameter(elements, "elements");
|
||||
return m189containsAllimpl(this.storage, elements);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean equals(Object obj) {
|
||||
return m190equalsimpl(this.storage, obj);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
/* renamed from: getSize, reason: merged with bridge method [inline-methods] */
|
||||
public int size() {
|
||||
return m193getSizeimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public int hashCode() {
|
||||
return m194hashCodeimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection
|
||||
public boolean isEmpty() {
|
||||
return m195isEmptyimpl(this.storage);
|
||||
}
|
||||
|
||||
@Override // java.util.Collection, java.lang.Iterable
|
||||
public java.util.Iterator<UByte> iterator() {
|
||||
return m196iteratorimpl(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 m198toStringimpl(this.storage);
|
||||
}
|
||||
|
||||
/* renamed from: unbox-impl, reason: not valid java name and from getter */
|
||||
public final /* synthetic */ byte[] getStorage() {
|
||||
return this.storage;
|
||||
}
|
||||
|
||||
/* renamed from: constructor-impl, reason: not valid java name */
|
||||
public static byte[] m186constructorimpl(int i) {
|
||||
return m187constructorimpl(new byte[i]);
|
||||
}
|
||||
|
||||
/* renamed from: contains-7apg3OU, reason: not valid java name */
|
||||
public static boolean m188contains7apg3OU(byte[] bArr, byte b4) {
|
||||
return ArraysKt.contains(bArr, b4);
|
||||
}
|
||||
|
||||
@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