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:
@@ -0,0 +1,47 @@
|
||||
package com.google.firebase.components;
|
||||
|
||||
import com.google.firebase.inject.Provider;
|
||||
|
||||
/* loaded from: classes3.dex */
|
||||
public class Lazy<T> implements Provider<T> {
|
||||
private static final Object UNINITIALIZED = new Object();
|
||||
private volatile Object instance;
|
||||
private volatile Provider<T> provider;
|
||||
|
||||
public Lazy(T t2) {
|
||||
this.instance = UNINITIALIZED;
|
||||
this.instance = t2;
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.inject.Provider
|
||||
public T get() {
|
||||
T t2;
|
||||
T t4 = (T) this.instance;
|
||||
Object obj = UNINITIALIZED;
|
||||
if (t4 != obj) {
|
||||
return t4;
|
||||
}
|
||||
synchronized (this) {
|
||||
try {
|
||||
t2 = (T) this.instance;
|
||||
if (t2 == obj) {
|
||||
t2 = this.provider.get();
|
||||
this.instance = t2;
|
||||
this.provider = null;
|
||||
}
|
||||
} catch (Throwable th) {
|
||||
throw th;
|
||||
}
|
||||
}
|
||||
return t2;
|
||||
}
|
||||
|
||||
public boolean isInitialized() {
|
||||
return this.instance != UNINITIALIZED;
|
||||
}
|
||||
|
||||
public Lazy(Provider<T> provider) {
|
||||
this.instance = UNINITIALIZED;
|
||||
this.provider = provider;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user