Làm thế nào để một số ứng dụng Android nhớ rằng đây không phải là lần đầu tiên chúng được cài đặt?


33

Một số ứng dụng Android có thể nhớ liệu chúng đã được cài đặt trên cùng một thiết bị trước đó chưa. Giả sử bạn đã gỡ cài đặt một ứng dụng một năm trước. Sau một năm nếu bạn cài đặt lại ứng dụng đó, ứng dụng đó sẽ có thể nhận ra rằng nó đã được cài đặt trước đó trên cùng một điện thoại.

Kỹ thuật này được các ứng dụng trực tuyến sử dụng để cấm vĩnh viễn người dùng tạo lại tài khoản mới nếu họ bị cấm sử dụng dịch vụ một lần. Khi những người dùng như vậy tạo một tài khoản mới bằng cách cài đặt lại ứng dụng sau đó, những ứng dụng này có thể phát hiện "sự hiện diện lần đầu" của họ và gửi thông tin này đến các máy chủ để người dùng có thể bị cấm một lần nữa.

Làm thế nào họ làm điều đó ngay cả sau khi xóa dữ liệu của họ và gỡ cài đặt hoàn toàn? Điều đó có nghĩa là họ giữ một số tập tin ở đâu đó trong điện thoại, không bị xóa sau khi gỡ cài đặt. Làm cách nào để tắt tính năng phát hiện này?


Tại sao bạn muốn xóa thông tin này? Người tạo ứng dụng có quyền không? Tôi không hy vọng đây sẽ là một nhận xét phổ biến, nhưng hãy xem xét liệu bạn có mất thời gian và rắc rối để tạo một ứng dụng hay không.
S. Mitchell

6
@ S.Mitchell Hôm nay Một số nhà phát triển ứng dụng và công ty quảng cáo lớn cố gắng truy cập các chi tiết không cần thiết từ người dùng vô tội. Họ không chỉ muốn Địa chỉ MAC mà họ còn muốn biết SSID wifi của bạn. Google đã cho họ một bài học tốt bằng cách triển khai các quyền mà bạn không muốn cung cấp cho họ trong Android 6. Nhưng các nhà quảng cáo không dừng lại ở đây, họ luôn tìm thấy cách để có được xung quanh. Tôi muốn đảm bảo hệ thống riêng tư này.
hoãn lại

1
@ S.Mitchell Xin chào. Bạn có thể đánh giá tôi sai vì câu hỏi của tôi. Không, tôi không bị cấm đối với bất kỳ dịch vụ xã hội hoặc trực tuyến nào và cũng không được trao đổi ngăn xếp nếu bạn nghi ngờ điều đó. Nhưng đối với tôi biết là học tập. Tôi không làm bất kỳ công việc thực tế nào với câu trả lời tôi đã nhận được ở đây. Nhưng chắc chắn họ giúp người ta biết mọi thứ hoạt động như thế nào. Người ta không thể tạo bảo mật chống hack nếu không biết cách hack. Sự tương tự tương tự là ở đây. Nếu tôi không thể học được cách các ứng dụng hoạt động thì sẽ không có điểm nào tôi có thể tạo ra.
hoãn lại

7
@ S.Mitchell: Do app creators have rights?Trên thực tế, trên điện thoại của tôi , họ không. Tôi có thể cho phép họ chạy mã của họ và lưu trữ dữ liệu của họ trên điện thoại của tôi, nhưng họ không có quyền và tôi có quyền thu hồi cả hai đặc quyền theo quyết định của tôi.
dotancohen

2
@ S.Mitchell tôi sẽ khuyến khích câu trả lời cho tất cả các câu hỏi bất kể lý do tại sao bạn nghĩ rằng chúng tồn tại. điều tốt là bạn không chạy trang web này!
lỗi và phục hồi Monica

Câu trả lời:


33

