Jak niektóre aplikacje na Androida pamiętają, że nie jest to pierwsza instalacja?

33

Niektóre aplikacje na Androida pamiętają, czy zostały wcześniej zainstalowane na tym samym urządzeniu. Załóżmy, że odinstalowałeś aplikację rok temu. Po upływie roku, jeśli ponownie zainstalujesz tę samą aplikację, będzie ona mogła rozpoznać, że była wcześniej instalowana na tym samym telefonie.

Tej techniki używają aplikacje online, aby trwale zakazać użytkownikom ponownego tworzenia nowego konta, jeśli raz zablokowano im możliwość korzystania z usługi. Gdy tacy użytkownicy utworzą nowe konto, instalując aplikację później, aplikacje te będą w stanie wykryć swoją „pierwszą obecność” i wysłać te informacje na serwery, aby użytkownik mógł zostać ponownie zbanowany.

Jak to robią, nawet po wyczyszczeniu danych i całkowitym odinstalowaniu? Oznacza to, że przechowują gdzieś w telefonie jakiś plik, który nie jest usuwany po odinstalowaniu. Jak mogę wyłączyć to wykrywanie?

defaltować
źródło
Dlaczego chcesz usunąć te informacje? Czy twórcy aplikacji mają prawa? Nie spodziewam się, że będzie to popularny komentarz, ale zastanów się, czy nie poświęciłeś czasu i trudu na stworzenie aplikacji.
S. Mitchell,
6
@ S. Mitchell Dzisiaj Niektórzy programiści aplikacji i duże firmy reklamowe próbują uzyskać dostęp do niepotrzebnych informacji od niewinnych użytkowników. Nie tylko chcą adresu MAC, ale także chcą poznać Twój identyfikator SSID Wi-Fi. Google dał im dobrą lekcję, wdrażając uprawnienia, których nie chcesz im dać w Androidzie 6. Ale reklamodawcy nie zatrzymują się tutaj, zawsze znajdują sposób na poruszanie się. Chcę zapewnić ten system prywatności.
defalt 25.09.16
1
@ S. Mitchell Witaj Mitchell. Być może źle mnie osądzasz z powodu mojego pytania. Nie, nie jestem zbanowany za żadne serwisy społecznościowe ani internetowe, ani za wymianę stosów, jeśli masz co do tego wątpliwości. Ale dla mnie wiedza to nauka. Nie wykonuję żadnej praktycznej pracy z odpowiedziami, które tu otrzymałem. Ale zdecydowanie pomagają wiedzieć, jak to działa. Nie można stworzyć zabezpieczeń przeciw hakowaniu, jeśli nie wiadomo, jak się włamać. Ta sama analogia jest tutaj. Jeśli nie mogę się dowiedzieć, jak działają aplikacje, nie ma sensu tego robić.
defalt
7
@ S. Mitchell: Do app creators have rights?Właściwie to na moim telefonie nie. Mogę pozwolić im uruchomić kod i przechowywać dane na moim telefonie, ale nie mają do tego prawa i zastrzegam sobie prawo do cofnięcia obu uprawnień według własnego uznania.
dotancohen
2
@ S. Mitchell Chciałbym zachęcić odpowiedzi na wszystkie pytania, niezależnie od tego, dlaczego uważasz, że istnieją. Dobrze, że nie prowadzisz tej witryny!
Przeproś i przywróć Monikę

Odpowiedzi:

33

