一部のAndroidアプリは、これが初めてインストールされるのではないことをどのように覚えていますか?


33

一部のAndroidアプリは、以前に同じデバイスにインストールされたかどうかを記憶できます。1年前にアプリをアンインストールしたとします。同じアプリを再度インストールすると、1年後にそのアプリは同じ電話に以前にインストールされたことを認識できるようになります。

この手法は、ユーザーがサービスの使用を1回禁止された場合、ユーザーが再び新しいアカウントを作成することを永久に禁止するために、オンラインアプリケーションで使用されます。そのようなユーザーが後でアプリケーションを再インストールして新しいアカウントを作成すると、これらのアプリは「初めてのプレゼンス」を検出し、この情報をサーバーに送信してユーザーを再度禁止できます。

データを消去し、完全にアンインストールした後でも、どうしますか?これは、アンインストール後に削除されない、電話のどこかにファイルを保持することを意味します。この検出を無効にするにはどうすればよいですか?


なぜこの情報を削除したいのですか?アプリの作成者には権利がありますか?これが一般的なコメントになるとは思いませんが、アプリを作成するのに時間と手間をかけたかどうかを検討してください。
S.ミッチェル

6
@ S.Mitchell Today一部のアプリ開発者や大手広告会社は、無実のユーザーから不必要な詳細にアクセスしようとしています。MACアドレスが必要なだけでなく、wifi SSIDも知りたいと思っています。Googleは、Android 6で与えたくない許可を実装することにより、良い教訓を与えました。しかし、広告主は、回避する方法。このプライバシーシステムを確保したいです。
defalt

1
@ S.Mitchellこんにちはミッチェル。あなたは私の質問のために私を間違っていると判断しているかもしれません。いいえ、私はあなたがそれを疑うならば、いかなる社会的またはオンラインサービスからもスタック交換からも禁止されていません。しかし、私にとっては学んでいることを知っています。ここで受け取った答えを実際に使っているわけではありません。しかし、彼らは間違いなく、物事がどのように機能するかを知るのに役立ちます。ハッキングの方法がわからないと、アンチハッキングセキュリティを作成できません。同じ類推がここにあります。アプリがどのように機能するかを理解できない場合、アプリを作成することはできません。
16

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には、ネットワーク接続と開発者側のサーバーが必要です。


Xprivacyを使用して2,3&4番目の部分を管理できます。それらのそれぞれを偽装します。しかし、最初のものは、見つけるのが簡単ではありません。とにかくこの脆弱性を検出できますか?
-16:

3
これは脆弱性ではなく、単に悪用された機能です。レジストリにファイルを保持するアプリケーションによく似ています。電話機の内部ストレージのすべてのディレクトリを調べて、疑わしいファイルを探す以外にできることはあまりありません。
ジャイアントツリー

1
このアプリを見つけて、作ってください。内部ストレージにファイルがないため、システムがクラッシュすることはありません。一般に、アプリは同じファイルを使用する同じフレームワークを使用する傾向がありますが、既に指摘したように、それらのファイルを見つけることは不可能です(常にではなく、ほとんどの場合)。「id」、「user」などのようなものを含むファイルには多くの場合、そのようなIDが含まれ、それらのIDは通常広告に使用されます。
ジャイアントツリー

2
@ S.Mitchellいいえ、私はオンラインサービス、Webアプリケーション、オンラインゲームから禁止されたことはありません。しかし、システムがインターフェースの背後でどのように機能するかを知ることは、Android開発を進めるための正しいステップだと思います。
16

8
@ user334283「検索しているファイル名がわからない」。これは誤りです。Linux OSである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の使用。アカウント機能を介して保存された資格情報が公開されていない/公開されていないときに、同じ開発者の複数のアプリが従来資格情報を共有していた方法だと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.