Có nhiều cách để xác định một thiết bị duy nhất hoặc người dùng của thiết bị:

  1. Giữ một tệp trong một số thư mục (không mặc định) : Bạn đã nói điều này; các ứng dụng thường có thể ghi vào bộ nhớ trong của thiết bị. Phương pháp này rất dễ, hoạt động ngoại tuyến và không dễ phát hiện nhất (đặt tệp vào một số thư mục giống như hệ thống và không ai sẽ xóa nó).
  2. Theo dõi một thiết bị duy nhất ANDROID_ID(duy nhất cho mỗi lần cài đặt mới) : phương pháp này đơn giản nhưng yêu cầu truy cập internet, ít nhất là trong lần sử dụng đầu tiên. Nó không xâm phạm và không tồn tại trong trường hợp khôi phục cài đặt gốc. Nó cũng là duy nhất cho mỗi người dùng. Xem thông tin này .
  3. IMEI : Rất xâm nhập, không thể thay đổi nhưng yêu cầu thiết bị có khả năng SIM. IMEI là duy nhất cho mỗi thiết bị, không thể thay đổi và không theo dõi người dùng, nghĩa là nếu bạn bán thiết bị của mình, chủ sở hữu mới sẽ được chào đón bằng một màn hình cho anh ta biết rằng ứng dụng đã có trên điện thoại.
  4. Theo dõi tài khoản Google của người dùng : Cách này khá giống với ANDROID_IDcách tiếp cận nhưng yêu cầu sự cho phép rõ ràng (Android 6.0+) từ người dùng để truy cập. Do đó, các ứng dụng tận dụng hệ sinh thái tài khoản Google (ví dụ: điểm cao và thành tích trong trò chơi) có thể theo dõi một người dùng cụ thể và có được nhiều thông tin hơn so với việc ứng dụng đã được cài đặt hay chưa.

2, 3 và 4 yêu cầu kết nối mạng và máy chủ ở phía nhà phát triển.


Tôi có thể quản lý phần 2,3 & 4 bằng Xprivacy. Tôi sẽ giả mạo từng người trong số họ. Nhưng điều đầu tiên, đó là điều không dễ nhận ra. Có dù sao tôi có thể phát hiện lỗ hổng này?
hoãn lại

3
Đây không phải là một lỗ hổng, chỉ là một tính năng bị lạm dụng. Giống như các ứng dụng giữ các tập tin trong sổ đăng ký. Bạn không thể làm gì nhiều ngoài việc đi qua tất cả các thư mục trên bộ nhớ trong của điện thoại và tìm kiếm các tệp đáng ngờ.
GiantTree

1
Chúc may mắn tìm / làm ứng dụng này. Hệ thống không thể sập do một số tệp bị thiếu trên bộ nhớ trong. Nói chung, các ứng dụng có xu hướng sử dụng cùng một khung sử dụng cùng một tệp nhưng, như bạn đã chỉ ra, các tệp đó không thể tìm thấy (không phải luôn luôn, nhưng hầu hết thời gian). Các tệp chứa những thứ như "id", "người dùng" hoặc tương tự thường chứa ID như vậy và những ID đó thường được sử dụng để quảng cáo.
GiantTree

2
@ S.Mitchell Không Tôi chưa bao giờ bị cấm đối với bất kỳ dịch vụ trực tuyến, ứng dụng web và chơi trò chơi trực tuyến nào. Nhưng tôi tin rằng việc biết về cách hệ thống hoạt động đằng sau giao diện của nó là bước đi đúng đắn để phát triển Android.
hoãn lại

8
@ user334283 "không bao giờ biết tên tệp bạn đang tìm kiếm". Điều này là sai. Android, là một hệ điều hành linux, có stracetiện ích có thể được sử dụng để theo dõi tất cả các cuộc gọi hệ thống. Vì vậy, bạn phải khởi động ứng dụng của mình bằng cách sử dụng stracevà kiểm tra tất cả các cuộc gọi hệ thống liên quan đến các tệp trên thiết bị và bạn sẽ phát hiện ra tất cả các tệp được đọc / kiểm tra sự tồn tại của ứng dụng. Chắc chắn: có lẽ khá khó để làm trên điện thoại thông minh nhưng chắc chắn có thể .
Bakuriu

2

Nó không được kết nối với lưu trữ, mà với đám mây. Đó là cách nó ghi nhớ mặc dù bạn đã xóa dữ liệu của mình. Để tắt tính năng này, hãy truy cập ứng dụng cài đặt trên thiết bị của bạn, nhấn vào tài khoản google theo cá nhân (nhấn vào tài khoản bạn muốn nếu bạn có nhiều tài khoản), sau đó tắt các ứng dụng bạn không muốn tự động đồng bộ hóa.