Istnieje wiele sposobów identyfikacji unikalnego urządzenia lub jego użytkownika:

  1. Przechowuj plik w jakimś (innym niż domyślny) katalogu : Już to powiedziałeś; aplikacje często mogą zapisywać w pamięci wewnętrznej urządzenia. Ta metoda jest łatwa, działa w trybie offline i nie jest najłatwiejsza do wykrycia (umieść plik w jakimś systemie podobnym do katalogu i nikt nie będzie chciał go usunąć).
  2. Śledź unikalne urządzenia ANDROID_ID(unikalne dla nowej instalacji) : ta metoda jest prosta, ale wymaga dostępu do Internetu, przynajmniej przy pierwszym użyciu. Nie jest bardzo nachalny i nie utrzymuje się w przypadku przywrócenia ustawień fabrycznych. Jest również unikalny dla każdego użytkownika. Zobacz te informacje .
  3. IMEI : bardzo nachalny, niezmienny, ale wymaga urządzenia obsługującego kartę SIM. IMEI jest unikalny dla każdego urządzenia, nie można go zmienić i nie podąża za użytkownikiem, co oznacza, że ​​jeśli sprzedasz swoje urządzenie, nowy właściciel zostanie przywitany ekranem informującym, że aplikacja była już na telefonie.
  4. Śledź konto Google użytkownika : jest to prawie to samo ANDROID_IDpodejście, ale wymaga wyraźnego pozwolenia (Android 6.0+) na dostęp. Aplikacje korzystające z ekosystemu kont Google (np. Najlepsze wyniki i osiągnięcia w grach) mogą w ten sposób śledzić określonego użytkownika i uzyskiwać więcej informacji niż tylko to, czy aplikacja została zainstalowana, czy nie.

2, 3 i 4 wymagają połączenia sieciowego i serwera po stronie dewelopera.

GiantTree
źródło
Mogę zarządzać częścią 2, 3 i 4 za pomocą Xprivacy. Sfałszuję każdego z nich. Ale pierwszy nie jest łatwy do wykrycia. Czy mimo to mogę wykryć tę lukę?
defalt 25.09.16
3
To nie jest luka, tylko nadużywana funkcja. Podobnie jak aplikacje przechowujące pliki w rejestrze. Niewiele możesz zrobić poza przeglądaniem wszystkich katalogów w pamięci wewnętrznej telefonu i szukaniem podejrzanych plików.
GiantTree,
1
Powodzenia w znalezieniu / zrobieniu tej aplikacji. System nie może ulec awarii z powodu braku pliku w pamięci wewnętrznej. Ogólnie rzecz biorąc, aplikacje zwykle używają tych samych ram, które używają tych samych plików, ale, jak już wskazałeś, plików tych nie można znaleźć (nie zawsze, ale przez większość czasu). Pliki zawierające rzeczy takie jak „id”, „user” lub podobne często zawierają taki identyfikator, a identyfikatory te są zwykle używane do celów reklamowych.
GiantTree,
2
@ S.Mitchell Nie Nigdy nie zbanowano mnie za żadne usługi online, aplikacje internetowe i gry online. Uważam jednak, że wiedza o tym, jak działa system za interfejsem, jest właściwym krokiem do przodu w rozwoju Androida.
defalt
8
@ user334283 „Nigdy nie wiem, jakiej nazwy pliku szukasz”. To nieprawda. Android, będący linuksowym systemem operacyjnym, ma stracenarzędzie, którego można użyć do śledzenia wszystkich wywołań systemowych. Musisz więc uruchomić aplikację za pomocą stracei sprawdzić wszystkie wywołania systemowe związane z plikami na urządzeniu, a zauważysz wszystkie pliki odczytane / sprawdzone przez aplikację. Pewnie: prawdopodobnie dość trudne do zrobienia na smartfonie, ale zdecydowanie możliwe .
Bakuriu
2

Nie jest podłączony do pamięci, ale do chmury. Tak pamięta, nawet jeśli usunąłeś swoje dane. Aby to wyłączyć, przejdź do aplikacji ustawień urządzenia, dotknij kont google w obszarze osobistym (dotknij konta, jeśli chcesz mieć wiele kont), a następnie wyłącz aplikacje, których nie chcesz automatycznie synchronizować.

