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:
337
apk_decompiled/sources/s/i.java
Normal file
337
apk_decompiled/sources/s/i.java
Normal file
@@ -0,0 +1,337 @@
|
||||
package s;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import t.C0614b;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class i {
|
||||
private int createCount;
|
||||
private int evictionCount;
|
||||
private int hitCount;
|
||||
private final C0614b lock;
|
||||
private final t.c map;
|
||||
private int maxSize;
|
||||
private int missCount;
|
||||
private int putCount;
|
||||
private int size;
|
||||
|
||||
/* JADX WARN: Type inference failed for: r1v3, types: [t.b, java.lang.Object] */
|
||||
public i(int i) {
|
||||
this.maxSize = i;
|
||||
if (i <= 0) {
|
||||
throw new IllegalArgumentException("maxSize <= 0");
|
||||
}
|
||||
this.map = new t.c();
|
||||
this.lock = new Object();
|
||||
}
|
||||
|
||||
public final int a(Object obj, Object obj2) {
|
||||
int sizeOf = sizeOf(obj, obj2);
|
||||
if (sizeOf >= 0) {
|
||||
return sizeOf;
|
||||
}
|
||||
throw new IllegalStateException(("Negative size: " + obj + '=' + obj2).toString());
|
||||
}
|
||||
|
||||
public Object create(Object key) {
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
return null;
|
||||
}
|
||||
|
||||
public final int createCount() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.createCount;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public void entryRemoved(boolean z3, Object key, Object oldValue, Object obj) {
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(oldValue, "oldValue");
|
||||
}
|
||||
|
||||
public final void evictAll() {
|
||||
trimToSize(-1);
|
||||
}
|
||||
|
||||
public final int evictionCount() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.evictionCount;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public final Object get(Object key) {
|
||||
Object value;
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
synchronized (this.lock) {
|
||||
t.c cVar = this.map;
|
||||
cVar.getClass();
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Object obj = cVar.f8508a.get(key);
|
||||
if (obj != null) {
|
||||
this.hitCount++;
|
||||
return obj;
|
||||
}
|
||||
this.missCount++;
|
||||
Object value2 = create(key);
|
||||
if (value2 == null) {
|
||||
return null;
|
||||
}
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
this.createCount++;
|
||||
t.c cVar2 = this.map;
|
||||
cVar2.getClass();
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(value2, "value");
|
||||
value = cVar2.f8508a.put(key, value2);
|
||||
if (value != null) {
|
||||
t.c cVar3 = this.map;
|
||||
cVar3.getClass();
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(value, "value");
|
||||
cVar3.f8508a.put(key, value);
|
||||
} else {
|
||||
this.size += a(key, value2);
|
||||
Unit unit = Unit.INSTANCE;
|
||||
}
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
if (value != null) {
|
||||
entryRemoved(false, key, value2, value);
|
||||
return value;
|
||||
}
|
||||
trimToSize(this.maxSize);
|
||||
return value2;
|
||||
}
|
||||
}
|
||||
|
||||
public final int hitCount() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.hitCount;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public final int maxSize() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.maxSize;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public final int missCount() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.missCount;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public final Object put(Object key, Object value) {
|
||||
Object put;
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(value, "value");
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
this.putCount++;
|
||||
this.size += a(key, value);
|
||||
t.c cVar = this.map;
|
||||
cVar.getClass();
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(value, "value");
|
||||
put = cVar.f8508a.put(key, value);
|
||||
if (put != null) {
|
||||
this.size -= a(key, put);
|
||||
}
|
||||
Unit unit = Unit.INSTANCE;
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
if (put != null) {
|
||||
entryRemoved(false, key, put, value);
|
||||
}
|
||||
trimToSize(this.maxSize);
|
||||
return put;
|
||||
}
|
||||
|
||||
public final int putCount() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.putCount;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public final Object remove(Object key) {
|
||||
Object remove;
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
t.c cVar = this.map;
|
||||
cVar.getClass();
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
remove = cVar.f8508a.remove(key);
|
||||
if (remove != null) {
|
||||
this.size -= a(key, remove);
|
||||
}
|
||||
Unit unit = Unit.INSTANCE;
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
if (remove != null) {
|
||||
entryRemoved(false, key, remove, null);
|
||||
}
|
||||
return remove;
|
||||
}
|
||||
|
||||
public void resize(int i) {
|
||||
if (i <= 0) {
|
||||
throw new IllegalArgumentException("maxSize <= 0");
|
||||
}
|
||||
synchronized (this.lock) {
|
||||
this.maxSize = i;
|
||||
Unit unit = Unit.INSTANCE;
|
||||
}
|
||||
trimToSize(i);
|
||||
}
|
||||
|
||||
public final int size() {
|
||||
int i;
|
||||
synchronized (this.lock) {
|
||||
i = this.size;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
public int sizeOf(Object key, Object value) {
|
||||
Intrinsics.checkNotNullParameter(key, "key");
|
||||
Intrinsics.checkNotNullParameter(value, "value");
|
||||
return 1;
|
||||
}
|
||||
|
||||
public final Map<Object, Object> snapshot() {
|
||||
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
Set<Map.Entry> entrySet = this.map.f8508a.entrySet();
|
||||
Intrinsics.checkNotNullExpressionValue(entrySet, "map.entries");
|
||||
for (Map.Entry entry : entrySet) {
|
||||
linkedHashMap.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
Unit unit = Unit.INSTANCE;
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
return linkedHashMap;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String str;
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
int i = this.hitCount;
|
||||
int i4 = this.missCount + i;
|
||||
str = "LruCache[maxSize=" + this.maxSize + ",hits=" + this.hitCount + ",misses=" + this.missCount + ",hitRate=" + (i4 != 0 ? (i * 100) / i4 : 0) + "%]";
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:13:0x0073, code lost:
|
||||
|
||||
throw new java.lang.IllegalStateException("LruCache.sizeOf() is reporting inconsistent results!");
|
||||
*/
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public void trimToSize(int r6) {
|
||||
/*
|
||||
r5 = this;
|
||||
L0:
|
||||
t.b r0 = r5.lock
|
||||
monitor-enter(r0)
|
||||
int r1 = r5.size // Catch: java.lang.Throwable -> L16
|
||||
if (r1 < 0) goto L6c
|
||||
t.c r1 = r5.map // Catch: java.lang.Throwable -> L16
|
||||
java.util.LinkedHashMap r1 = r1.f8508a // Catch: java.lang.Throwable -> L16
|
||||
boolean r1 = r1.isEmpty() // Catch: java.lang.Throwable -> L16
|
||||
if (r1 == 0) goto L18
|
||||
int r1 = r5.size // Catch: java.lang.Throwable -> L16
|
||||
if (r1 != 0) goto L6c
|
||||
goto L18
|
||||
L16:
|
||||
r5 = move-exception
|
||||
goto L74
|
||||
L18:
|
||||
int r1 = r5.size // Catch: java.lang.Throwable -> L16
|
||||
if (r1 <= r6) goto L6a
|
||||
t.c r1 = r5.map // Catch: java.lang.Throwable -> L16
|
||||
java.util.LinkedHashMap r1 = r1.f8508a // Catch: java.lang.Throwable -> L16
|
||||
boolean r1 = r1.isEmpty() // Catch: java.lang.Throwable -> L16
|
||||
if (r1 == 0) goto L27
|
||||
goto L6a
|
||||
L27:
|
||||
t.c r1 = r5.map // Catch: java.lang.Throwable -> L16
|
||||
java.util.LinkedHashMap r1 = r1.f8508a // Catch: java.lang.Throwable -> L16
|
||||
java.util.Set r1 = r1.entrySet() // Catch: java.lang.Throwable -> L16
|
||||
java.lang.String r2 = "map.entries"
|
||||
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r1, r2) // Catch: java.lang.Throwable -> L16
|
||||
java.lang.Object r1 = kotlin.collections.CollectionsKt.firstOrNull(r1) // Catch: java.lang.Throwable -> L16
|
||||
java.util.Map$Entry r1 = (java.util.Map.Entry) r1 // Catch: java.lang.Throwable -> L16
|
||||
if (r1 != 0) goto L3e
|
||||
monitor-exit(r0)
|
||||
return
|
||||
L3e:
|
||||
java.lang.Object r2 = r1.getKey() // Catch: java.lang.Throwable -> L16
|
||||
java.lang.Object r1 = r1.getValue() // Catch: java.lang.Throwable -> L16
|
||||
t.c r3 = r5.map // Catch: java.lang.Throwable -> L16
|
||||
r3.getClass() // Catch: java.lang.Throwable -> L16
|
||||
java.lang.String r4 = "key"
|
||||
kotlin.jvm.internal.Intrinsics.checkNotNullParameter(r2, r4) // Catch: java.lang.Throwable -> L16
|
||||
java.util.LinkedHashMap r3 = r3.f8508a // Catch: java.lang.Throwable -> L16
|
||||
r3.remove(r2) // Catch: java.lang.Throwable -> L16
|
||||
int r3 = r5.size // Catch: java.lang.Throwable -> L16
|
||||
int r4 = r5.a(r2, r1) // Catch: java.lang.Throwable -> L16
|
||||
int r3 = r3 - r4
|
||||
r5.size = r3 // Catch: java.lang.Throwable -> L16
|
||||
int r3 = r5.evictionCount // Catch: java.lang.Throwable -> L16
|
||||
r4 = 1
|
||||
int r3 = r3 + r4
|
||||
r5.evictionCount = r3 // Catch: java.lang.Throwable -> L16
|
||||
monitor-exit(r0)
|
||||
r0 = 0
|
||||
r5.entryRemoved(r4, r2, r1, r0)
|
||||
goto L0
|
||||
L6a:
|
||||
monitor-exit(r0)
|
||||
return
|
||||
L6c:
|
||||
java.lang.String r5 = "LruCache.sizeOf() is reporting inconsistent results!"
|
||||
java.lang.IllegalStateException r6 = new java.lang.IllegalStateException // Catch: java.lang.Throwable -> L16
|
||||
r6.<init>(r5) // Catch: java.lang.Throwable -> L16
|
||||
throw r6 // Catch: java.lang.Throwable -> L16
|
||||
L74:
|
||||
monitor-exit(r0)
|
||||
throw r5
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: s.i.trimToSize(int):void");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user