Tự động đồng bộ hóa không phải là vấn đề gốc. Các máy chủ của bên thứ ba đảm bảo rằng ứng dụng của họ có khả năng thu thập Địa chỉ MAC, IMEI, ID thiết bị, ID quảng cáo và lưu trữ này đến các máy chủ để phát hiện lại thiết bị trong tương lai. Việc giả mạo các chi tiết này sẽ giữ quyền riêng tư của bạn nhưng nếu một ứng dụng viết "mục đăng ký" như trong vấn đề về windows sẽ không thể phát hiện được.
hoãn lại

2

Câu trả lời của GiantTree bao quát nó tốt nhất, nhưng có một điểm khác để suy nghĩ. Đây rõ ràng sẽ là một " mẫu tối " nhưng nhận dạng này cũng có thể được thực hiện thông qua việc lấy dấu vân tay dữ liệu người dùng nhất định - đây có thể được xem là một biến thể ở điểm đầu tiên của anh ấy ("giữ một tệp") nhưng sẽ khó phát hiện hơn và kém thuận tiện hơn tránh.

Khả năng phục hồi này sẽ phụ thuộc vào dữ liệu được chọn. Phương pháp rõ ràng nhất sẽ là xem xét chi tiết liên lạc và sử dụng một số hình thức dấu vân tay này; một sự thay thế có thể là sử dụng dấu thời gian của ảnh và siêu dữ liệu khác. Rõ ràng những thay đổi này theo thời gian vì vậy dù sử dụng phương pháp nào vẫn cần đưa ra câu trả lời chặt chẽ sau khi sửa đổi (vì vậy nó khác với hàm băm truyền thống). Ngoài ra, không có gì đảm bảo rằng người dùng không chỉ đơn giản xóa sạch dữ liệu được theo dõi, nhưng trong nhiều trường hợp, mọi người sẽ không muốn làm điều này.

Bạn có thể muốn xem dấu vân tay của trình duyệt để hiểu cách thức hoạt động của nó, mặc dù nó sẽ hơi khác một chút vì phần cứng điện thoại thường đồng đều hơn phần cứng PC. Điều đó nói rằng, việc bổ sung một số chi tiết điện thoại nhất định có thể giúp thu hẹp dấu vân tay xuống một chút.

Trường hợp phương pháp này bị hỏng cụ thể là nếu người dùng chuyển điện thoại và mang thông tin chi tiết của họ sang điện thoại mới - trong trường hợp này (trừ khi chi tiết điện thoại đi vào dấu vân tay), điện thoại mới có thể được phát hiện là đã cài đặt, như câu hỏi Tuy nhiên, dường như trong một kịch bản mà một ứng dụng đang cố gắng cấm người dùng, đây thực sự có thể là một kết quả mong muốn (thay vì cấm chính điện thoại cụ thể)

Xin lưu ý: Không có cách nào tôi nói điều này đúng hay "tốt" như một cách vận hành nếu bạn đang viết ứng dụng, nhưng có vẻ hợp lý khi thảo luận về nó vì chỉ thông qua thảo luận rằng mọi người sẽ biết liệu chúng có phải là đủ quan tâm để làm một cái gì đó về nó và những gì có thể được.


1

Có một lớp SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - mà một số ứng dụng sử dụng để lưu trữ dữ liệu tùy chọn. Dữ liệu này không bị xóa khi gỡ cài đặt ứng dụng. Nếu ứng dụng này được cài đặt lại sau đó, mọi khóa SharedPreferences đã lưu trước đó vẫn có sẵn cho nó.


6
SharedPreferencesthực sự bị xóa khi gỡ cài đặt ứng dụng. Có nhiều cách để các nhà phát triển thiết lập sao lưu, nhưng theo mặc định, chúng sẽ bị xóa khi gỡ cài đặt. (Nguồn: Là nhà phát triển, tôi gỡ cài đặt ứng dụng của mình để xóa tùy chọn. Ngoài ra, hãy xem: stackoverflow.com/a/9815641/1438733 )
Eric

1

Có một khả năng khác - sử dụng cookie liên tục với "thời gian hết hạn" rất lớn. Tôi đoán đó là cách nhiều ứng dụng từ cùng một nhà phát triển được sử dụng để chia sẻ thông tin đăng nhập theo truyền thống, khi thông tin đăng nhập được lưu trữ thông qua tính năng tài khoản không được công khai / biết đến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.