2014-12-02 9 views
10

Intro: Voglio creare un POC su Android Security che richiede di identificare se c'è qualche KeyLogger in esecuzione sul dispositivo Android o meno. E se è in esecuzione o installato sul dispositivo, disabilitalo in tutta la mia applicazione Android.Registratore di chiavi Android

Query:

1.) È questo possibile creare keylogger Android che intercetta gli eventi della tastiera e in esecuzione in background come servizi?

2.) È possibile identificare se uno qualsiasi degli eventi di tastiera che gestiscono il processo in background?

3.) Posso interrompere qualsiasi altro servizio in background (non di mia proprietà) dal mio codice applicazione?

Per favore aiutatemi con i collegamenti adatti se ne avete.

+0

hai trovato la tua risposta? –

+0

Sì, ho aggiornato la mia ricerca come risposta accettata, per favore passaci attraverso. –

risposta

3

Dopo la ricerca per 1 giorno intero ho raggiunto a sotto conclusione.

Android non consente di intercettare gli input di tastiera software di default dai servizi in background. L'unico modo per intercettare questi eventi sono le tastiere personalizzate.

ho riassunto come segue:

In chiave di registrazione Android per gli eventi della tastiera non è supportata in servizi in background. Alcuni dei link sono i seguenti:

Punto 1: Google Android Developer

metodi di input Come morbide possono utilizzare più e fantasiosi modi di immettere il testo, non v'è alcuna garanzia che qualsiasi pressione di un tasto su una tastiera morbida genererà un evento chiave: questo è lasciato alla discrezione dell'IME, e infatti l'invio di tali eventi è scoraggiato. Non dovresti mai fare affidamento sulla ricezione di KeyEvents per qualsiasi tasto su un metodo di input morbido. In particolare, la tastiera software predefinita non invierà mai eventi chiave a nessuna applicazione destinata a Jelly Bean o successiva e invierà solo eventi per alcune pressioni dei tasti cancella e restituisci alle applicazioni destinate a Ice Cream Sandwich o versioni precedenti.

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

Android Jelly Bean è: da 4.1 a 4.3.1 Android IceCream Sandwich: 4,0

presse chiave su metodi di input morbide non sono tenuti a innescare i metodi in questo ascoltatore, e sono in realtà scoraggiato a farlo. La tastiera Android predefinita non le attiverà per nessuna chiave per nessuna applicazione destinata a Jelly Bean o successiva, e la distribuirà solo per alcune pressioni dei tasti per le applicazioni destinate a Ice Cream Sandwich o precedenti.

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

Punto 2: Stack Overflow KeyEvents può essere gestita solo da attività in quanto sono l'interfaccia per l'utente premendo i tasti e solo quando sono in primo piano. Anche i servizi eseguiti in background non sono pensati per reagire all'input dell'utente.

Android - Listener for hard keys press at background

Is it possible to create an Android Service that listens for hardware key presses?

Punto 3: Romain Guy Romain Guy (https://stackoverflow.com/users/298575/romain-guy) che lavora per Google conferma anche onKeyDown in a service? (Global Hot Keys)

Punto 4: Alcuni Alternativi:

Google Android-sviluppatori Gruppo: https://groups.google.com/forum/#!topic/android-developers/o--GUWmqXdI

può essere fatto solo utilizzando tastiera personalizzata: get pressed key and throw another key in android

Si prega di aggiungere i tuoi commenti se si pensa che ho perso qualcosa.

+0

grazie mille per questa documentazione. Sto indagando su qualcosa di simile e mi stavo chiedendo se potevo farti rimbalzare domande? Non sono sicuro che la mia email appaia sul mio profilo ma, se lo desideri, mandami una email a cgmckeever ... gmail. Grazie! – cgmckeever

+0

vedere l'app 'Tipo macchina'. Secondo te se questo id non è possibile, allora come funziona? –

+0

In questo momento non ho molto tempo per esaminarlo. Questo è stato il mio ritrovamento circa 2 anni fa. È possibile rivedere l'app e pubblicare le proprie visualizzazioni successivamente. –

12

So che questa domanda ha già una risposta accettata ma non sono d'accordo con la risposta accettata!
Questo può essere fatto in Android tramite le API di accessibilità.
Date un'occhiata al seguente programma:

Type Machine

Esso utilizza le API di accessibilità, e memorizza correttamente ogni colpo chiave si digita in qualsiasi applicazione che è essenzialmente ciò che un key logger fa!
EDIT: Non sono esattamente sicuro di cosa usi TypeMachine ma dovresti essere in grado di ottenere il testo dal servizio di accessibilità using this method. Ad esempio, il seguente codice può essere utilizzato per ottenere un nuovo testo:

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

più 1 per menzionare il tipo di macchina ma come implementarla? Qualche esempio con il codice? –

+0

@ 14bce109: ora ho modificato la mia risposta per includere un codice di esempio. – ananth