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,340 @@
package com.google.firebase.components;
import android.util.Log;
import com.google.firebase.dynamicloading.ComponentLoader;
import com.google.firebase.events.Publisher;
import com.google.firebase.events.Subscriber;
import com.google.firebase.inject.Deferred;
import com.google.firebase.inject.Provider;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes3.dex */
public class ComponentRuntime implements ComponentContainer, ComponentLoader {
private static final Provider<Set<Object>> EMPTY_PROVIDER = new g(1);
private final ComponentRegistrarProcessor componentRegistrarProcessor;
private final Map<Component<?>, Provider<?>> components;
private final AtomicReference<Boolean> eagerComponentsInitializedWith;
private final EventBus eventBus;
private final Map<Qualified<?>, Provider<?>> lazyInstanceMap;
private final Map<Qualified<?>, LazySet<?>> lazySetMap;
private Set<String> processedCoroutineDispatcherInterfaces;
private final List<Provider<ComponentRegistrar>> unprocessedRegistrarProviders;
/* loaded from: classes3.dex */
public static final class Builder {
private final Executor defaultExecutor;
private final List<Provider<ComponentRegistrar>> lazyRegistrars = new ArrayList();
private final List<Component<?>> additionalComponents = new ArrayList();
private ComponentRegistrarProcessor componentRegistrarProcessor = ComponentRegistrarProcessor.NOOP;
public Builder(Executor executor) {
this.defaultExecutor = executor;
}
public static /* synthetic */ ComponentRegistrar lambda$addComponentRegistrar$0(ComponentRegistrar componentRegistrar) {
return componentRegistrar;
}
public Builder addComponent(Component<?> component) {
this.additionalComponents.add(component);
return this;
}
public Builder addComponentRegistrar(ComponentRegistrar componentRegistrar) {
this.lazyRegistrars.add(new c(componentRegistrar, 1));
return this;
}
public Builder addLazyComponentRegistrars(Collection<Provider<ComponentRegistrar>> collection) {
this.lazyRegistrars.addAll(collection);
return this;
}
public ComponentRuntime build() {
return new ComponentRuntime(this.defaultExecutor, this.lazyRegistrars, this.additionalComponents, this.componentRegistrarProcessor);
}
public Builder setProcessor(ComponentRegistrarProcessor componentRegistrarProcessor) {
this.componentRegistrarProcessor = componentRegistrarProcessor;
return this;
}
}
public /* synthetic */ ComponentRuntime(Executor executor, Iterable iterable, Collection collection, ComponentRegistrarProcessor componentRegistrarProcessor, AnonymousClass1 anonymousClass1) {
this(executor, iterable, collection, componentRegistrarProcessor);
}
public static Builder builder(Executor executor) {
return new Builder(executor);
}
private void discoverComponents(List<Component<?>> list) {
ArrayList arrayList = new ArrayList();
synchronized (this) {
Iterator<Provider<ComponentRegistrar>> it = this.unprocessedRegistrarProviders.iterator();
while (it.hasNext()) {
try {
ComponentRegistrar componentRegistrar = it.next().get();
if (componentRegistrar != null) {
list.addAll(this.componentRegistrarProcessor.processRegistrar(componentRegistrar));
it.remove();
}
} catch (InvalidRegistrarException e4) {
it.remove();
Log.w("ComponentDiscovery", "Invalid component registrar.", e4);
}
}
Iterator<Component<?>> it2 = list.iterator();
while (it2.hasNext()) {
Object[] array = it2.next().getProvidedInterfaces().toArray();
int length = array.length;
int i = 0;
while (true) {
if (i < length) {
Object obj = array[i];
if (obj.toString().contains("kotlinx.coroutines.CoroutineDispatcher")) {
if (this.processedCoroutineDispatcherInterfaces.contains(obj.toString())) {
it2.remove();
break;
}
this.processedCoroutineDispatcherInterfaces.add(obj.toString());
}
i++;
}
}
}
if (this.components.isEmpty()) {
CycleDetector.detect(list);
} else {
ArrayList arrayList2 = new ArrayList(this.components.keySet());
arrayList2.addAll(list);
CycleDetector.detect(arrayList2);
}
for (final Component<?> component : list) {
this.components.put(component, new Lazy(new Provider() { // from class: com.google.firebase.components.d
@Override // com.google.firebase.inject.Provider
public final Object get() {
Object lambda$discoverComponents$0;
lambda$discoverComponents$0 = ComponentRuntime.this.lambda$discoverComponents$0(component);
return lambda$discoverComponents$0;
}
}));
}
arrayList.addAll(processInstanceComponents(list));
arrayList.addAll(processSetComponents());
processDependencies();
}
Iterator it3 = arrayList.iterator();
while (it3.hasNext()) {
((Runnable) it3.next()).run();
}
maybeInitializeEagerComponents();
}
private void doInitializeEagerComponents(Map<Component<?>, Provider<?>> map, boolean z3) {
for (Map.Entry<Component<?>, Provider<?>> entry : map.entrySet()) {
Component<?> key = entry.getKey();
Provider<?> value = entry.getValue();
if (key.isAlwaysEager() || (key.isEagerInDefaultApp() && z3)) {
value.get();
}
}
this.eventBus.enablePublishingAndFlushPending();
}
private static <T> List<T> iterableToList(Iterable<T> iterable) {
ArrayList arrayList = new ArrayList();
Iterator<T> it = iterable.iterator();
while (it.hasNext()) {
arrayList.add(it.next());
}
return arrayList;
}
public /* synthetic */ Object lambda$discoverComponents$0(Component component) {
return component.getFactory().create(new RestrictedComponentContainer(component, this));
}
public static /* synthetic */ ComponentRegistrar lambda$toProviders$1(ComponentRegistrar componentRegistrar) {
return componentRegistrar;
}
private void maybeInitializeEagerComponents() {
Boolean bool = this.eagerComponentsInitializedWith.get();
if (bool != null) {
doInitializeEagerComponents(this.components, bool.booleanValue());
}
}
private void processDependencies() {
for (Component<?> component : this.components.keySet()) {
for (Dependency dependency : component.getDependencies()) {
if (dependency.isSet() && !this.lazySetMap.containsKey(dependency.getInterface())) {
this.lazySetMap.put(dependency.getInterface(), LazySet.fromCollection(Collections.EMPTY_SET));
} else if (this.lazyInstanceMap.containsKey(dependency.getInterface())) {
continue;
} else {
if (dependency.isRequired()) {
throw new MissingDependencyException("Unsatisfied dependency for component " + component + ": " + dependency.getInterface());
}
if (!dependency.isSet()) {
this.lazyInstanceMap.put(dependency.getInterface(), OptionalProvider.empty());
}
}
}
}
}
private List<Runnable> processInstanceComponents(List<Component<?>> list) {
ArrayList arrayList = new ArrayList();
for (Component<?> component : list) {
if (component.isValue()) {
Provider<?> provider = this.components.get(component);
for (Qualified<? super Object> qualified : component.getProvidedInterfaces()) {
if (this.lazyInstanceMap.containsKey(qualified)) {
arrayList.add(new e(0, (OptionalProvider) this.lazyInstanceMap.get(qualified), provider));
} else {
this.lazyInstanceMap.put(qualified, provider);
}
}
}
}
return arrayList;
}
private List<Runnable> processSetComponents() {
ArrayList arrayList = new ArrayList();
HashMap hashMap = new HashMap();
for (Map.Entry<Component<?>, Provider<?>> entry : this.components.entrySet()) {
Component<?> key = entry.getKey();
if (!key.isValue()) {
Provider<?> value = entry.getValue();
for (Qualified<? super Object> qualified : key.getProvidedInterfaces()) {
if (!hashMap.containsKey(qualified)) {
hashMap.put(qualified, new HashSet());
}
((Set) hashMap.get(qualified)).add(value);
}
}
}
for (Map.Entry entry2 : hashMap.entrySet()) {
if (this.lazySetMap.containsKey(entry2.getKey())) {
LazySet<?> lazySet = this.lazySetMap.get(entry2.getKey());
Iterator it = ((Set) entry2.getValue()).iterator();
while (it.hasNext()) {
arrayList.add(new e(1, lazySet, (Provider) it.next()));
}
} else {
this.lazySetMap.put((Qualified) entry2.getKey(), LazySet.fromCollection((Collection) entry2.getValue()));
}
}
return arrayList;
}
private static Iterable<Provider<ComponentRegistrar>> toProviders(Iterable<ComponentRegistrar> iterable) {
ArrayList arrayList = new ArrayList();
Iterator<ComponentRegistrar> it = iterable.iterator();
while (it.hasNext()) {
arrayList.add(new c(it.next(), 0));
}
return arrayList;
}
public Collection<Component<?>> getAllComponentsForTest() {
return this.components.keySet();
}
@Override // com.google.firebase.components.ComponentContainer
public <T> Deferred<T> getDeferred(Qualified<T> qualified) {
Provider<T> provider = getProvider(qualified);
return provider == null ? OptionalProvider.empty() : provider instanceof OptionalProvider ? (OptionalProvider) provider : OptionalProvider.of(provider);
}
@Override // com.google.firebase.components.ComponentContainer
public synchronized <T> Provider<T> getProvider(Qualified<T> qualified) {
Preconditions.checkNotNull(qualified, "Null interface requested.");
return (Provider) this.lazyInstanceMap.get(qualified);
}
public void initializeAllComponentsForTests() {
Iterator<Provider<?>> it = this.components.values().iterator();
while (it.hasNext()) {
it.next().get();
}
}
public void initializeEagerComponents(boolean z3) {
HashMap hashMap;
AtomicReference<Boolean> atomicReference = this.eagerComponentsInitializedWith;
Boolean valueOf = Boolean.valueOf(z3);
while (!atomicReference.compareAndSet(null, valueOf)) {
if (atomicReference.get() != null) {
return;
}
}
synchronized (this) {
hashMap = new HashMap(this.components);
}
doInitializeEagerComponents(hashMap, z3);
}
@Override // com.google.firebase.components.ComponentContainer
public synchronized <T> Provider<Set<T>> setOfProvider(Qualified<T> qualified) {
LazySet<?> lazySet = this.lazySetMap.get(qualified);
if (lazySet != null) {
return lazySet;
}
return (Provider<Set<T>>) EMPTY_PROVIDER;
}
@Deprecated
public ComponentRuntime(Executor executor, Iterable<ComponentRegistrar> iterable, Component<?>... componentArr) {
this(executor, toProviders(iterable), Arrays.asList(componentArr), ComponentRegistrarProcessor.NOOP);
}
private ComponentRuntime(Executor executor, Iterable<Provider<ComponentRegistrar>> iterable, Collection<Component<?>> collection, ComponentRegistrarProcessor componentRegistrarProcessor) {
this.components = new HashMap();
this.lazyInstanceMap = new HashMap();
this.lazySetMap = new HashMap();
this.processedCoroutineDispatcherInterfaces = new HashSet();
this.eagerComponentsInitializedWith = new AtomicReference<>();
EventBus eventBus = new EventBus(executor);
this.eventBus = eventBus;
this.componentRegistrarProcessor = componentRegistrarProcessor;
ArrayList arrayList = new ArrayList();
arrayList.add(Component.of(eventBus, (Class<EventBus>) EventBus.class, (Class<? super EventBus>[]) new Class[]{Subscriber.class, Publisher.class}));
arrayList.add(Component.of(this, (Class<ComponentRuntime>) ComponentLoader.class, (Class<? super ComponentRuntime>[]) new Class[0]));
for (Component<?> component : collection) {
if (component != null) {
arrayList.add(component);
}
}
this.unprocessedRegistrarProviders = iterableToList(iterable);
discoverComponents(arrayList);
}
@Override // com.google.firebase.dynamicloading.ComponentLoader
public void discoverComponents() {
synchronized (this) {
try {
if (this.unprocessedRegistrarProviders.isEmpty()) {
return;
}
discoverComponents(new ArrayList());
} catch (Throwable th) {
throw th;
}
}
}
}