Registrador de clave de Android

Intro: Quiero crear un POC en Android Security que requiere identificar si hay algún KeyLogger ejecutándose en un dispositivo Android o no. Y si se está ejecutando o instalado en el dispositivo, deshabilítelo a través de mi aplicación de Android.

Consultas:

1.) ¿Es posible crear keyloggers Android que intercepte eventos de teclado y se ejecuten en segundo plano como servicios?

2.) ¿Es posible identificar si alguno de los procesos de fondo procesa eventos de teclado?

3.) ¿Puedo detener cualquier otro servicio de fondo (que no pertenezca a mi) por mi código de aplicación?

Por favor, ayúdame con los enlaces adecuados si usted tiene.

Sé que esta pregunta ya tiene una respuesta aceptada pero no estoy de acuerdo con la respuesta aceptada!
Esto se puede hacer en android a través de las API de accesibilidad.
Echa un vistazo al siguiente programa:

Tipo de máquina

Utiliza las API de accesibilidad y almacena correctamente cada trazo de tecla que escriba en cualquier aplicación que es esencialmente lo que hace un registrador de claves!
EDIT: No estoy exactamente seguro de lo que TypeMachine utiliza, pero debería ser capaz de obtener el texto del servicio de accesibilidad utilizando este método . Por ejemplo, se puede utilizar el siguiente código para obtener un nuevo texto:

void onViewTextChanged(AccessibilityEvent accessibilityEvent, AccessibilityNodeInfo accessibilityNodeInfo) { List text = accessibilityEvent.getText(); CharSequence latestText = (CharSequence) text.get(0); Log.i(MY_TAG, latestText.toString()); } 

Después de la investigación por 1 día entero alcanzé por debajo de la conclusión.

Android no le permite interceptar entradas predeterminadas de teclado suave desde servicios de fondo. La única manera de interceptar estos eventos son teclados personalizados.

Lo he resumido de la siguiente manera:

En el registro de claves de Android para eventos de teclado no se admite en servicios de fondo. Algunos de los enlaces son los siguientes:

Punto 1: Desarrollador de Android de Google

Como los métodos de entrada suave pueden utilizar formas múltiples e inventivas de introducir texto, no hay garantía de que ninguna pulsación de teclas en un teclado virtual genere un evento clave: esto queda a discreción del IME y, de hecho, se desaconseja el envío de dichos eventos. Nunca debe confiar en recibir KeyEvents para ninguna tecla en un método de entrada suave. En particular, el teclado de software predeterminado nunca enviará ningún evento clave a ninguna aplicación que apunte a Jelly Bean o posterior y sólo enviará eventos para algunas presiones de las teclas de borrado y devolución a las aplicaciones que apuntan a Ice Cream Sandwich o anteriores.

http://developer.android.com/reference/android/view/KeyEvent.html

Android Jelly Bean es: 4.1 a 4.3.1 Android IceCream Sandwich: 4.0

Las pulsaciones de teclas en los métodos de entrada suave no son necesarias para activar los métodos en este oyente, y de hecho se desaconsejan hacerlo. El teclado de Android por defecto no activará ninguna tecla para ninguna aplicación que apunte a Jelly Bean o posterior, y sólo la entregará para algunas pulsaciones de teclas a aplicaciones que apunten a Ice Cream Sandwich o anteriores.

http://developer.android.com/reference/android/text/method/KeyListener.html

Punto 2: Desbordamiento de pila KeyEvents sólo puede ser manejado por Actividades, ya que son la interfaz para el usuario presionando las teclas y sólo cuando están en primer plano. Incluso los servicios que se ejecutan en segundo plano no tienen la intención de reaccionar en la entrada del usuario.

Android: escucha de las teclas duras en el fondo

¿Es posible crear un servicio Android que escuche las pulsaciones de teclas de hardware?

Punto 3: Romain Guy Guy Romain ( https://stackoverflow.com/users/298575/romain-guy ) que trabaja para Google también lo confirma onKeyDown en un servicio? (Teclas directas globales)

Punto 4 : Algunos Otra referencia:

Google android-developers Grupo: https://groups.google.com/forum/#!topic/android-developers/o–GUWmqXdI

Se puede hacer sólo usando Custom KeyBoard: presionar la tecla y lanzar otra clave en android

Por favor, agrega tus comentarios si crees que he perdido algo.

  • Android: ¿Cómo matar por completo a un servicio que se ejecuta por separado como un proceso de fondo?
  • Context.startService (intento) o startService (intención)
  • ¿Hay alguna forma de punto de ruptura dentro de las clases probadas?
  • Preferencia en el oyente de cambio
  • Cómo ejecutar la aplicación en segundo plano en android?
  • Servicio android onBind SecurityException
  • Android: El servicio se detiene cuando la actividad está cerrada
  • Enviar datos de Servicio a mi actividad
  • Service.onStartCommand () - ¿es posible devolver más de una bandera?
  • AlarmManager o Servicio
  • Cómo obtener detalles del proceso de ejecución de fondo android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.