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,194 @@
|
||||
package com.google.firebase.sessions;
|
||||
|
||||
import android.util.Log;
|
||||
import com.google.firebase.FirebaseApp;
|
||||
import com.google.firebase.installations.FirebaseInstallationsApi;
|
||||
import com.google.firebase.sessions.settings.SessionsSettings;
|
||||
import kotlin.Metadata;
|
||||
import kotlin.coroutines.CoroutineContext;
|
||||
import kotlin.jvm.internal.Intrinsics;
|
||||
import kotlinx.coroutines.BuildersKt__Builders_commonKt;
|
||||
import kotlinx.coroutines.CoroutineScopeKt;
|
||||
|
||||
@Metadata(d1 = {"\u0000L\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0003\b\u0000\u0018\u0000 \u001b2\u00020\u0001:\u0001\u001bB-\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u0012\u0006\u0010\b\u001a\u00020\t\u0012\u0006\u0010\n\u001a\u00020\u000b¢\u0006\u0002\u0010\fJ\u0010\u0010\r\u001a\u00020\u000e2\u0006\u0010\u000f\u001a\u00020\u0010H\u0002J\u0019\u0010\u0011\u001a\n \u0013*\u0004\u0018\u00010\u00120\u0012H\u0082@ø\u0001\u0000¢\u0006\u0002\u0010\u0014J\u0010\u0010\u0015\u001a\u00020\u000e2\u0006\u0010\u0016\u001a\u00020\u0017H\u0016J\b\u0010\u0018\u001a\u00020\u0019H\u0002J\u0011\u0010\u001a\u001a\u00020\u0019H\u0082@ø\u0001\u0000¢\u0006\u0002\u0010\u0014R\u000e\u0010\n\u001a\u00020\u000bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\tX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0007X\u0082\u0004¢\u0006\u0002\n\u0000\u0082\u0002\u0004\n\u0002\b\u0019¨\u0006\u001c"}, d2 = {"Lcom/google/firebase/sessions/SessionFirelogPublisherImpl;", "Lcom/google/firebase/sessions/SessionFirelogPublisher;", "firebaseApp", "Lcom/google/firebase/FirebaseApp;", "firebaseInstallations", "Lcom/google/firebase/installations/FirebaseInstallationsApi;", "sessionSettings", "Lcom/google/firebase/sessions/settings/SessionsSettings;", "eventGDTLogger", "Lcom/google/firebase/sessions/EventGDTLoggerInterface;", "backgroundDispatcher", "Lkotlin/coroutines/CoroutineContext;", "(Lcom/google/firebase/FirebaseApp;Lcom/google/firebase/installations/FirebaseInstallationsApi;Lcom/google/firebase/sessions/settings/SessionsSettings;Lcom/google/firebase/sessions/EventGDTLoggerInterface;Lkotlin/coroutines/CoroutineContext;)V", "attemptLoggingSessionEvent", "", "sessionEvent", "Lcom/google/firebase/sessions/SessionEvent;", "getFirebaseInstallationId", "", "kotlin.jvm.PlatformType", "(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "logSession", "sessionDetails", "Lcom/google/firebase/sessions/SessionDetails;", "shouldCollectEvents", "", "shouldLogSession", "Companion", "com.google.firebase-firebase-sessions"}, k = 1, mv = {1, 7, 1}, xi = 48)
|
||||
/* loaded from: classes3.dex */
|
||||
public final class SessionFirelogPublisherImpl implements SessionFirelogPublisher {
|
||||
private static final String TAG = "SessionFirelogPublisher";
|
||||
private final CoroutineContext backgroundDispatcher;
|
||||
private final EventGDTLoggerInterface eventGDTLogger;
|
||||
private final FirebaseApp firebaseApp;
|
||||
private final FirebaseInstallationsApi firebaseInstallations;
|
||||
private final SessionsSettings sessionSettings;
|
||||
private static final double randomValueForSampling = Math.random();
|
||||
|
||||
public SessionFirelogPublisherImpl(FirebaseApp firebaseApp, FirebaseInstallationsApi firebaseInstallations, SessionsSettings sessionSettings, EventGDTLoggerInterface eventGDTLogger, CoroutineContext backgroundDispatcher) {
|
||||
Intrinsics.checkNotNullParameter(firebaseApp, "firebaseApp");
|
||||
Intrinsics.checkNotNullParameter(firebaseInstallations, "firebaseInstallations");
|
||||
Intrinsics.checkNotNullParameter(sessionSettings, "sessionSettings");
|
||||
Intrinsics.checkNotNullParameter(eventGDTLogger, "eventGDTLogger");
|
||||
Intrinsics.checkNotNullParameter(backgroundDispatcher, "backgroundDispatcher");
|
||||
this.firebaseApp = firebaseApp;
|
||||
this.firebaseInstallations = firebaseInstallations;
|
||||
this.sessionSettings = sessionSettings;
|
||||
this.eventGDTLogger = eventGDTLogger;
|
||||
this.backgroundDispatcher = backgroundDispatcher;
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
public final void attemptLoggingSessionEvent(SessionEvent sessionEvent) {
|
||||
try {
|
||||
this.eventGDTLogger.log(sessionEvent);
|
||||
Log.d(TAG, "Successfully logged Session Start event: " + sessionEvent.getSessionData().getSessionId());
|
||||
} catch (RuntimeException e4) {
|
||||
Log.e(TAG, "Error logging Session Start event to DataTransport: ", e4);
|
||||
}
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* JADX WARN: Removed duplicated region for block: B:17:0x0031 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:9:0x0023 */
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public final java.lang.Object getFirebaseInstallationId(kotlin.coroutines.Continuation<? super java.lang.String> r5) {
|
||||
/*
|
||||
r4 = this;
|
||||
boolean r0 = r5 instanceof com.google.firebase.sessions.SessionFirelogPublisherImpl$getFirebaseInstallationId$1
|
||||
if (r0 == 0) goto L13
|
||||
r0 = r5
|
||||
com.google.firebase.sessions.SessionFirelogPublisherImpl$getFirebaseInstallationId$1 r0 = (com.google.firebase.sessions.SessionFirelogPublisherImpl$getFirebaseInstallationId$1) r0
|
||||
int r1 = r0.label
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r3 = r1 & r2
|
||||
if (r3 == 0) goto L13
|
||||
int r1 = r1 - r2
|
||||
r0.label = r1
|
||||
goto L18
|
||||
L13:
|
||||
com.google.firebase.sessions.SessionFirelogPublisherImpl$getFirebaseInstallationId$1 r0 = new com.google.firebase.sessions.SessionFirelogPublisherImpl$getFirebaseInstallationId$1
|
||||
r0.<init>(r4, r5)
|
||||
L18:
|
||||
java.lang.Object r5 = r0.result
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.label
|
||||
r3 = 1
|
||||
if (r2 == 0) goto L31
|
||||
if (r2 != r3) goto L29
|
||||
kotlin.ResultKt.throwOnFailure(r5) // Catch: java.lang.Exception -> L4b
|
||||
goto L48
|
||||
L29:
|
||||
java.lang.IllegalStateException r4 = new java.lang.IllegalStateException
|
||||
java.lang.String r5 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r4.<init>(r5)
|
||||
throw r4
|
||||
L31:
|
||||
kotlin.ResultKt.throwOnFailure(r5)
|
||||
com.google.firebase.installations.FirebaseInstallationsApi r4 = r4.firebaseInstallations // Catch: java.lang.Exception -> L4b
|
||||
com.google.android.gms.tasks.Task r4 = r4.getId() // Catch: java.lang.Exception -> L4b
|
||||
java.lang.String r5 = "firebaseInstallations.id"
|
||||
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r4, r5) // Catch: java.lang.Exception -> L4b
|
||||
r0.label = r3 // Catch: java.lang.Exception -> L4b
|
||||
java.lang.Object r5 = kotlinx.coroutines.tasks.TasksKt.await(r4, r0) // Catch: java.lang.Exception -> L4b
|
||||
if (r5 != r1) goto L48
|
||||
return r1
|
||||
L48:
|
||||
java.lang.String r5 = (java.lang.String) r5 // Catch: java.lang.Exception -> L4b
|
||||
return r5
|
||||
L4b:
|
||||
r4 = move-exception
|
||||
java.lang.String r5 = "SessionFirelogPublisher"
|
||||
java.lang.String r0 = "Error getting Firebase Installation ID. Using an empty ID"
|
||||
android.util.Log.e(r5, r0, r4)
|
||||
java.lang.String r4 = ""
|
||||
return r4
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.sessions.SessionFirelogPublisherImpl.getFirebaseInstallationId(kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
|
||||
private final boolean shouldCollectEvents() {
|
||||
return randomValueForSampling <= this.sessionSettings.getSamplingRate();
|
||||
}
|
||||
|
||||
/* JADX INFO: Access modifiers changed from: private */
|
||||
/* JADX WARN: Removed duplicated region for block: B:12:0x0055 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:15:0x005f */
|
||||
/* JADX WARN: Removed duplicated region for block: B:23:0x0037 */
|
||||
/* JADX WARN: Removed duplicated region for block: B:8:0x0025 */
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct add '--show-bad-code' argument
|
||||
*/
|
||||
public final java.lang.Object shouldLogSession(kotlin.coroutines.Continuation<? super java.lang.Boolean> r6) {
|
||||
/*
|
||||
r5 = this;
|
||||
boolean r0 = r6 instanceof com.google.firebase.sessions.SessionFirelogPublisherImpl$shouldLogSession$1
|
||||
if (r0 == 0) goto L13
|
||||
r0 = r6
|
||||
com.google.firebase.sessions.SessionFirelogPublisherImpl$shouldLogSession$1 r0 = (com.google.firebase.sessions.SessionFirelogPublisherImpl$shouldLogSession$1) r0
|
||||
int r1 = r0.label
|
||||
r2 = -2147483648(0xffffffff80000000, float:-0.0)
|
||||
r3 = r1 & r2
|
||||
if (r3 == 0) goto L13
|
||||
int r1 = r1 - r2
|
||||
r0.label = r1
|
||||
goto L18
|
||||
L13:
|
||||
com.google.firebase.sessions.SessionFirelogPublisherImpl$shouldLogSession$1 r0 = new com.google.firebase.sessions.SessionFirelogPublisherImpl$shouldLogSession$1
|
||||
r0.<init>(r5, r6)
|
||||
L18:
|
||||
java.lang.Object r6 = r0.result
|
||||
java.lang.Object r1 = kotlin.coroutines.intrinsics.IntrinsicsKt.getCOROUTINE_SUSPENDED()
|
||||
int r2 = r0.label
|
||||
java.lang.String r3 = "SessionFirelogPublisher"
|
||||
r4 = 1
|
||||
if (r2 == 0) goto L37
|
||||
if (r2 != r4) goto L2f
|
||||
java.lang.Object r5 = r0.L$0
|
||||
com.google.firebase.sessions.SessionFirelogPublisherImpl r5 = (com.google.firebase.sessions.SessionFirelogPublisherImpl) r5
|
||||
kotlin.ResultKt.throwOnFailure(r6)
|
||||
goto L4c
|
||||
L2f:
|
||||
java.lang.IllegalStateException r5 = new java.lang.IllegalStateException
|
||||
java.lang.String r6 = "call to 'resume' before 'invoke' with coroutine"
|
||||
r5.<init>(r6)
|
||||
throw r5
|
||||
L37:
|
||||
kotlin.ResultKt.throwOnFailure(r6)
|
||||
java.lang.String r6 = "Data Collection is enabled for at least one Subscriber"
|
||||
android.util.Log.d(r3, r6)
|
||||
com.google.firebase.sessions.settings.SessionsSettings r6 = r5.sessionSettings
|
||||
r0.L$0 = r5
|
||||
r0.label = r4
|
||||
java.lang.Object r6 = r6.updateSettings(r0)
|
||||
if (r6 != r1) goto L4c
|
||||
return r1
|
||||
L4c:
|
||||
com.google.firebase.sessions.settings.SessionsSettings r6 = r5.sessionSettings
|
||||
boolean r6 = r6.getSessionsEnabled()
|
||||
r0 = 0
|
||||
if (r6 != 0) goto L5f
|
||||
java.lang.String r5 = "Sessions SDK disabled. Events will not be sent."
|
||||
android.util.Log.d(r3, r5)
|
||||
java.lang.Boolean r5 = kotlin.coroutines.jvm.internal.Boxing.boxBoolean(r0)
|
||||
return r5
|
||||
L5f:
|
||||
boolean r5 = r5.shouldCollectEvents()
|
||||
if (r5 != 0) goto L6f
|
||||
java.lang.String r5 = "Sessions SDK has dropped this session due to sampling."
|
||||
android.util.Log.d(r3, r5)
|
||||
java.lang.Boolean r5 = kotlin.coroutines.jvm.internal.Boxing.boxBoolean(r0)
|
||||
return r5
|
||||
L6f:
|
||||
java.lang.Boolean r5 = kotlin.coroutines.jvm.internal.Boxing.boxBoolean(r4)
|
||||
return r5
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.sessions.SessionFirelogPublisherImpl.shouldLogSession(kotlin.coroutines.Continuation):java.lang.Object");
|
||||
}
|
||||
|
||||
@Override // com.google.firebase.sessions.SessionFirelogPublisher
|
||||
public void logSession(SessionDetails sessionDetails) {
|
||||
Intrinsics.checkNotNullParameter(sessionDetails, "sessionDetails");
|
||||
BuildersKt__Builders_commonKt.launch$default(CoroutineScopeKt.CoroutineScope(this.backgroundDispatcher), null, null, new SessionFirelogPublisherImpl$logSession$1(this, sessionDetails, null), 3, null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user