2012-04-18 8 views
21

que a pesar de que no era posible, pero me di cuenta de que NQ Mobile Security es capaz de mostrar un mensaje después de que haga clic en Desinstalar y antes de la PackageUninstaller se llama. Me gustaría replicar este comportamiento en mi aplicación.Cómo mostrar una actividad antes de mi aplicación se desinstala (Android)

Probé con una actividad escuchar Intención "android.intent.action.DELETE", como se sugiere aquí: How to know my app is uninstalled from the device...?

Pero cuando estoy a punto de desinstalar mi aplicación, el selector aparece pidiendo a recoger mi aplicación o el desinstalador del paquete. ¿Cómo puedo evitar esto?

¿Hay alguna forma diferente de interceptar su aplicación DESINSTALO? (Antes de responder que no es posible, intente desinstalar NQ Mobile Security y vea qué sucede. En mi Android 2.3.4 muestra una buena pantalla que dice que no es seguro ir sin una aplicación de seguridad).

+0

¿Está rooteado su dispositivo o es solo un dispositivo minorista estándar/no modificado? – scorpiodawg

+0

Por cierto, ¿cuál es el mensaje que se muestra al hacer clic en desinstalar para "NQ Mobile Security"? ¿Tiene algo que ver con "política del dispositivo" o "administrador del dispositivo"? – scorpiodawg

+0

@scorpiodawg No rooteado. Es un dispositivo minorista no modificado. He editado la pregunta y agregado las imágenes, cómo se desinstala, ¿puedes aceptar las ediciones? –

Respuesta

29

Noté que NQ Mobile Security es capaz de mostrar un mensaje después de que haga clic en Desinstalar y antes de la PackageUninstaller se llama

Deben estar explotando algún fallo de seguridad en Android. Lo investigaré y veré si puedo repararlo. Se supone que las aplicaciones no tienen el control en el momento de la desinstalación.

¡Gracias por señalar esto!

¿Hay alguna manera diferente de interceptar su aplicación DESINSTALO?

espero que no.

+1

¿Cuáles son las preocupaciones/amenazas de seguridad si una aplicación lanza una 'Activity' o un' IntentService' durante la desinstalación? –

+0

@darkcrow Por un lado, la actividad simplemente puede volver a instalar la aplicación una vez que se haya eliminado. Una aplicación maliciosa, por supuesto, probablemente haría esto sin alertar al usuario de que algo está sucediendo. –

+1

@TedHopp Muy educadamente, una aplicación legítima nunca hará eso y una aplicación con intención maliciosa puede hacer muchos otros daños. Pero bloquear totalmente una función de este tipo puede ser muy perjudicial para algunas aplicaciones legítimas que buscan una experiencia de usuario rica. –

3

Probablemente pidan un permiso muy crítico que el usuario les otorgue sin saberlo. Mira la pestaña "Permisos" para esta aplicación (desde 15/6/2012): https://play.google.com/store/apps/details?id=com.nqmobile.antivirus20&hl=en.

La lista de permisos que obtiene esta aplicación es francamente escalofriante. Entre otras cosas:

Herramientas del sistema recuperar aplicaciones en ejecución Permite que la aplicación recupere información sobre las funciones actuales y en funcionamiento. Las aplicaciones maliciosas pueden descubrir información privada sobre otras aplicaciones.

CAMBIO/CONFIGURACIÓN DE LA RED interceptar el tráfico y permite que la aplicación cambie la configuración de red y que intercepte e inspeccione todo el tráfico de red, por ejemplo, para cambiar el proxy y el puerto de cualquier APN. Las aplicaciones maliciosas pueden monitorear, redirigir, o modificar paquetes de red sin su conocimiento.

IMPEDIR LA TABLETA DEL SUEÑO EVITAR QUE EL TELÉFONO DESDE EL SUEÑO Le permite a la aplicación evitar que la tableta se quede dormida. Permite que la aplicación evite que el teléfono entre en modo de suspensión.

