某些android应用如何记住这不是第一次安装?


33

有些Android应用程序可以记住它们是否先前已安装在同一设备上。假设您在一年前卸载了一个应用程序。一年后,如果您再次安装相同的应用程序,则该应用程序将能够识别出它以前是在同一部手机上安装的。

如果在线用户被禁止一次使用该服务,则在线应用程序将使用该技术永久禁止用户再次创建新帐户。当此类用户通过稍后重新安装应用程序来创建新帐户时,这些应用程序将能够检测到“首次访问”并将此信息发送到服务器,从而可以再次禁止该用户。

即使清除了数据并将其完全卸载后,他们又如何处理?这意味着他们将一些文件保留在手机中的某个位置,卸载后不会删除。如何禁用此检测?


为什么要删除此信息?应用创作者有权利吗?我不希望这是受欢迎的评论,但请考虑您是否花了时间和精力来创建应用。
S. Mitchell

6
@ S.Mitchell今天,一些应用程序开发人员和大型广告公司试图从无辜的用户那里访问不必要的详细信息。他们不仅需要MAC地址,而且还想知道您的wifiSSID。Google通过在Android 6中实现您不想授予他们的权限,为他们提供了一个很好的教训。出行的方式。我想确保这个隐私系统。
defalt

1
@ S.Mitchell您好Mitchell。您可能因为我的问题而判断我错了。不,我不禁止任何社交或在线服务,也不会禁止堆栈交换,如果您对此表示怀疑。但是对我来说,知道就是学习。我在这里收到的答案没有做任何实际的工作。但是肯定他们可以帮助人们了解事情的发展。如果不知道如何破解,就无法创建反黑客安全性。同样的比喻在这里。如果我无法学习应用程序的工作原理,那我将无能为力。
defalt

7
@ S.Mitchell:Do app creators have rights?实际上,在我的电话上没有。我可能会让他们运行他们的代码并将其数据存储在我的手机上,但他们没有权利,我保留自行决定撤销这两项特权的权利。
dotancohen

2
@ S.Mitchell我鼓励所有问题的答案,无论您为什么认为它们存在。好东西,你不要经营这个网站!
道歉并恢复Monica

Answers:


33

标识唯一设备或其用户的方法有多种:

  1. 将文件保存在某个(非默认)目录中:您已经说过了;应用通常可以写入设备的内部存储。这种方法很容易,可以离线使用,而且不是最容易发现的(将文件放在类似系统的目录中,没有人会费心删除它)。
  2. 跟踪唯一的设备ANDROID_ID(每个全新安装都是唯一的):此方法很简单,但至少在首次使用时需要Internet访问。它不是很麻烦,即使恢复出厂设置也不会持久。每个用户也是唯一的。请参阅此信息
  3. IMEI:非常侵入性,不可更改,但需要具有SIM卡功能的设备。IMEI对于每台设备来说都是唯一的,无法更改且不会跟随用户,这意味着如果您出售设备,则新所有者将看到一个屏幕,告诉他该应用程序已在手机上。
  4. 遵循用户的Google帐户:与ANDROID_ID方法几乎相同,但是需要用户的显式权限(Android 6.0+)才能访问。因此,利用Google帐户生态系统的应用程序(例如游戏中的高分和成就)可以关注特定用户并获得更多信息,而不仅仅是是否已安装该应用程序。

2、3和4需要网络连接,并且在开发人员侧需要一台服务器。


我可以使用Xprivacy管理第2、3和4部分。我会欺骗他们每个人。但是第一个不容易发现。无论如何,我可以检测到此漏洞吗?
defalt 2013年

3
这不是漏洞,只是滥用的功能。与将文件保存在注册表中的应用程序非常相似。除了浏览手机内部存储中的所有目录并查找可疑文件外,您无能为力。
巨人树

1
祝您好运,找到/制作此应用。由于内部存储中缺少某些文件,因此系统不会崩溃。通常,应用程序倾向于使用使用相同文件的相同框架,但是,正如您已经指出的那样,这些文件是不可能找到的(并非总是如此,但大多数时候)。包含“ id”,“ user”或类似名称的文件通常包含此类ID,而这些ID通常用于广告。
巨人树

2
@ S.Mitchell不,我从未被禁止任何在线服务,Web应用程序和在线游戏。但我相信,了解系统在其界面背后的工作方式是前进android开发的正确步骤。
defalt 2016年

8
@ user334283“永远不知道您要搜索的文件名”。这是错误的。作为Linux操作系统的Android具有strace可用于跟踪所有系统调用的实用程序。因此,您必须使用来启动您的应用,strace并检查与设备上文件相关的所有系统调用,然后才能发现该应用读取/检查的文件是否存在。当然:在智能手机上可能很难做,但绝对有可能
巴库里

2

它不连接到存储,但连接到云。即使删除了数据,它也能记住它。为了关闭此功能,请转到设备的设置应用,在“个人”(如果您有多个帐户,请点按您的帐户)下点按google帐户,然后关闭您不想自动同步的应用。


自动同步不是根本问题。第三方服务器确保其应用程序能够收集您的MAC地址,IMEI,设备ID,广告ID,并将其存储到服务器,以便将来再次检测该设备。欺骗这些细节将保护您的隐私,但是如果应用程序正在编写Windows中的“注册表项”,则将无法检测到问题。
defalt

2

GiantTree的答案最能说明问题,但还需要考虑另一点。显然这将是一个“ 暗模式 ”,但是也可以通过对某些用户数据进行指纹识别来完成此识别-这可以看作是他的第一点的变体(“保留文件”),但将很难检测且不太方便避免。

弹性如何取决于所选择的数据。最明显的方法是查看联系方式,并使用某种形式的指纹。另一种选择是使用照片时间戳和其他元数据。显然,这些随着时间的变化而变化,因此无论使用哪种方法,修改后仍然需要给出一个精确的答案(因此它不同于传统的哈希函数)。此外,也不能保证用户不会简单地擦除跟踪的数据,但是在许多情况下,人们会宁愿不这样做。

您可能希望查看浏览器指纹以了解其工作原理,尽管由于手机硬件通常比PC硬件更为统一,所以指纹识别会有所不同。也就是说,添加某些电话详细信息可能会帮助缩小指纹范围。

这种方法特别适用于用户切换电话并将其详细信息带到新电话上的情况-在这种情况下(除非电话详细信息进入指纹中),可能会检测到新电话已经安装,如问题所问。但是,在应用程序试图禁止用户的情况下,这很有可能实际上是期望的结果(而不是禁止特定手机本身)

请注意:如果您正在编写应用程序,那么我绝不是说这是正确的或“好的”操作方式,但是讨论它似乎是合理的,因为只有通过讨论,人们才会弄清楚他们是否足够关注以便对此做些什么以及可能是什么。


1

有一个SharedPreferences类-https: //developer.android.com/reference/android/content/SharedPreferences.html-一些应用程序用于存储首选项数据。卸载应用程序后,不会删除此数据。如果稍后重新安装该应用程序,则任何以前保存的SharedPreferences密钥仍然可用。


6
SharedPreferences在卸载应用程序时实际上被删除。开发人员可以通过多种方式来设置备份,但是默认情况下,它们会在卸载时被删除。(来源:作为开发人员,我卸载了我的应用程序以清除首选项。另请参见:stackoverflow.com/a/9815641/1438733
Eric

1

还有另一种可能性-使用具有很大“到期时间” 的持久性cookie。我想这是同一位开发人员的多个应用程序过去习惯于传统上共享凭据的方式,而通过帐户功能存储的凭据并不那么公开/不为公众所知。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.