Як деякі програми для Android пам'ятають, що це не перший раз, коли вони встановлюються?


33

Деякі програми для Android можуть пам'ятати, чи були вони встановлені на одному пристрої раніше. Припустимо, ви видалили додаток рік тому. Через рік, якщо ви знову встановите цей самий додаток, він зможе визнати, що він був встановлений раніше на тому ж телефоні.

Ця методика використовується в онлайн-програмах, щоб назавжди заборонити користувачам створювати новий акаунт знову, якщо їм заборонили користуватися послугою один раз. Коли такі користувачі створюють новий обліковий запис, перевстановивши програму пізніше, ці додатки можуть виявити свою "першу присутність" та надіслати цю інформацію серверам, щоб їх можна було знову заборонити.

Як вони це роблять навіть після очищення своїх даних та видалення їх повністю? Це означає, що вони зберігають якийсь файл десь у телефоні, який не видаляється після видалення. Як відключити це виявлення?


Чому ви хочете видалити цю інформацію? Чи мають автори програми права? Я не очікую, що це буде популярним коментарем, але подумайте, чи витратили ви час і проблеми на створення додатку.
С. Мітчелл

6
@ S.Mitchell Сьогодні Деякі розробники додатків та великі рекламні компанії намагаються отримати доступ до зайвих деталей невинних користувачів. Вони не тільки хочуть MAC-адресу, але й хочуть знати ваш wifi SSID.Google дав їм хороший урок, реалізуючи, які дозволи ви не хочете давати їм в android 6. Але рекламодавці тут не зупиняються, вони завжди знаходять спосіб обійти. Я хочу забезпечити цю систему конфіденційності.
дефальт

1
@ S.Mitchell Привіт Мітчелл. Ви можете судити мене неправильно через моє запитання. Ні, мені не заборонено жодних соціальних чи онлайн-сервісів, а також обміну стеками, якщо ви сумніваєтесь у цьому. Але для мене знання - це навчання. Я не виконую жодної практичної роботи з отриманими тут відповідями. Але, безумовно, вони допомагають зрозуміти, як все працює. Не можна створити захист від злому, якщо він не знає, як зламати. Така ж аналогія є і тут. Якщо я не можу дізнатися, як працюють додатки, немає сенсу, я зможу зробити його.
дефальт

7
@ S.Mitchell: Do app creators have rights?Насправді, на моєму телефоні, вони ні. Я можу дозволити їм запускати свій код і зберігати свої дані на моєму телефоні, але вони не мають права, і я залишаю за собою право відкликати обидві привілеї на мій розсуд.
dotancohen

2
@ S.Mitchell я б заохочував відповідати на всі запитання незалежно від того, чому ви вважаєте, що вони існують. добре, що ви не запускаєте цей сайт!
Вибачтесь та поверніть Моніку

Відповіді:


33

Існує кілька способів ідентифікації унікального пристрою або його користувача:

  1. Зберігати файл у деякому (не за замовчуванням) каталозі : Ви вже сказали це; програми часто можуть записувати у внутрішню пам’ять пристрою. Цей метод простий, працює в автономному режимі і його не найпростіше помітити (помістіть файл у якийсь системний каталог, і його ніхто не завадить видалити).
  2. Слідкуйте за унікальними пристроями ANDROID_ID(унікальними на свіжу установку) : цей спосіб простий, але вимагає доступу до Інтернету, принаймні при першому використанні. Це не дуже нав’язливо і не зберігається у разі скидання заводу. Це також унікально для кожного користувача. Дивіться цю інформацію .
  3. IMEI : Дуже нав'язливий, незмінний, але вимагає пристрою, що підтримує SIM. IMEI унікальний для кожного пристрою, його неможливо змінити і не слідкує за користувачем, це означає, що якщо ви продасте свій пристрій, нового власника буде привітано екраном, який повідомляє йому, що додаток вже було по телефону.
  4. Слідкуйте за обліковим записом Google у користувачі : це приблизно те саме, що ANDROID_IDпідхід, але вимагає явного дозволу (Android 6.0+) для доступу користувача. Таким чином, додатки, які використовують переваги екосистеми акаунта Google (наприклад, рекорди та досягнення в іграх), можуть таким чином відстежувати конкретного користувача та отримувати більше інформації, ніж лише те, встановлено чи ні додаток.

2, 3 та 4 вимагають підключення до мережі та сервера на стороні розробника.


Я можу керувати 2,3 та четвертою частиною за допомогою Xprivacy. Я буду підробляти кожен з них. Але перше, що нелегко помітити. Чи все-таки я можу виявити цю вразливість?
дефальт

3
Це не вразливість, а лише зловживання функцією. Так само, як програми, що зберігають файли в реєстрі. Ви не можете багато чого окрім того, щоб пройти всі каталоги у внутрішній пам’яті телефону та шукати підозрілі файли.
GiantTree