Devin Ersoy
źródło
Automatyczna synchronizacja nie jest głównym problemem. Serwery innych firm upewniają się, że ich aplikacja może gromadzić Twój adres MAC, IMEI, identyfikator urządzenia, identyfikator reklamowy i przechowywać je na serwerach w celu ponownego wykrycia urządzenia w przyszłości. Sfałszowanie tych danych zachowa twoją prywatność, ale jeśli aplikacja pisze „wpisy rejestru”, jak w Windows, problem będzie niewykrywalny.
defalt 25.09.16
2

Odpowiedź GiantTree obejmuje to najlepiej, ale jest jeszcze jeden punkt do przemyślenia. Byłby to oczywiście „ ciemny wzorzec ”, ale identyfikacja ta może być również dokonana poprzez pobranie odcisków palców pewnych danych użytkownika - może to być postrzegane jako wariant w pierwszym punkcie („zachowaj plik”), ale byłoby trudniejsze do wykrycia i mniej wygodne unikać.

Jak duża jest to odporność, zależy od wybranych danych. Najbardziej oczywistą metodą byłoby sprawdzenie danych kontaktowych i użycie jakiejś formy odcisku palca; alternatywą może być użycie znaczników czasu zdjęć i innych metadanych. Oczywiście zmiany te zmieniają się w czasie, więc niezależnie od zastosowanej metody, po modyfikacji nadal musiałaby dać ścisłą odpowiedź (tak więc różni się ona od tradycyjnej funkcji skrótu). Nie ma też gwarancji, że użytkownik nie wyczyści danych śledzonych, ale w wielu przypadkach ludzie wolą tego nie robić.

Możesz spojrzeć na odciski palców przeglądarki, aby dowiedzieć się, jak to działa, nawet jeśli będzie nieco inaczej, ponieważ sprzęt telefoniczny jest zwykle bardziej jednolity niż sprzęt komputerowy. To powiedziawszy, dodanie niektórych szczegółów telefonu może nieco zawęzić odcisk palca.

Tam, gdzie to podejście się psuje, dotyczy to w szczególności sytuacji, gdy użytkownik zamienia telefon i zabiera swoje dane ze sobą na nowy telefon - w tym przypadku (chyba że dane telefonu trafią do odcisku palca) nowy telefon może zostać wykryty jako już zainstalowany, jak zadane pytanie. Wydaje się jednak dość prawdopodobne, że w scenariuszu, w którym aplikacja próbuje zablokować użytkownika, może to być pożądany rezultat (zamiast banowania samego telefonu)

Uwaga: w żaden sposób nie mówię, że jest to poprawne lub „dobre” jako sposób działania, jeśli piszesz aplikacje, ale rozsądne wydaje się omawianie tego, ponieważ tylko poprzez dyskusję ludzie dowiedzą się, czy są wystarczająco zaniepokojony, aby coś z tym zrobić i co to może być.

Neil
źródło
1

Istnieje klasa SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - której niektóre aplikacje używają do przechowywania danych preferencji. Te dane nie są usuwane po odinstalowaniu aplikacji. Jeśli aplikacja zostanie później ponownie zainstalowana, wszystkie wcześniej zapisane klucze SharedPreferences są nadal dla niej dostępne.

David Bennett
źródło
6
SharedPreferencessą faktycznie usuwane po odinstalowaniu aplikacji. Programiści mogą skonfigurować kopie zapasowe, ale domyślnie są one usuwane po odinstalowaniu. (Źródło: Jako programista odinstalowuję swoje aplikacje, aby wyczyścić preferencje. Zobacz także: stackoverflow.com/a/9815641/1438733 )
Eric,
1

Jest jeszcze jedna możliwość - użycie trwałych plików cookie z bardzo dużym „czasem wygaśnięcia”. Myślę, że w ten sposób wiele aplikacji tego samego programisty tradycyjnie udostępniało poświadczenia, gdy przechowywane poświadczenia za pośrednictwem funkcji kont nie były tak otwarte / znane publicznie.

computingfreak
źródło