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,203 @@
package com.google.firebase.sessions;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import com.google.firebase.Firebase;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseKt;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.sessions.settings.SessionsSettings;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.coroutines.Continuation;
import kotlin.coroutines.CoroutineContext;
import kotlin.coroutines.jvm.internal.DebugMetadata;
import kotlin.coroutines.jvm.internal.SuspendLambda;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.BuildersKt__Builders_commonKt;
import kotlinx.coroutines.CoroutineScope;
import kotlinx.coroutines.CoroutineScopeKt;
@Metadata(d1 = {"\u0000\u001e\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0000\u0018\u0000 \t2\u00020\u0001:\u0001\tB\u001d\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007¢\u0006\u0002\u0010\bR\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\n"}, d2 = {"Lcom/google/firebase/sessions/FirebaseSessions;", "", "firebaseApp", "Lcom/google/firebase/FirebaseApp;", "settings", "Lcom/google/firebase/sessions/settings/SessionsSettings;", "backgroundDispatcher", "Lkotlin/coroutines/CoroutineContext;", "(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/sessions/settings/SessionsSettings;Lkotlin/coroutines/CoroutineContext;)V", "Companion", "com.google.firebase-firebase-sessions"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public final class FirebaseSessions {
/* renamed from: Companion, reason: from kotlin metadata */
public static final Companion INSTANCE = new Companion(null);
private static final String TAG = "FirebaseSessions";
private final FirebaseApp firebaseApp;
private final SessionsSettings settings;
@Metadata(d1 = {"\u0000\n\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\u008a@"}, d2 = {"<anonymous>", "", "Lkotlinx/coroutines/CoroutineScope;"}, k = 3, mv = {1, 7, 1}, xi = 48)
@DebugMetadata(c = "com.google.firebase.sessions.FirebaseSessions$1", f = "FirebaseSessions.kt", i = {}, l = {44, 48}, m = "invokeSuspend", n = {}, s = {})
/* renamed from: com.google.firebase.sessions.FirebaseSessions$1, reason: invalid class name */
/* loaded from: classes3.dex */
public static final class AnonymousClass1 extends SuspendLambda implements Function2<CoroutineScope, Continuation<? super Unit>, Object> {
final /* synthetic */ CoroutineContext $backgroundDispatcher;
int label;
/* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */
public AnonymousClass1(CoroutineContext coroutineContext, Continuation<? super AnonymousClass1> continuation) {
super(2, continuation);
this.$backgroundDispatcher = coroutineContext;
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: invokeSuspend$lambda-1, reason: not valid java name */
public static final void m96invokeSuspend$lambda1(String str, FirebaseOptions firebaseOptions) {
Log.w(FirebaseSessions.TAG, "FirebaseApp instance deleted. Sessions library will stop collecting data.");
SessionsActivityLifecycleCallbacks.INSTANCE.setLifecycleClient(null);
}
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
public final Continuation<Unit> create(Object obj, Continuation<?> continuation) {
return new AnonymousClass1(this.$backgroundDispatcher, continuation);
}
/* JADX WARN: Code restructure failed: missing block: B:28:0x0066, code lost:
if (r6.updateSettings(r5) == r0) goto L25;
*/
/* JADX WARN: Code restructure failed: missing block: B:29:0x0068, code lost:
return r0;
*/
/* JADX WARN: Code restructure failed: missing block: B:33:0x002b, code lost:
if (r6 == r0) goto L25;
*/
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Type inference failed for: r6v15, types: [com.google.firebase.FirebaseAppLifecycleListener, java.lang.Object] */
@Override // kotlin.coroutines.jvm.internal.BaseContinuationImpl
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public final java.lang.Object invokeSuspend(java.lang.Object r6) {
/*
r5 = this;
java.lang.Object r0 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
int r1 = r5.label
java.lang.String r2 = "FirebaseSessions"
r3 = 2
r4 = 1
if (r1 == 0) goto L20
if (r1 == r4) goto L1c
if (r1 != r3) goto L14
kotlin.ResultKt.throwOnFailure(r6)
goto L69
L14:
java.lang.IllegalStateException r5 = new java.lang.IllegalStateException
java.lang.String r6 = "call to 'resume' before 'invoke' with coroutine"
r5.<init>(r6)
throw r5
L1c:
kotlin.ResultKt.throwOnFailure(r6)
goto L2e
L20:
kotlin.ResultKt.throwOnFailure(r6)
com.google.firebase.sessions.api.FirebaseSessionsDependencies r6 = com.google.firebase.sessions.api.FirebaseSessionsDependencies.INSTANCE
r5.label = r4
java.lang.Object r6 = r6.getRegisteredSubscribers$com_google_firebase_firebase_sessions(r5)
if (r6 != r0) goto L2e
goto L68
L2e:
java.util.Map r6 = (java.util.Map) r6
java.util.Collection r6 = r6.values()
java.lang.Iterable r6 = (java.lang.Iterable) r6
boolean r1 = r6 instanceof java.util.Collection
if (r1 == 0) goto L44
r1 = r6
java.util.Collection r1 = (java.util.Collection) r1
boolean r1 = r1.isEmpty()
if (r1 == 0) goto L44
goto L99
L44:
java.util.Iterator r6 = r6.iterator()
L48:
boolean r1 = r6.hasNext()
if (r1 == 0) goto L99
java.lang.Object r1 = r6.next()
com.google.firebase.sessions.api.SessionSubscriber r1 = (com.google.firebase.sessions.api.SessionSubscriber) r1
boolean r1 = r1.isDataCollectionEnabled()
if (r1 == 0) goto L48
com.google.firebase.sessions.FirebaseSessions r6 = com.google.firebase.sessions.FirebaseSessions.this
com.google.firebase.sessions.settings.SessionsSettings r6 = com.google.firebase.sessions.FirebaseSessions.access$getSettings$p(r6)
r5.label = r3
java.lang.Object r6 = r6.updateSettings(r5)
if (r6 != r0) goto L69
L68:
return r0
L69:
com.google.firebase.sessions.FirebaseSessions r6 = com.google.firebase.sessions.FirebaseSessions.this
com.google.firebase.sessions.settings.SessionsSettings r6 = com.google.firebase.sessions.FirebaseSessions.access$getSettings$p(r6)
boolean r6 = r6.getSessionsEnabled()
if (r6 != 0) goto L7b
java.lang.String r5 = "Sessions SDK disabled. Not listening to lifecycle events."
android.util.Log.d(r2, r5)
goto L9e
L7b:
com.google.firebase.sessions.SessionLifecycleClient r6 = new com.google.firebase.sessions.SessionLifecycleClient
kotlin.coroutines.CoroutineContext r0 = r5.$backgroundDispatcher
r6.<init>(r0)
r6.bindToService()
com.google.firebase.sessions.SessionsActivityLifecycleCallbacks r0 = com.google.firebase.sessions.SessionsActivityLifecycleCallbacks.INSTANCE
r0.setLifecycleClient(r6)
com.google.firebase.sessions.FirebaseSessions r5 = com.google.firebase.sessions.FirebaseSessions.this
com.google.firebase.FirebaseApp r5 = com.google.firebase.sessions.FirebaseSessions.access$getFirebaseApp$p(r5)
com.google.firebase.sessions.a r6 = new com.google.firebase.sessions.a
r6.<init>()
r5.addLifecycleEventListener(r6)
goto L9e
L99:
java.lang.String r5 = "No Sessions subscribers. Not listening to lifecycle events."
android.util.Log.d(r2, r5)
L9e:
kotlin.Unit r5 = kotlin.Unit.INSTANCE
return r5
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.sessions.FirebaseSessions.AnonymousClass1.invokeSuspend(java.lang.Object):java.lang.Object");
}
@Override // kotlin.jvm.functions.Function2
public final Object invoke(CoroutineScope coroutineScope, Continuation<? super Unit> continuation) {
return ((AnonymousClass1) create(coroutineScope, continuation)).invokeSuspend(Unit.INSTANCE);
}
}
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u0011\u0010\u0005\u001a\u00020\u00068F¢\u0006\u0006\u001a\u0004\b\u0007\u0010\\u0006\t"}, d2 = {"Lcom/google/firebase/sessions/FirebaseSessions$Companion;", "", "()V", "TAG", "", "instance", "Lcom/google/firebase/sessions/FirebaseSessions;", "getInstance", "()Lcom/google/firebase/sessions/FirebaseSessions;", "com.google.firebase-firebase-sessions"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* loaded from: classes3.dex */
public static final class Companion {
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final FirebaseSessions getInstance() {
Object obj = FirebaseKt.getApp(Firebase.INSTANCE).get(FirebaseSessions.class);
Intrinsics.checkNotNullExpressionValue(obj, "Firebase.app[FirebaseSessions::class.java]");
return (FirebaseSessions) obj;
}
private Companion() {
}
}
public FirebaseSessions(FirebaseApp firebaseApp, SessionsSettings settings, CoroutineContext backgroundDispatcher) {
Intrinsics.checkNotNullParameter(firebaseApp, "firebaseApp");
Intrinsics.checkNotNullParameter(settings, "settings");
Intrinsics.checkNotNullParameter(backgroundDispatcher, "backgroundDispatcher");
this.firebaseApp = firebaseApp;
this.settings = settings;
Log.d(TAG, "Initializing Firebase Sessions SDK.");
Context applicationContext = firebaseApp.getApplicationContext().getApplicationContext();
if (applicationContext instanceof Application) {
((Application) applicationContext).registerActivityLifecycleCallbacks(SessionsActivityLifecycleCallbacks.INSTANCE);
BuildersKt__Builders_commonKt.launch$default(CoroutineScopeKt.CoroutineScope(backgroundDispatcher), null, null, new AnonymousClass1(backgroundDispatcher, null), 3, null);
} else {
Log.e(TAG, "Failed to register lifecycle callbacks, unexpected context " + applicationContext.getClass() + '.');
}
}
}