1
Успіхів знайти / зробити цю програму. Система не може вийти з ладу через відсутній файл у внутрішній пам’яті. Як правило, програми, як правило, використовують ті самі рамки, що використовують ті самі файли, але, як ви вже зазначали, ці файли неможливо знайти (не завжди, але в більшості випадків). Файли, які містять такі речі, як "id", "user" або подібні, часто містять такий ідентифікатор, і ці ідентифікатори зазвичай використовуються для реклами.
GiantTree

2
@ S.Mitchell Ні Ніколи мені не забороняли будь-які онлайн-сервіси, веб-додатки та онлайн-ігри. Але я вважаю, що знання про те, як працює система за її інтерфейсом, - це правильний крок для просування вперед в розвитку Android.
дефальт

8
@ user334283 "ніколи не знаю, яке ім'я файлу ви шукаєте". Це помилково. Android, будучи ОС Linux, має straceутиліту, яку можна використовувати для відстеження всіх системних викликів. Тож вам потрібно запустити додаток за допомогою straceта перевірити всі системні дзвінки, пов’язані з файлами на пристрої, і ви помітите всі файли, прочитані / перевірені на наявність цього додатка. Звичайно: напевно, це досить важко зробити на смартфоні, але, безумовно, це можливо .
Бакуріу

2

Він пов'язаний не зі сховищем, а з хмарою. Саме так воно запам'ятовується, навіть якщо ви видалили свої дані. Щоб вимкнути це, перейдіть у додаток налаштувань свого пристрою, торкніться облікових записів google під особистим (натисніть потрібний обліковий запис, якщо у вас є кілька облікових записів), а потім вимкніть програми, які не хочете автоматично синхронізувати.


Автосинхронізація не є кореневою проблемою. Сторонні сервери переконайтеся, що їх додаток здатний збирати вашу MAC-адресу, IMEI, ідентифікатор пристрою, ідентифікатор реклами та зберігати це на серверах для подальшого виявлення пристрою в майбутньому. Підробляння цих даних збереже вашу конфіденційність, але якщо додаток пише "записи реєстру", як у Windows, проблема не буде виявлена.
дефальт

2

Відповідь GiantTree найкраще висвітлює це, але є ще один момент, про який слід подумати. Очевидно, це було б " темним шаблоном ", але це ідентифікація може бути здійснена також за допомогою відбитків пальців певних даних користувачів - це може розглядатися як варіант у його першому пункті ("зберігати файл"), але це було б важче виявити і менш зручно уникати.

Наскільки ця пружність залежатиме від обраних даних. Найбільш очевидним методом було б перегляд контактних даних та використання певної форми відбитків цього; Альтернативою може бути використання часових позначок фотографій та інших метаданих. Очевидно, що ці зміни змінюються з часом, тому який би метод не застосовувався, все-таки слід дати відповідь після модифікації (тому він відрізняється від традиційної хеш-функції). Також немає гарантії, що користувач не просто витирає відстежені дані, але у багатьох випадках люди вважають за краще не робити цього.

Ви можете подивитися на відбитки пальців браузера, щоб зрозуміти, як це працює, хоча це буде дещо іншим, оскільки апаратне забезпечення телефону, як правило, більш рівномірне, ніж апаратне забезпечення ПК. Однак, додавання певних деталей телефону може допомогти трохи зменшити відбиток пальця.

Якщо такий підхід порушується, зокрема, якщо користувач перемикає телефони та переносить їхні дані з собою на новий телефон - у цьому випадку (якщо деталі телефону не потраплять у відбиток пальців) новий телефон може бути виявлений як уже встановлений, як поставлене питання. Однак видається цілком ймовірним, що в сценарії, коли програма намагається заборонити користувача, це насправді може бути бажаним результатом (а не забороною конкретного телефону)

Зверніть увагу: я жодним чином не кажу, що це правильно чи "добре" як спосіб роботи, якщо ви пишете додатки, але здається, що розумно обговорювати це, оскільки лише через обговорення люди зрозуміють, чи є вони достатньо стурбований, щоб зробити щось з цього приводу і що це може бути.


1

Існує клас SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - який деякі додатки використовують для зберігання даних переваг. Ці дані не видаляються під час видалення програми. Якщо програму пізніше встановити, усі збережені раніше клавіші SharedPreferences доступні для неї.


6
SharedPreferencesфактично видаляються при видаленні програми. Існують способи для розробників створити резервні копії, але за замовчуванням вони видаляються після видалення. (Джерело: Як розробник я видаляю свої програми, щоб очистити налаштування. Також дивіться: stackoverflow.com/a/9815641/1438733 )
Eric

1

Є ще одна можливість - використання стійких файлів cookie з дуже великим «часом закінчується». Я думаю, саме так кілька додатків від одного розробника використовувались для традиційного обміну обліковими даними, коли збережені облікові дані за допомогою функції облікових записів не були такими відкритими / відомими широкій публіці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.