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,188 @@
|
||||
package com.google.android.gms.dynamic;
|
||||
|
||||
import android.R;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
import com.google.android.gms.common.annotation.KeepForSdk;
|
||||
import com.google.android.gms.dynamic.LifecycleDelegate;
|
||||
import java.util.LinkedList;
|
||||
|
||||
@KeepForSdk
|
||||
/* loaded from: classes3.dex */
|
||||
public abstract class DeferredLifecycleHelper<T extends LifecycleDelegate> {
|
||||
private LifecycleDelegate zaa;
|
||||
private Bundle zab;
|
||||
private LinkedList zac;
|
||||
private final OnDelegateCreatedListener zad = new zaa(this);
|
||||
|
||||
@KeepForSdk
|
||||
public DeferredLifecycleHelper() {
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public static void showGooglePlayUnavailableMessage(FrameLayout frameLayout) {
|
||||
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
|
||||
Context context = frameLayout.getContext();
|
||||
int isGooglePlayServicesAvailable = googleApiAvailability.isGooglePlayServicesAvailable(context);
|
||||
String zad = com.google.android.gms.common.internal.zac.zad(context, isGooglePlayServicesAvailable);
|
||||
String zac = com.google.android.gms.common.internal.zac.zac(context, isGooglePlayServicesAvailable);
|
||||
LinearLayout linearLayout = new LinearLayout(frameLayout.getContext());
|
||||
linearLayout.setOrientation(1);
|
||||
linearLayout.setLayoutParams(new FrameLayout.LayoutParams(-2, -2));
|
||||
frameLayout.addView(linearLayout);
|
||||
TextView textView = new TextView(frameLayout.getContext());
|
||||
textView.setLayoutParams(new FrameLayout.LayoutParams(-2, -2));
|
||||
textView.setText(zad);
|
||||
linearLayout.addView(textView);
|
||||
Intent errorResolutionIntent = googleApiAvailability.getErrorResolutionIntent(context, isGooglePlayServicesAvailable, null);
|
||||
if (errorResolutionIntent != null) {
|
||||
Button button = new Button(context);
|
||||
button.setId(R.id.button1);
|
||||
button.setLayoutParams(new FrameLayout.LayoutParams(-2, -2));
|
||||
button.setText(zac);
|
||||
linearLayout.addView(button);
|
||||
button.setOnClickListener(new zae(context, errorResolutionIntent));
|
||||
}
|
||||
}
|
||||
|
||||
private final void zae(int i) {
|
||||
while (!this.zac.isEmpty() && ((zah) this.zac.getLast()).zaa() >= i) {
|
||||
this.zac.removeLast();
|
||||
}
|
||||
}
|
||||
|
||||
private final void zaf(Bundle bundle, zah zahVar) {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
zahVar.zab(lifecycleDelegate);
|
||||
return;
|
||||
}
|
||||
if (this.zac == null) {
|
||||
this.zac = new LinkedList();
|
||||
}
|
||||
this.zac.add(zahVar);
|
||||
if (bundle != null) {
|
||||
Bundle bundle2 = this.zab;
|
||||
if (bundle2 == null) {
|
||||
this.zab = (Bundle) bundle.clone();
|
||||
} else {
|
||||
bundle2.putAll(bundle);
|
||||
}
|
||||
}
|
||||
createDelegate(this.zad);
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public abstract void createDelegate(OnDelegateCreatedListener<T> onDelegateCreatedListener);
|
||||
|
||||
@KeepForSdk
|
||||
public T getDelegate() {
|
||||
return (T) this.zaa;
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void handleGooglePlayUnavailable(FrameLayout frameLayout) {
|
||||
showGooglePlayUnavailableMessage(frameLayout);
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onCreate(Bundle bundle) {
|
||||
zaf(bundle, new zac(this, bundle));
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
|
||||
FrameLayout frameLayout = new FrameLayout(layoutInflater.getContext());
|
||||
zaf(bundle, new zad(this, frameLayout, layoutInflater, viewGroup, bundle));
|
||||
if (this.zaa == null) {
|
||||
handleGooglePlayUnavailable(frameLayout);
|
||||
}
|
||||
return frameLayout;
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onDestroy() {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onDestroy();
|
||||
} else {
|
||||
zae(1);
|
||||
}
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onDestroyView() {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onDestroyView();
|
||||
} else {
|
||||
zae(2);
|
||||
}
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onInflate(Activity activity, Bundle bundle, Bundle bundle2) {
|
||||
zaf(bundle2, new zab(this, activity, bundle, bundle2));
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onLowMemory() {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onLowMemory();
|
||||
}
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onPause() {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onPause();
|
||||
} else {
|
||||
zae(5);
|
||||
}
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onResume() {
|
||||
zaf(null, new zag(this));
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onSaveInstanceState(Bundle bundle) {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onSaveInstanceState(bundle);
|
||||
return;
|
||||
}
|
||||
Bundle bundle2 = this.zab;
|
||||
if (bundle2 != null) {
|
||||
bundle.putAll(bundle2);
|
||||
}
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onStart() {
|
||||
zaf(null, new zaf(this));
|
||||
}
|
||||
|
||||
@KeepForSdk
|
||||
public void onStop() {
|
||||
LifecycleDelegate lifecycleDelegate = this.zaa;
|
||||
if (lifecycleDelegate != null) {
|
||||
lifecycleDelegate.onStop();
|
||||
} else {
|
||||
zae(4);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user