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,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\b¨\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() + '.');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user