2014-12-02 11 views
10

Intro: Chcę utworzyć POC na Android Security, który wymaga identyfikacji, czy istnieje KeyLogger działający na urządzeniu z systemem Android, czy nie. A jeśli jest uruchomiony lub zainstalowany na urządzeniu, wyłącz go w mojej aplikacji na Androida.Klucz rejestrujący Android

Zapytania:

1.) Czy to możliwe, aby utworzyć Android keyloggery, które przechwytuje zdarzenia klawiatury i działa w tle jako usługi?

2.) Czy można rozpoznać, czy któryś z procesów w tle wymienia zdarzenia na klawiaturze?

3.) Czy mogę zatrzymać inną usługę tła (nie będącą własnością mnie) przez mój kod aplikacji?

Proszę mi pomóc z odpowiednimi linkami, jeśli masz.

+0

znalazłeś odpowiedź? –

+0

Tak, zaktualizowałem moje odkrycie jako zaakceptowaną odpowiedź, proszę przejść przez to. –

Odpowiedz

3

Po badaniu przez cały dzień doszedłem do poniższego wniosku.

Android nie zezwala na przechwytywanie domyślnych wejść klawiatury miękkiej z usług tła. Jedynym sposobem na przechwycenie tych zdarzeń są klawisze niestandardowe.

mam podsumować w następujący sposób:

W Android Key rejestrowania zdarzeń klawiaturowych nie jest obsługiwana w usługach tła. Niektóre linki są następujące:

Punkt 1: Google Android Developer

tak miękkie sposoby wejściowe mogą korzystać z wielu i pomysłowe sposoby wprowadzania tekstu, nie ma gwarancji, że każdy naciśnięcie klawisza na klawiaturze programowej wygeneruje kluczowe zdarzenie: pozostawia to do wyboru IME, a w rzeczywistości wysyłanie takich wydarzeń jest odradzane. Nigdy nie należy polegać na odbiorze KeyEvents dla dowolnego klawisza metodą miękkiego wprowadzania danych. W szczególności domyślna klawiatura oprogramowania nigdy nie wyśle ​​żadnego kluczowego wydarzenia do żadnej aplikacji kierującej reklamy Jelly Bean lub późniejszej, i będzie wysyłała tylko zdarzenia dla niektórych naciśnięć klawiszy usuwania i zwracania do aplikacji, w których celem jest Ice Cream Sandwich lub wcześniej.

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

Android Jelly Bean jest: 4.1 do 4.3.1 Android kanapka lodowa: 4,0

Kluczowe naciska na miękkich metod wejściowych nie są wymagane do wywołania metody w tym słuchacza, i są w rzeczywistości zniechęcać do tego. Domyślna klawiatura Android nie uruchomi ich dla żadnego klucza do żadnej aplikacji kierującej Jelly Bean lub później, i dostarczy ją tylko w przypadku niektórych naciśnięć klawiszy aplikacjom, które kierują reklamy na Ice Cream Sandwich lub wcześniej.

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

Punkt 2: przepełnienie stosu KeyEvents mogą być obsługiwane tylko przez działania, ponieważ są one interfejs użytkownika naciskając klawisze i tylko wtedy, gdy są one na pierwszym planie. Nawet usługi działające w tle nie mają reagować na dane wprowadzone przez użytkownika.

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), który pracuje dla Google potwierdza to również onKeyDown in a service? (Global Hot Keys)

Punkt 4: Niektóre Inne odniesienia:

Google Android deweloperów Grupa: https://groups.google.com/forum/#!topic/android-developers/o--GUWmqXdI

Można to zrobić tylko za pomocą Custom klawiatury: get pressed key and throw another key in android

proszę dodać swój komentarz, jeśli myślisz, że tęskniłem za nic.

+0

Dziękuję bardzo za tę dokumentację. Zbadałem coś podobnego i zastanawiałem się, czy mogę od ciebie odesłać pytania? Nie wiem, czy mój e-mail jest wyświetlany w moim profilu, ale jeśli chcesz, napisz do mnie na adres cgmckeever ... gmail. Dzięki! – cgmckeever

+0

zobacz aplikację "Wpisz maszynę". Według ciebie, jeśli to id nie jest możliwe, to jak działa? –

+0

W tej chwili nie mam zbyt wiele czasu, aby się nad tym zastanowić. To było moje odkrycie około 2 lat temu. Możesz przejrzeć aplikację i opublikować swoje poglądy. –

12

Wiem, że to pytanie ma już zaakceptowaną odpowiedź, ale nie zgadzam się z zaakceptowaną odpowiedzią!
Można to zrobić na Androidzie za pośrednictwem interfejsów API ułatwień dostępu.
Spójrz na poniższym programem:

Type Machine

Wykorzystuje API dostępności i prawidłowo przechowuje każdy klucz udar wpisywany w każdej aplikacji, która jest w zasadzie to, co robi keylogger!
EDYCJA: Nie jestem do końca pewien, jakiego rodzaju używa TypeMachine, ale powinieneś być w stanie uzyskać tekst z usługi dostępności using this method. Na przykład, aby uzyskać nowy tekst, można użyć następującego kodu:

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 za wzmiankę o maszynie typu, ale jak ją wdrożyć? Wszelkie przykłady z kodem? –

+0

@ 14bce109: Teraz edytowałem swoją odpowiedź, aby dołączyć przykładowy kod. – ananth

Powiązane problemy