6 votos

¿Puede una aplicación ejecutar el código si no la abres?

¿Puede una aplicación ejecutar el código si no la abres?

Como parte de esta pregunta se mencionó brevemente el tema de una aplicación que descarga datos sin que el usuario la abra explícitamente.

Me hizo pensar: ¿es trivial que una aplicación ejecute código sin que el usuario la abra?

Obviamente, una aplicación puede ser configurada para lanzarse en el arranque, causando que funcione en el siguiente ciclo de energía. Pero aún más fácil, ¿no podría una aplicación tener un receptor para una función muy común (como encender la pantalla), ejecutándose así a sí misma sin que el usuario lo sepa?

¿Es posible que una aplicación actúe como receptor de un temporizador de alarma para que se ejecute automáticamente cada minuto?

Muchas personas ejecutan App Ops justo después de instalar una aplicación para limitar la exposición. Pero parece que sería casi trivial que una aplicación ejecutara el código inmediatamente después de ser instalada.

¿Esto es correcto, o hay salvaguardias para evitarlo?

0 votos

Sí, los servicios se ejecutan automáticamente.

0 votos

Hay muchas formas de responder a tu pregunta o preguntas, pero hay variables. Estando rooteado y con SU instalado, ¿a qué componentes del sistema y del usuario concediste acceso total? ¿Descargas e instalas aplicaciones de fuentes fiables? ¿Lees los permisos que se permiten a una aplicación? ¿Utiliza aplicaciones de accesibilidad? ....... En cuanto a AppOps, no lo uso. Mi herramienta preferida es Mis herramientas Android . Tienes opciones para activar/desactivar services, activities, broadcast receiver, content provider y otros artículos.

0 votos

@HasH_BrowN Estoy pensando más en la línea de lo que es técnicamente posible, independientemente del comportamiento del usuario.

6voto

GiantTree Puntos 1234

Echa un vistazo a Acciones de difusión (desplácese hacia abajo hasta Acciones de transmisión estándar ).

Todos los intentos que se declaran como Acción de radiodifusión puede ser recibido por una aplicación que declaró un receptor en su manifiesto.

Hay algunas emisiones que requieren un registro explícito en el sistema (Anotado con You can not receive this through components declared in manifests, only by explicitly registering for it with Context.registerReceiver(). ).

Las más importantes para las aplicaciones que ejecutan código después de instalarse son:

  • ACTION_USER_PRESENT : Se envía cuando el usuario está presente después de que el dispositivo se despierta (por ejemplo, cuando el guarda llaves se ha ido).
  • PANTALLA_DE_ACCIÓN_EN : Acción de transmisión: Enviado cuando el dispositivo se despierta y se vuelve interactivo.
  • ACTION_SCREEN_OFF : Acción de transmisión: Se envía cuando el dispositivo se duerme y se vuelve no interactivo.
  • ACCIÓN_MI_PAQUETE_REEMPLAZADO : Una nueva versión de su aplicación ha sido instalada sobre una ya existente. Esto sólo se envía a la aplicación que fue reemplazada. No contiene ningún dato adicional; para recibirlo, sólo hay que utilizar un filtro de intención para esta acción.
  • ACTION_HEADSET_PLUG : Auriculares con cable conectados o desconectados. Igual que ACTION_HEADSET_PLUG, para ser consultado por valor y documentación.
  • ACTION_DATE_CHANGED : La fecha ha cambiado.

( Fuente: http://developer.Android.com/reference/Android/content/Intent.html )

¿Es posible que una aplicación actúe como receptor de un temporizador de alarma para que se ejecute automáticamente cada minuto?

Sí, es posible usar el ACTION_TIME_TICK Acción de difusión. Tiene que ser registrado usando Context.registerReceiver() pero después de eso el servicio de registro es llamado cada minuto.

Muchas personas ejecutan App Ops justo después de instalar una aplicación para limitar la exposición. Pero parece que sería casi trivial que una aplicación ejecutara el código inmediatamente después de ser instalada.

¿Esto es correcto, o hay salvaguardias para evitarlo?

Su suposición es bastante correcta. Teóricamente cualquier aplicación podría declarar un receptor de radiodifusión para recibir una de las acciones de radiodifusión antes mencionadas y empezar a ejecutar algún código. Esto es aún más crucial cuando se actualiza una aplicación debido a la ACCIÓN_MI_PAQUETE_REEMPLAZADO para ejecutar el código justo después de que la actualización se haya completado. Esa es la razón por la que mucha gente usa AppOps para evitar que las aplicaciones se ejecuten si se envía una de las emisiones más frecuentes.

1 votos

Buena respuesta, pero ¿qué pasa con las otras partes de la pregunta de la OP? Por muy bien que hayas abordado la parte de Broadcast, la respuesta sigue estando incompleta. Sin ánimo de faltar al respeto.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X