Ver la Versión Completa : [ CONSULTA ] App que bloquea Intents en Android
Salinero27
30/05/15, 17:05:44
Buenas Gente.
Estoy finalizando la carrera, y como Trabajo de Fin de Grado, me han asignado el desarrollo de una app que, en el caso de que una app quiera acceder a los datos de otras app, se muestre un aviso al usuario y este decida si la app puede o no acceder a los datos de dicha aplicación.
Aunque ya he programado en anterioridad para android (apps sencillas usando shared preferences y poco más), me gustaría saber si conocéis de algún portal o manual que pueda ayudarme a obtener algo más de información sobre programación avanzada en android.
Un saludo y gracias :ok::ok:
kriogeN
30/05/15, 18:38:19
¿Para esa app en concreto o en términos generales?
Si es lo primero no es demasiado complejo, lo único que tendrías que hacer es mostrar un cuadro de diálogo antes de hacer el setContentView, y según lo que respondas hacerlo o cerrar la Activity.
Si es lo segundo, dudo que se pueda, al menos no directamente. No se si habrá algún BroadcastReceiver para cuando se ejecuta una Activity, y en ese caso poder comparar y lanzar un Service Always On Top que te muestre la ventana de aceptar o cancelar. Si aceptas cierras el Service, y si cancelas matas a la Activity con el ActivityManager. Y como he dicho, no se si se puede.
mocelet
30/05/15, 20:00:27
Entiendo que hablamos de una especie de firewall de Intents pero que además pueda interceptar, preguntar y aceptar o bloquear.
Uff... Por lo que he leído, desde Android 4.2.2 hay un firewall de Intents que se configura por xml y no parece estar documentado. Serviría para bloquearlos, pero no para preguntar y dejar pasar unos si y otros no. Busca "android intent firewall"
Si hablamos de apps con permiso root ya es otra historia, y entonces seria más de hackeo del sistema operativo que también hay literatura pero nunca la he tocado.
Tu tutor del TFG podría darte alguna pista de cómose hace, porque como comenta kriogeN yo también dudo de que se pueda, al menos según lo has contado o según lo hemos entendido.
P.D.: Para interceptar únicamente puedes inspirarte en esta app https://github.com/intrications/intent-intercept
kriogeN
30/05/15, 21:08:05
Entiendo que hablamos de una especie de firewall de Intents pero que además pueda interceptar, preguntar y aceptar o bloquear.
Uff... Por lo que he leído, desde Android 4.2.2 hay un firewall de Intents que se configura por xml y no parece estar documentado. Serviría para bloquearlos, pero no para preguntar y dejar pasar unos si y otros no. Busca "android intent firewall"
Si hablamos de apps con permiso root ya es otra historia, y entonces seria más de hackeo del sistema operativo que también hay literatura pero nunca la he tocado.
Tu tutor del TFG podría darte alguna pista de cómose hace, porque como comenta kriogeN yo también dudo de que se pueda, al menos según lo has contado o según lo hemos entendido.
P.D.: Para interceptar únicamente puedes inspirarte en esta app https://github.com/intrications/intent-intercept
También he visto esa app cuando estaba mirando a ver si había algo, pero por lo que yo he entendido lo que hace es crear un IntentFilter para reaccionar a llamadas de otras Activity. Así que tampoco valdría para lo que el quiere, porque como mucho le saldría en la pantalla "Quieres usar esta app o esta otra", y sólo valdría si usas un Intent mediante un ACTION (por ejemplo aplicaciones que puedan actuar como cámara), no para abrir una Activity en concreto.
Salinero27
31/05/15, 04:12:05
Lo primero gracias por las respuestas.
Como bien dice mocelet, sería una especie de firewall de intents. Algo que te avise en el caso de que una app (un juego por ejemplo) quiera acceder a los contactos, el imei, la ubicación o cualquier otra cosa sobre la que tenga permisos
Hablando con mi tutor si que hemos debatido sobre la posibilidad de que para llevarlo a cabo sea necesario tocar el kernel, pero no estamos seguros de si es así. En caso de que haya que tocar el kernel es bastante probable que no se realice, ya que me vendría un poco grande seguramente.
kriogeN
31/05/15, 09:22:07
No es que tengas que tocar el Kernel, es que tienes que tocar el SO, y ya no hablo de modificar ficheros, hablo de recompilarlo.
Para todo lo que mencionas no necesitas hacerlo mediante Intents, precisamente hacerlo mediante Intents es para cuando NO tienes permiso.
Por ejemplo, una aplicación con permiso de cámara significa que ella misma es una cámara y puede hacer fotos en su propia interfaz (y mostrar la preview y todo eso), pero si no tiene permiso de cámara siempre puede solicitar por Intent que se abra una cámara y cuando esa aplicación se cierre le devuelva el resultado que es la foto, todo eso sin permisos.
O el tema de los contactos, si tengo permisos significa que puedo crear un Cursor de los contactos y manipularlo como yo quiera y mostrarlo como yo quiera. Pero si no tengo permisos puedo solicitar un Intent que me abra los contactos y el que yo seleccione me lo devuelva como resultado para usarlo en mi app, pero sólo ese.
mocelet
31/05/15, 10:21:39
Algo como hace iOS vaya.
Una app "normal" imposible. Necesitas que el dispositivo tenga root y, probablemente, el framework Xposed que facilita muchos de los hacks que hay. De hecho hay módulos que hacen eso como XPrivacy, algunas ROMs ya incluyen mecanismos parecidos y hasta es posible que lo veamos pronto en Android oficial.
Lo veo muy ambicioso como TFG y no veo cómo podría aportar valor añadido a lo que hay.
kriogeN
01/06/15, 18:26:51
y hasta es posible que lo veamos pronto en Android oficial
Si antes lo dices, justo hoy ha salido que Android M incluirá esa opción, aunque a medias, las apps podrán pedir permisos al usuario que no tengan durante su instalación. Si ya los tenían los seguirán teniendo y no se tendrán que pedir.
mocelet
01/06/15, 19:00:57
Con lo paranoico que soy ya no solo tendré que mirar los permisos al instalar sino durante la ejecución, qué pereza xD
Salinero27
03/06/15, 10:38:44
Con lo paranoico que soy ya no solo tendré que mirar los permisos al instalar sino durante la ejecución, qué pereza xD
Sería lo suyo X-D es muy facil que nos cuelen troyanos en android desde mi punto de vista.
Bueno, voy a probar de momento IntentIntercept e Intent Firewall. A ver que tal funcionan y como actuan. Es probable que sea muy ambicioso y que a lo mejor solo consiga un aviso cada vez que una app accede a ciertos datos y que no se pueda bloquear. Pero veo la app todo un reto y me ayudaría muchísimo a entender la arquitectura de android.
mocelet
03/06/15, 11:50:25
El Intent Intercept como decía kriogeN no te valdrá para nada, porque los permisos no tienen que ver nada con los intents. Y el Intent Firewall son ficheros XML con las reglas para bloquear o aceptar, no te va a avisar nadie de que una app accede a algo o no.
La única forma es interceptar las llamadas de sistema, lo más "sencillo" es con el framework Xposed que comentaba. Y siempre con permisos de root, claro.
Salinero27
16/07/15, 12:06:16
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.
Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.
Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.
Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?
Salinero27
16/07/15, 12:07:14
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.
Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.
Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.
Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?
Gracias por vuestras respuestas :ok::ok::ok:
Salinero27
16/07/15, 12:21:51
Bueno, después de darle muchas vueltas y de trastear con el Intent Firewall de Android, voy a diseñar una app que permita interactuar con el Intent Firewall de Android.
Después de mucho investigar, me he dado cuenta de que no hay manera, aún, de conocer quien es el emisor del Intent, por lo tanto bloquearlo entre apps es imposible. No obstante, si se puede bloquear el acceso a las apps que se desee.
Mi app tratará de editar un fichero en xml dentro del directorio del Intent Firewall, en ese fichero se establecen las reglas que el firewall deberá seguir. Para ello, el dispositivo móvil deberá de estar rooteado.
Sabeis donde puedo consultar el código para que mi app solicite permisos de super usuario?
Gracias por vuestras respuestas :ok::ok::ok:
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.