2014-12-02 14 views
10

Intro: Ich möchte ein POC auf Android Security erstellen, die erfordert, um zu identifizieren, ob es einen KeyLogger auf Android-Gerät oder nicht gibt. Und wenn es auf dem Gerät läuft oder installiert ist, dann deaktiviere es in meiner Android-Anwendung.Android Keylogger

Abfragen:

1.) Ist das möglich Android Keyloggern zu erstellen, welche Tastaturereignisse abfängt und als Dienste im Hintergrund laufen?

2.) Ist es möglich, zu identifizieren, ob einer der Hintergrundprozesse Tastaturereignisse verarbeitet?

3.) Kann ich einen anderen Hintergrunddienst (nicht im Besitz von mir) durch meinen Anwendungscode stoppen?

Bitte helfen Sie mir mit geeigneten Links, wenn Sie haben.

+0

haben Sie Ihre Antwort gefunden? –

+0

Ja, ich habe meinen Befund als akzeptierte Antwort aktualisiert. Bitte gehen Sie durch. –

Antwort

3

Nach der Forschung für 1 ganzen Tag erreichte ich unten Schlussfolgerung.

Android ermöglicht es Ihnen nicht, standardmäßige Softkey-Eingaben von Hintergrunddiensten abzufangen. Die einzige Möglichkeit, diese Ereignisse abzufangen, sind benutzerdefinierte Tastaturen.

Ich habe es wie folgt zusammengefasst:

In Android Key Logging für Tastaturereignisse nicht in Hintergrunddienste unterstützt wird. Einige der Links sind wie folgt:

Punkt 1: Google Android Developer

Als Soft-Input-Verfahren mehr und einfallsreiche Art und Weise der Texteingabe verwenden kann, gibt es keine Garantie, dass jeder Tastendruck auf einer Soft-Tastatur wird ein Schlüsselereignis generieren: dies liegt im Ermessen des IME, und es wird davon abgeraten, solche Ereignisse zu senden. Sie sollten sich niemals darauf verlassen, KeyEvents für einen beliebigen Schlüssel einer Soft-Input-Methode zu empfangen. Insbesondere sendet die Standardsoftwaretastatur niemals ein Schlüsselereignis an eine Anwendung, die auf Jelly Bean oder später abzielt, und sendet nur Ereignisse für einige Druckvorgänge der Lösch- und Rückgabetasten an Anwendungen, die auf Ice Cream Sandwich oder früher zielen.

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

Android Jelly Bean ist: 4.1 bis 4.3.1 Android IceCream Sandwich: 4.0

Betätigung der einzelnen Tasten auf Soft-Input-Methoden sind nicht erforderlich, um die Methoden in diesem Hörer auslösen, und in der Tat ist entmutigt, dies zu tun. Die standardmäßige Android-Tastatur löst diese für keinen Schlüssel für eine Anwendung aus, die auf Jelly Bean oder später abzielt, und liefert sie nur für einige Tastendrücke an Anwendungen, die auf Ice Cream Sandwich oder früher gerichtet sind.

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

Punkt 2: Stack-Überlauf KeyEvents kann nur durch Aktivitäten behandelt werden, da sie die Schnittstelle zum Benutzer durch Drücken der Tasten sind und nur dann, wenn sie im Vordergrund. Selbst Dienste, die im Hintergrund ausgeführt werden, sollen nicht auf Benutzereingaben reagieren.

Android - Listener for hard keys press at background

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

Punkt 3: Romain Guy Romain Guy (https://stackoverflow.com/users/298575/romain-guy), die für Google arbeitet, bestätigt es auch onKeyDown in a service? (Global Hot Keys)

Point 4: Some Other reference:

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

Es nur mit benutzerdefinierte Tasten getan werden kann: get pressed key and throw another key in android

Bitte fügen Sie Ihre Kommentare, wenn Sie denken, dass ich etwas verpasst haben.

+0

Vielen Dank für diese Dokumentation. Ich untersuche etwas Ähnliches und fragte mich, ob ich Fragen von dir abwerfen könnte? Nicht sicher, ob meine E-Mail-Adresse in meinem Profil angezeigt wird, aber wenn Sie möchten, senden Sie mir bitte eine E-Mail an cgmckeever ... gmail. Vielen Dank! – cgmckeever

+0

finden Sie in der 'Type Maschine' App. Ihnen zufolge, wenn diese ID nicht möglich ist, dann, wie es funktioniert? –

+0

Im Moment habe ich nicht viel Zeit, mir das anzuschauen. Das war meine Entdeckung vor 2 Jahren. Sie können die App überprüfen und Ihre Ansichten anschließend posten. –

12

Ich weiß, diese Frage hat bereits eine akzeptierte Antwort, aber ich stimme nicht mit der akzeptierten Antwort!
Dies kann in Android über die Accessibility-APIs erfolgen.
Werfen Sie einen Blick auf die unten Programm:

Type Machine

Es nutzt die Zugänglichkeit APIs und speichert korrekt jeden Tastenhub Sie in einer beliebigen Anwendung geben, die im Wesentlichen ist, was ein Key-Logger tut!
EDIT: Ich bin nicht genau sicher, was TypeMachine verwendet, aber Sie sollten in der Lage sein, den Text von Barrierefreiheit Service using this method zu bekommen. Zum Beispiel kann der folgende Code verwendet werden, um einen neuen Text zu erhalten:

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

plus 1 für erwähnen Typ Maschine, aber wie Sie dies implementieren? Irgendwelche Beispiele mit Code? –

+0

@ 14bce109: Ich habe jetzt meine Antwort mit einem Beispielcode bearbeitet. – ananth