CAMBIAR LAS CONFIGURACIONES DE LA UI Permite que la aplicación cambie la configuración actual, como la configuración regional o el tipo general de fuente . MODIFICAR CONFIGURACIONES DEL SISTEMA GLOBAL Permite que la aplicación modifique los datos de configuración del sistema . Las aplicaciones maliciosas pueden dañar la configuración de tu sistema.

DISPLAY ALERTAS DE NIVEL DE SISTEMA Permite que la aplicación muestre ventanas de alerta del sistema. Las aplicaciones maliciosas pueden ocupar toda la pantalla.

MOUNT AND UNMOUNT FILESYSTEMS Permite que la aplicación monte y desmonte filesystems para almacenamiento extraíble.

CAMBIAR LA CONECTIVIDAD DE LA RED Permite la aplicación para cambiar el estado de la conectividad de red.

CAMBIAR ESTADO WI-FI Permite que la aplicación se conecte y se desconecte de los puntos de acceso a Wi-Fi , y realice cambios en las redes Wi-Fi configuradas.

- Actualización -

también encontró que el Gestor de paquetes Android prácticamente sólo elimina un paquete si se le pide que lo haga. La única comprobar que realiza antes de hacerlo es si el paquete se va a eliminar se ha registrado actualmente como tener un administrador dispositivo activo:

try { 
     if (dpm != null && dpm.packageHasActiveAdmins(packageName)) { 
      Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); 
      return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER; 
     } 
    } catch (RemoteException e) { 
    } 

véase la línea 6900 en PackageManagerService en la fuente AOSP here.

Para esto, el usuario debe registrar explícitamente la aplicación como administrador del dispositivo. Consulte las notas sobre la administración del dispositivo aquí: http://developer.android.com/training/enterprise/device-management-policy.html.

+0

bien, usted ha dado un excelente puntero para trabajar, '¿Puede el usuario dar permiso para ejecutar una actividad mientras la aplicación está desinstalada?' –

+0

Vea mi actualización más arriba. Creo que si registras tu aplicación como "administrador del dispositivo" entonces hay algo aquí que puedes hacer. De lo contrario, parece que no (es decir, el sistema operativo no tiene tal disposición, por lo que puedo decir) – scorpiodawg

+0

Permiso requerido para 'Administración de dispositivos' es' "android.permission.BIND_DEVICE_ADMIN'. ¿No parece que la aplicación lo está pidiendo? –

3

Estoy bastante seguro de que están supervisando el LogCat para interceptar cuando el Activity Manager llama al PackageUninstaller. Creo que matan la tarea y comienzan su propia actividad. Es bastante inteligente, pero definitivamente está explotando un agujero de seguridad en Android.

+0

Entiendo el potencial de amenaza para esto. He agregado una función solicite aquí http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&id=33315 –

6

Opera Max es una aplicación que hace algo similar: una vez desinstalada, abre una página web.

¿Cómo lo hacen?

Al usar libevent, desde el código nativo, ven el directorio /data/data/com.opera.max que se va a eliminar y luego publican una buena acción anterior.Visión deVIEW cuando sucede.

Instalar su aplicación, ejecutarlo, y en el dispositivo arraigado desde adb shell eliminar el directorio /data/data/com.opera.max

ACTUALIZACIÓN: He creado una aplicación de ejemplo que muestra cómo funciona. Por cierto que no funciona con la reciente (+ KitKat creo) las versiones de Android: https://github.com/pelotasplus/ActionAfterUninstall

+0

Hola, ¿funciona en Android 5? I no puede hacer que funcione. – umni4ek

+0

no, no es así. ver ACTUALIZACIÓN al final de mi respuesta. solo fue un truco. – pelotasplus

+0

Y no hay forma de lograr esto? Busqué durante dos días, pero no encontré respuesta. – umni4ek

Cuestiones relacionadas