(57)【要約】  複数のコンポーネントから成る複雑な複合ソフトウェアアプリケーションの時代にあっては、マルウェア、セキュリティリスク、データプライバシー又はリソース使用に対処するアプリケーションの挙動を検出し、識別し、制御することが困難な場合がある。ソフトウェアアプリケーションを分析してこれらのコンポーネントを特定し、各コンポーネントに関連する挙動を識別する。既知のコンポーネントの類似性に関してコンポーネントを分析することもできる。挙動は、個人識別情報又は装置情報の使用、又はユーザインターフェイスの表示、通知、ネットワーク通信、及びファイルの読み取り又は書き込み動作を含む、装置上のアプリケーションが行うあらゆる動作を含むことができる。アプリケーション及びそのコンポーネントの挙動を制御又は制限するためのポリシーを定義して適用することができる。【選択図】図１
2015527629.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ可読命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、実行時にコンピュータシステムに、
ユーザのコンピュータ装置にインストールされたアプリケーションに関し、該アプリケーションのコンポーネントを特定すること、
第１のコンポーネントに関連する第１の挙動を含む、前記コンポーネントの各々に関連する少なくとも１つの挙動を、少なくとも１つのプロセッサを介して識別すること、
を行わせる、
ことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項２】
前記命令はさらに、前記コンピュータシステムに、前記コンピュータ装置のユーザディスプレイ上に前記コンポーネントの識別を提示させる、
ことを特徴とする請求項１に記載の記憶媒体。
【請求項３】
前記命令はさらに、前記コンピュータシステムに、前記ユーザの少なくとも１つの挙動的選好を決定させる、
ことを特徴とする請求項１に記載の記憶媒体。
【請求項４】
前記命令はさらに、前記コンピュータシステムに、前記少なくとも１つの挙動的選好に少なくとも部分的に基づくユーザポリシーを記憶し、前記コンピュータ装置にインストールされた新たなアプリケーションに対して前記ユーザポリシーを実行させる、
ことを特徴とする請求項３に記載の記憶媒体。
【請求項５】
前記命令はさらに、前記第１のコンポーネントに、サーバのクエリからの結果に従って実行させる、
ことを特徴とする請求項１に記載の記憶媒体。
【請求項６】
前記命令はさらに、前記コンピュータシステムに、前記アプリケーションをインストールしたことに応答して、アイデンティティサーバに記憶されている前記ユーザのユーザポリシーへの準拠性を確認するために前記アプリケーションをスキャンさせる、
ことを特徴とする請求項１に記載の記憶媒体。
【請求項７】
前記命令はさらに、前記コンピュータシステムに、前記コンポーネントに関連する識別された挙動に基づいて前記コンポーネントの各々のためのユーザポリシーを実行させる、
ことを特徴とする請求項１に記載の記憶媒体。
【請求項８】
前記命令はさらに、前記コンピュータシステムに、前記コンポーネントのための前記ユーザポリシー内の許容される挙動を前記識別された挙動と比較させる、
ことを特徴とする請求項７に記載の記憶媒体。
【請求項９】
前記許容される挙動を比較することは、１又はそれ以上の他のコンピュータ装置上のコンポーネントで観察されるデータリポジトリからの挙動を特定することを含む、
ことを特徴とする請求項８に記載の記憶媒体。
【請求項１０】
前記命令はさらに、前記コンピュータ装置に、前記データリポジトリからの前記挙動を特定したことに応答して、前記コンピュータ装置上の前記コンポーネントのうちの１つ又はそれ以上の実行を設定又は無効化させる、
ことを特徴とする請求項９に記載の記憶媒体。
【請求項１１】
第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータを記憶するデータリポジトリと、
少なくとも１つのプロセッサと、
命令を記憶するメモリと、
を備えたシステムであって、前記命令は、コンピュータ装置上で実行された時に、該コンピュータ装置に、
ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、前記新たなコンポーネントと前記コンポーネントデータの比較を行うこと、及び、
前記比較に基づいて、前記新たなコンポーネントが前記第１の既知のコンポーネントに対応する旨の決定を行うこと、
を行わせる、
ことを特徴とするシステム。
【請求項１２】
前記命令はさらに、前記コンピュータ装置に、前記決定に応答して、
前記第１の既知のコンポーネントの第１の既知の挙動を前記ユーザのポリシーと比較すること、及び、
前記新たなコンポーネントの観察される挙動を前記ユーザポリシーと比較すること、
の少なくとも一方を行わせる、
ことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記コンポーネントデータはコンポーネントアイデンティティを含み、各コンポーネントアイデンティティは、既知のコンポーネントのそれぞれの識別情報に対応する、
ことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記決定は、前記コンピュータ装置に前記新たなコンポーネントをインストールする前に行われる、
ことを特徴とする請求項１１に記載のシステム。
【請求項１５】
前記命令はさらに、前記コンピュータ装置に、前記比較に類似性値を関連付けさせ、前記決定は、前記類似性値が閾値よりも大きいことに応答して行われる、
ことを特徴とする請求項１１に記載のシステム。
【請求項１６】
前記比較は、前記新たなコンポーネントの構造に少なくとも部分的に基づき、前記構造は、パッケージング構造、モジュール構造及び実行可能コード構造から成る群から選択される、
ことを特徴とする請求項１１に記載のシステム。
【請求項１７】
前記比較は、前記新たなコンポーネントの実行可能コード構造に少なくとも部分的に基づく、
ことを特徴とする請求項１１に記載のシステム。
【請求項１８】
前記コンポーネントデータは、既知の構造的特徴及び既知の挙動的特徴を含む、
ことを特徴とする請求項１６に記載のシステム。
【請求項１９】
前記比較を行うことは、前記既知の構造的特徴及び前記既知の挙動的特徴を前記新たなコンポーネントの識別された特徴と比較することを含む、
ことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記命令はさらに、前記コンピュータ装置に、前記識別された特徴が前記既知の構造的特徴及び前記既知の挙動的特徴の少なくとも一方と異なると判定された時に通知を生成させる、
ことを特徴とする請求項１９に記載のシステム。
【請求項２１】
前記通知を生成することは、前記コンピュータ装置に警告を送ることを含む、
ことを特徴とする請求項２０に記載のシステム。
【請求項２２】
第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータをメモリに記憶するステップと、
ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、少なくとも１つのプロセッサを介して前記新たなコンポーネントと前記コンポーネントデータの比較を行うステップと、
前記比較に基づいて、前記新たなコンポーネントが前記第１の既知のコンポーネントに対応する旨の決定を行うステップと、
を含むことを特徴とする方法。
【請求項２３】
前記新たなコンポーネントは、前記第１のアプリケーションからのコード、及び前記第１のアプリケーション内のライブラリから成る群から選択される、
ことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記新たなコンポーネントが複数の異なるアプリケーションの各々に含まれ、前記新たなコンポーネントは、コンピュータ装置上で実行された時の一連の挙動に対応し、前記コンポーネントデータは、前記一連の挙動を含む挙動データを含む、
ことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記一連の挙動を前記新たなコンポーネントに関連付けるステップをさらに含む、
ことを特徴とする請求項２４に記載の方法。
【請求項２６】
前記異なるアプリケーションのそれぞれを実行した時に複数のコンピュータ装置の各々を観察し、該複数のコンピュータ装置の各々が前記一連の挙動を示す、
ことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記決定は、前記コンピュータ装置上の前記新たなコンポーネントの動作の背景に部分的に基づく、
ことを特徴とする請求項２４に記載の方法。
【請求項２８】
前記背景は、前記第１のアプリケーションの実行中に該第１のアプリケーションがユーザに対して可視的に存在しながら位置情報がアクセスを受けていることであり、前記一連の挙動は、前記コンピュータ装置の位置を特定することを含む、
ことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記コンポーネントデータは、各々が少なくとも１つの受け入れ可能な挙動に関連する複数の背景を含む、
ことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記コンポーネントデータは、既知のコンポーネントのリスクスコアを含み、前記方法は、前記ユーザのコンピュータ装置にインストールされている又はインストールされる予定のアプリケーションに関するクエリに応答してリスクスコアを提供するステップをさらに含む、
ことを特徴とする請求項２２に記載の方法。
【請求項３１】
コンピュータ可読命令を含む第１のアプリケーションをメモリに記憶するステップを含む方法であって、前記コンピュータ可読命令は、実行時に、ユーザのモバイル装置に、
前記モバイル装置にインストールされた第２のアプリケーションの新たなコンポーネントに関し、該新たなコンポーネントと、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータとの比較を行うこと、及び、
前記比較に基づいて、前記新たなコンポーネントが前記第１の既知のコンポーネントに対応する旨の決定を行うこと、
を行わせ、前記方法は、
前記第１のアプリケーションを、後でデータ処理システムから前記モバイル装置にインストールできるように前記データ処理システムに記憶するために、少なくとも１つのプロセッサを通じて通信ネットワークを介して送信するステップをさらに含む、
ことを特徴とする方法。
【請求項３２】
少なくとも１つのプロセッサと、
第１のアプリケーションを記憶するメモリと、
を備えたシステムであって、前記第１のアプリケーションは、ユーザのモバイル装置上で実行された時に、該モバイル装置に、
前記モバイル装置にインストールされた第２のアプリケーションの新たなコンポーネントに関し、該新たなコンポーネントと、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータとの比較を行うこと、及び、
前記比較に基づいて、前記新たなコンポーネントが前記第１の既知のコンポーネントに対応する旨の決定を行うこと、
を行わせ、
前記メモリは、後で前記第１のアプリケーションをデータ処理システムから通信ネットワークを介して前記モバイル装置にインストールできるように、前記第１のアプリケーションを前記データ処理システムに送信するよう前記少なくとも１つのプロセッサに命令するように構成された命令をさらに記憶する、
ことを特徴とするシステム。
【請求項３３】
コンピュータ可読命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、実行時にコンピュータ装置に、
ユーザのコンピュータ装置にインストールされたアプリケーションに関し、該アプリケーションのコンポーネントを特定すること、
第１のコンポーネントに関連する第１の挙動を含む、前記コンポーネントの各々に関連する少なくとも１つの挙動を、少なくとも１つのプロセッサを介して識別すること、
前記識別することから得られる、前記第１の挙動を含む挙動のリストを含む結果を前記ユーザに提示すること、及び、
前記ユーザからの少なくとも１つの挙動的選好の選択を受け取ること、
を行わせる、
ことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項３４】
前記少なくとも１つの挙動的選好は、
前記第１の挙動をオプトアウトすること、
前記第１のコンポーネントを含む前記コンポーネントのうちの１つ又はそれ以上をオプトアウトすること、
明確に識別された挙動についての一連のユーザ選好、及び、
ポリシー、
から成る群から選択される、
ことを特徴とする請求項３３に記載の記憶媒体。
【請求項３５】
前記少なくとも１つの挙動的選好はポリシーであり、前記命令はさらに、前記コンピュータ装置にインストールされた新たなアプリケーションに対して前記ポリシーを実行させる、
ことを特徴とする請求項３３に記載の記憶媒体。
【請求項３６】
前記ユーザからの少なくとも１つの挙動的選好の選択は、前記第１の挙動をオプトアウトすることであり、前記命令はさらに、前記オプトアウトを行った後に、前記第１のコンポーネントを実行させて前記第１の挙動がアクティブであるかどうかを判定する、
ことを特徴とする請求項３３に記載の記憶媒体。
【請求項３７】
前記ユーザからの少なくとも１つの挙動的選好の選択は、前記第１の挙動をオプトアウトすることであり、前記命令はさらに、前記オプトアウトを行った後に、前記第１のコンポーネントのアプリケーションプログラミングインターフェイスを用いて前記オプトアウトの状況を確認させる、
ことを特徴とする請求項３３に記載の記憶媒体。
【請求項３８】
前記命令はさらに、前記コンピュータ装置に、前記ユーザからの選択に応答して、前記コンピュータ装置上でもはや前記第１の挙動が行われないように前記第１のコンポーネントの実行を再設定させる、
ことを特徴とする請求項３３に記載の記憶媒体。
【請求項３９】
コンピュータ可読命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読命令は、実行時にコンピュータ装置に、
ユーザのコンピュータ装置にインストールされたアプリケーションに関し、該アプリケーションのコンポーネントを特定すること、
第１のコンポーネントに関連する第１の挙動を含む、前記コンポーネントの各々に関連する少なくとも１つの挙動を、少なくとも１つのプロセッサを介して識別すること、及び、
前記ユーザの少なくとも１つの挙動的選好を決定すること、
を行わせる、
ことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項４０】
前記命令はさらに、前記アプリケーションが前記少なくとも１つの挙動的選好をローカルに決定できるように、前記少なくとも１つの挙動的選好を前記コンピュータ装置上に記憶させる、
ことを特徴とする請求項３９に記載の記憶媒体。
【請求項４１】
前記命令はさらに、前記第１のコンポーネントに、異なるコンピュータ装置の前記ユーザのユーザ識別子を含むクエリからの結果に従って実行させる、
ことを特徴とする請求項３９に記載の記憶媒体。
【請求項４２】
前記命令はさらに、
前記アプリケーションをダウンロード又はインストールしたことに応答して、前記ユーザの少なくとも１つの挙動的選好への準拠性を確認するために前記アプリケーションをスキャンさせ、
前記アプリケーションが前記少なくとも１つの挙動的選好に違反している場合、前記ユーザに前記違反を知らせ、又は前記アプリケーションのインストールを阻止させる、
ことを特徴とする請求項３９に記載の記憶媒体。
【請求項４３】
コンピュータ可読命令を含む第１のアプリケーションをメモリに記憶するステップを含む方法であって、前記コンピュータ可読命令は、実行時に、ユーザのモバイル装置に、
前記モバイル装置にインストールされた第２のアプリケーションのコンポーネントを特定すること、及び、
第１のコンポーネントに関連する第１の挙動を含む、前記コンポーネントの各々に関連する少なくとも１つの挙動を識別すること、
を行わせ、前記方法は、
前記第１のアプリケーションを、後でデータ処理システムから前記モバイル装置にインストールできるように前記データ処理システムに記憶するために、少なくとも１つのプロセッサを通じて通信ネットワークを介して送信するステップをさらに含む、
ことを特徴とする方法。
【請求項４４】
前記モバイル装置に前記第１のアプリケーションがインストールされた後に、前記少なくとも１つのプロセッサを介して前記第１のアプリケーションと通信するステップをさらに含む、
ことを特徴とする請求項４３に記載の方法。
【請求項４５】
前記データ処理システムは、アプリケーション市場を含む、
ことを特徴とする請求項４３に記載の方法。
【請求項４６】
前記データ処理システムはネットワークオペレータにより制御され、前記モバイル装置は、前記ネットワークオペレータにより運営されるセルラーネットワークと共に動作するように構成される、
ことを特徴とする請求項４３に記載の方法。
【請求項４７】
前記第１のコンポーネントは、前記モバイル装置に前記第２のアプリケーションがインストールされる前に該第２のアプリケーションをパッケージされたリンクライブラリである、
ことを特徴とする請求項４３に記載の方法。
【請求項４８】
少なくとも１つのプロセッサと、
第１のアプリケーションを記憶するメモリと、
を備えたシステムであって、前記第１のアプリケーションは、ユーザのモバイル装置上で実行された時に、該モバイル装置に、
前記モバイル装置にインストールされた第２のアプリケーションのコンポーネントを特定すること、
第１のコンポーネントに関連する第１の挙動を含む、前記コンポーネントの各々に関連する少なくとも１つの挙動を識別すること、及び、
前記ユーザの少なくとも１つの挙動的選好を決定すること、
を行わせ、
前記メモリは、後で前記第１のアプリケーションをデータ処理システムから通信ネットワークを介して前記モバイル装置にインストールできるように、前記第１のアプリケーションを前記データ処理システムに送信するよう前記少なくとも１つのプロセッサに命令するように構成された命令をさらに記憶する、
ことを特徴とするシステム。
【請求項４９】
前記命令は、前記少なくとも１つのプロセッサに、前記モバイル装置に前記第１のアプリケーションがインストールされた後に該第１のアプリケーションと通信するように命令するようさらに構成される、
ことを特徴とする請求項４８に記載のシステム。
【請求項５０】
前記第１のアプリケーションはさらに、前記モバイル装置に、前記ユーザにオプトアウトオプションを表示させ、前記オプトアウトオプションは、前記モバイル装置に既にインストールされているアプリケーションのみを対象とする、
ことを特徴とする請求項４８に記載のシステム。
【請求項５１】
前記第１のアプリケーションはさらに、前記モバイル装置に、前記ユーザにオプトアウトオプションを表示させ、前記オプトアウトオプションは、データベースから決定された、前記モバイル装置上における前記ユーザにとって可能な全てのオプトアウトフローを含む、
ことを特徴とする請求項４８に記載のシステム。
【請求項５２】
前記第１のコンポーネントは、前記第２のアプリケーションの実行可能コードの一部であり、該実行可能コードは、前記第２のアプリケーションとアドネットワーク又は分析ネットワークとのやりとりを可能にする、
ことを特徴とする請求項４８に記載のシステム。
【請求項５３】
ユーザのモバイル装置上で実行される、該モバイル装置上の少なくとも１つの挙動を識別するアプリケーションと少なくとも１つのプロセッサを介して通信するステップを含む方法であって、前記少なくとも１つの挙動は、前記モバイル装置にインストールされている他の複数のアプリケーションの複数のコンポーネントの各々に関連するとともに、第１のコンポーネントに関連する第１の挙動を含み、前記方法は、
前記ユーザからの入力に基づいて前記アプリケーションにより特定された前記ユーザの少なくとも１つの挙動的選好を前記モバイル装置から受け取るステップと、
前記少なくとも１つの挙動的選好をメモリに記憶するステップと、
をさらに含むことを特徴とする方法。
【請求項５４】
前記少なくとも１つの挙動を記憶するステップをさらに含む、
ことを特徴とする請求項５３に記載の方法。
【請求項５５】
前記第１のコンポーネントに関連する広告ネットワークから、前記ユーザの少なくとも１つの挙動的選好を要求するクエリを受け取るステップをさらに含む、
ことを特徴とする請求項５３に記載の方法。
【請求項５６】
前記第１のコンポーネントの識別を前記モバイル装置から受け取るステップと、
前記第１のコンポーネントを、前記少なくとも１つのプロセッサを介してエミュレート環境で実行して、前記第１の挙動がアクティブであるかどうかを判定するステップと、
をさらに含むことを特徴とする請求項５３に記載の方法。
【請求項５７】
前記少なくとも１つの挙動的選好に対する新たなアプリケーションの準拠性を確認するために、前記少なくとも１つの挙動的選好に関するクエリを受け取るステップをさらに含む、
ことを特徴とする請求項５３に記載の方法。
【請求項５８】
前記少なくとも１つの挙動的選好を評価して、前記第１のコンポーネントが前記モバイル装置上でどのように挙動すべきかを決定するために、通信ネットワークを介して受け取った要求に応答して情報を提供するステップをさらに含む、
ことを特徴とする請求項５３に記載の方法。
【請求項５９】
前記アプリケーションは、前記ユーザからの前記入力に応答して、前記モバイル装置上の前記第１のコンポーネントの実行を無効化するようさらに構成される、
ことを特徴とする請求項５３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１２年６月５日に出願された、Ｈａｌｌｉｄａｙ他による「アプリケーションコンポーネントの挙動を制御する意図の表現」という名称の米国仮特許出願第６１／６５５，８２２号に対する優先権を主張する、２０１２年１２月３日に出願された、Ｗｙａｔｔ他による「コンピュータ装置上のソフトウェアアプリケーションのコンポーネント分析」という名称の米国特許出願第１３／６９２，８０６号に対する優先権を主張するものであり、これらの特許出願の内容全体は本明細書に完全に記載されているかのように引用により本明細書に組み入れられる。
【０００２】
また、本出願は、２０１２年６月５日に出願された、Ｈａｌｌｉｄａｙ他による「アプリケーションコンポーネントの挙動を制御する意図の表現」という名称の米国仮特許出願第６１／６５５，８２２号に対する優先権を主張する、２０１２年１２月３日に出願された、Ｗｙａｔｔ他による「コンピュータ装置上のソフトウェアアプリケーションのコンポーネント分析」という名称の米国特許出願第１３／６９２，８０６号の継続出願である、２０１３年３月５日に出願された、Ｗｙａｔｔ他による「アプリケーションコンポーネントの挙動を制御する意図の表現」という名称の米国特許出願第１３／７８６，２１０号に対する優先権も主張するものであり、これらの特許出願の内容全体は本明細書に完全に記載されているかのように引用により本明細書に組み入れられる。
【０００３】
本明細書に開示する少なくともいくつかの実施形態は、一般にソフトウェアコンポーネントの分析に関し、具体的には、以下に限定されるわけではないが、コンピュータ装置上のアプリケーションが示す１又はそれ以上の挙動又はその他の特徴に対応するソフトウェアコンポーネントを識別することに関する。本明細書に開示する他の実施形態は、一般にコンピュータ装置上の挙動の制御に関し、具体的には、以下に限定されるわけではないが、コンピュータ装置にインストールされた１又はそれ以上のアプリケーションコンポーネントの挙動の制御、又はコンピュータ装置にこれからインストールされるコンポーネントの挙動の評価／査定に関するユーザの意図を受け取ること又は決定することに関する。
【背景技術】
【０００４】
１つの一般的な種類のコンピュータ装置に、ｉＰｈｏｎｅ装置などのモバイル装置がある。モバイル装置は、単純な電話機能の域を越えて進化しており、現在ではより複雑な多機能装置になっている。多くのモバイル装置は、音声通信に加え、テキストメッセージング、電子メール通信、インターネットアクセスを行い、フル機能のアプリケーションソフトウェアを実行することができる。例えば、モバイル装置は、これらの能力を用いてオンライン取引を行うことができる。さらに、個人又は企業により使用されるモバイル装置は、しばしば電子文書、テキストメッセージなどの多くの形で情報を記憶する。モバイル装置上で動作するアプリケーションは、例えばアプリケーション市場からダウンロードしてインストールすることができる。
【０００５】
アプリケーション市場の例に、Ｇｏｏｇｌｅ  Ｐｌａｙサービスがある。Ｇｏｏｇｌｅ  Ｐｌａｙは、音楽、映画、書籍及びＡｎｄｒｏｉｄアプリケーション（「アプリ（ａｐｐ）」）のためのオンラインストアを含むサービスである。このサービスには、ウェブ、及びＡｎｄｒｏｉｄ上のＰｌａｙ  Ｓｔｏｒｅ  Ｍｏｂｉｌｅ  Ａｐｐからアクセスすることができる。Ｇｏｏｇｌｅ  Ｐｌａｙは、Ｇｏｏｇｌｅ社がその前身であるＡｎｄｒｏｉｄ  Ｍａｒｋｅｔ及びＧｏｏｇｌｅ  Ｍｕｓｉｃサービスを商標変更して統合した２０１２年３月に導入された。ダウンロードできるアプリケーションの中には、いわゆる広告ネットワークを組み込むものもある。
【０００６】
オンライン広告ネットワーク、或いは単純にアドネットワークは、広告をホストしたいと望むウェブサイトに広告主を結び付ける会社により運営されている。アドネットワークの主な機能は、発行者からの広告スペースの供給を集約し、この供給と広告主の需要をマッチさせることである。通常、アドネットワークは、中央アドサーバを用いて消費者に（消費者のモバイル装置などを介して）広告を配信し、これにより従来のアナログ媒体の選択肢では不可能な方法で広告インプレッションのターゲティング、トラッキング及びレポーティングを可能にする。
【０００７】
モバイル装置上には、ますます多くのアドネットワークが登場するようになっている。モバイル又はその他のコンピュータ装置にインストールされた所与のアプリケーションが１又はそれ以上のアドネットワークに関連することもあり、この関連性が常にユーザに明らかであるとも限らない。広告を組み込んだダウンロードアプリケーションの例として、ユーザが、アプリケーション市場から無料のポーカーゲーム又はチェスゲームをダウンロードすることがある。このゲームの所有者は、ゲームを無料で提供するために、ゲームプレイ中にアドネットワークからの広告表示を組み入れる。
【０００８】
アドネットワークは、時には個人識別情報（ＰＩＩ）及び装置専用情報を含むこともある様々なデータを収集する。アドネットワークは、さらに有益なターゲット広告を提供するためにこれらのデータを収集する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２０１１／００４７０３３号明細書
【特許文献２】米国特許出願公開第２０１１／００４７５９７号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１０】
アドネットワークの中には、アプリケーション内広告配信体験の範囲を超えて、例えばモバイル装置の通知バーに広告を挿入するものもある。時に、ユーザは、特にいずれか１つの所与のアプリケーションと具体的な関連性のないメッセージ又はその他のアイテムがユーザの電話の一部に表示された時に、自身の電話上で何が起きているのかを判断するのが困難な場合がある。
【課題を解決するための手段】
【００１１】
本明細書では、ソフトウェアコンポーネント（例えば、Ａｎｄｒｏｉｄ、ｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、又はユーザのモバイル装置に新たにインストールされた又はインストールを検討中のその他のプラットフォームアプリケーション用のコンポーネント）を分析するためのシステム及び方法について説明する。以下、いくつかの実施形態を要約する。
【００１２】
１つの実施形態では、方法が、ユーザのコンピュータ装置にインストールされたアプリケーションに関し、このアプリケーションのコンポーネントを特定するステップと、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を、少なくとも１つのプロセッサを介して識別するステップとを含む。
【００１３】
１つの実施形態では、システムが、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータを記憶するデータリポジトリと、少なくとも１つのプロセッサと、命令を記憶するメモリとを備え、この命令は、コンピュータ装置上で実行された時に、コンピュータ装置に、ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、新たなコンポーネントとコンポーネントデータの比較を行うこと、及びこの比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うことを行わせる。
【００１４】
１つの実施形態では、方法が、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータをメモリに記憶するステップと、ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、少なくとも１つのプロセッサを介して新たなコンポーネントとコンポーネントデータの比較を行うステップと、この比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うステップとを含む。
【００１５】
本明細書では、コンピュータ装置上の挙動を制御するためのシステム及び方法についても説明する。以下、いくつかの実施形態を要約する。
【００１６】
１つの実施形態では、方法が、ユーザのコンピュータ装置にインストールされたアプリケーションに関し、このアプリケーションのコンポーネントを特定するステップと、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を識別するステップと、この識別するステップから得られる、第１の挙動を含む挙動のリストを含む結果をユーザに提示するステップと、ユーザからの少なくとも１つの挙動的選好の選択を受け取るステップとを含む。
【００１７】
別の実施形態では、方法が、ユーザのコンピュータ装置にインストールされたアプリケーションに関し、このアプリケーションのコンポーネントを特定するステップと、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を識別するステップと、ユーザの少なくとも１つの挙動的選好を決定するステップとを含む。
【００１８】
本開示は、方法、これらの方法を実行する装置、これらの方法を実行するデータ処理システムを含むシステム、及びデータ処理システム上で実行された時にこれらの方法をシステムに実行させる命令を含むコンピュータ可読媒体を含む。
【００１９】
添付図面及び以下の詳細な説明から、その他の特徴が明らかになるであろう。
【００２０】
同様の要素を同じ参照番号で示す添付図面の図に、これらの実施形態を限定ではなく一例として示す。
【図面の簡単な説明】
【００２１】
【図１】様々な実施形態による、ユーザ端末及びモバイル装置がメッセージングサーバ及び／又はアプリケーション市場、又はアイデンティティサーバと通信する（コンピュータ装置上の挙動を制御するための、又はソフトウェアコンポーネントを分析するための）システムを示す図である。
【図２】１つの実施形態による、モバイル装置に遠隔的にインストールするための複数のアプリケーションを提供するアプリケーション市場を示す図である。
【図３】１つの実施形態による、インストールしたアプリケーションがユーザに対してモバイル装置のディスプレイ上に提示する画面を示す図である。
【図４】１つの実施形態による、モバイル装置上のアプリケーションの分析状態を示す、図３のインストールしたアプリケーションが提示する状態表示を示す図である。
【図５】１つの実施形態による、モバイル装置上のアプリケーションの分析からユーザに提示される一連の結果を示す図である。
【図６】１つの実施形態による、モバイル装置にインストールされたアプリケーションに組み込まれている広告ネットワークに関する情報を提示する画面を示す図である。
【図７】１つの実施形態による、ユーザが広告ネットワークのオプトアウトを行うためのオプトアウトボタンを提示する画面を示す図である。
【図８】様々な実施形態で使用できるデータ処理システム（例えば、メッセージングサーバ又はアプリケーションサーバ）のブロック図である。
【図９】１つの実施形態によるユーザ装置（例えば、モバイル装置）のブロック図である。
【発明を実施するための形態】
【００２２】
以下の説明及び図面は例示的なものであり、限定的なものと解釈すべきではない。完全な理解をもたらすために数多くの具体的な詳細について説明する。しかしながら、いくつかの例では、説明を曖昧にしないために周知の又は従来の詳細については説明していない。本開示における１つの実施形態又はある実施形態という表現は、必ずしも同じ実施形態について言及するものではなく、このような表現は少なくとも１つを意味する。
【００２３】
本明細書における「１つの実施形態」又は「ある実施形態」という表現は、その実施形態に関連して説明する特定の特徴、構造又は特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な箇所に出現する「１つの実施形態では」という表現は、必ずしも全てが同じ実施形態について言及するものではなく、他の実施形態を互いに排除する別個の又は代替の実施形態について言及するものでもない。さらに、実施形態によって示されることも示されないこともある様々な特徴についても説明する。同様に、実施形態によって要件になることもならないこともある様々な要件についても説明する。
【００２４】
本明細書で使用する「コンポーネント」は、アプリケーション（例えば、ユーザがＡｎｄｒｏｉｄ又はその他のソフトウェアアプリケーション市場からインストールした後にモバイル装置上で実行されるアプリケーション）の一部を意味する。１つの例では、コンポーネントがアプリケーションの作成者又はサードパーティにより提供される。別の例では、コンポーネントを、アドネットワーク又は分析ネットワークにより提供されるコードとすることができる。
【００２５】
さらに別の例では、コンポーネントが、アプリケーション内にパッケージされたリンクライブラリ／ＳＤＫである。これはアプリケーション内のコードであるが、このコードはサードパーティにより開発されたものであり、アプリケーション開発者がそのコンポーネントの特定の挙動をそのアプリケーションに組み入れる能力（例えば、ＬｅａｄＢｏｌｔなどの特定のアドネットワークからの特定の種類の広告を表示することなど）を提供するものである。
【００２６】
１つの実施形態では、コンポーネント（例えば、アドネットワークに関連するコンポーネント）が、コンポーネントに関連する複数の挙動（例えば、通知表示、設定変更及び／又は情報収集）を有することができる。例えば、ＢＴＣｏｎｔｒｏｌｌｅｒアプリケーション（以下で説明）の挙動は、これを構成するコンポーネントの挙動を足し合わせたものである。場合によっては、コンポーネントが、個々の挙動を選択的にオプトアウトする能力を提供することもある。しかしながら、場合によってはこれが不可能であり、ユーザは、あらゆる一連の挙動をオプトアウトするためにコンポーネント全体をオプトアウトしなければならない。
【００２７】
以下でさらに詳述するように、ユーザは、ユーザが自身のコンピュータ装置にどのように挙動して欲しいかについてその意図を示すことができる。この意図は、ユーザが明示的に示すことも、又は別様に（例えば、遠隔サーバ上のデータベースを参照することにより）決定することもできる。１つの実施形態では、このユーザの意図が、特定の種類のメッセージ（例えば、広告）の受け取りをユーザがどのように制御したいかを定義する。このユーザの意図では、コンピュータ装置（例えば、モバイル装置）上の様々な形の体験においてユーザが望むタイプの制御が示される。この意図を用いてコンピュータ装置の様々な挙動を決定することができる。例えば、ユーザのモバイル装置に予めインストールされていた１又はそれ以上のアプリケーションの様々なコンポーネントを無効にすることにより、いくつかの望ましくない挙動を停止させることができる。
【００２８】
図１に、後述する様々な実施形態による、ユーザ端末及びモバイル装置（モバイル装置の例としては、携帯電話機、スマートフォン、及びｉＰｈｏｎｅ装置又はＡｎｄｒｏｉｄタブレットなどのタブレット装置が挙げられる）、又はその他のコンピュータ装置が、メッセージングサーバ１２５及び／又はアプリケーション市場１２３、又はアイデンティティサーバ１１０と通信する（本明細書で説明する、コンピュータ装置上の挙動を制御するための、又はソフトウェアコンポーネントを分析するための）システムを示す。図１では、ユーザ端末（例えば、１４１、１４３、．．．、１４５）及び／又はモバイル装置１４７、１４９を用いて、通信ネットワーク１２１（例えば、インターネット、ワイドエリアネットワーク、又はその他の有線又は無線通信ネットワーク）を介してアイデンティティサーバ１１０、アプリケーション市場１２３（例えば、Ａｎｄｒｏｉｄ又はＧｏｏｇｌｅ  Ｐｌａｙ市場）、及び／又はメッセージングサーバ１２５（例えば、電子メールサーバ）へのアクセス及び／又はこれらとの通信が行われる。
【００２９】
ネットワーク１２１を用いて、（例えば、Ｇｏｏｇｌｅ  Ｐｌａｙ又はＡｎｄｒｏｉｄ  Ｍａｒｋｅｔを使用して）市場１２３から選択されたアプリケーションをダウンロードして遠隔的にインストールすることができる。市場１２３は、ユーザ端末（例えば、１４１、１４３、．．．、１４５）及びモバイル装置１４７、１４９と通信するための１又はそれ以上のウェブサーバ（又はその他の種類のデータ通信サーバ）を含むことができる。
【００３０】
一例として、Ａｎｄｒｏｉｄ電話（例えば、モバイル装置１４７）の所有者が、市場１２３がホストするウェブサイトを訪問し、無料のポーカーゲームアプリケーションを選択してモバイル装置１４７に遠隔的にインストールすることがある。ユーザは、ユーザの電子メールアドレス（例えば、Ｇｍａｉｌアドレス）及びパスワードにより、市場１２３に対して自らを認証することができる。
【００３１】
市場１２３及び／又はメッセージングサーバ１２５は、アプリケーション、ユーザのメッセージングアカウントデータ、ユーザの選好データ及びその他のデータを記憶するためにそれぞれのデータ記憶機構に接続される。図１では、メッセージングサーバ１２５が通信ネットワーク１２１に接続されて、ユーザ端末１４１〜１４５、又はユーザのモバイル装置１４７、１４９の一方にメッセージ（例えば、電子メール又はテキスト）を配信する。
【００３２】
１つの実施形態では、通信ネットワーク１２１により、アプリケーション市場１２３及び／又はモバイル装置１４７、１４９と通信するためのソフトウェアサーバ１２７が結合される。サーバ１２７は、例えばメモリにアプリケーション（例えば、後述するアドネットワーク検出器）を記憶し、このアプリケーションをアプリケーション市場１２３に送信して、後でユーザが例えばモバイル装置１４７上にダウンロード及びインストールできるようにする。別の実施形態では、ソフトウェアサーバ１２７が、市場１２３にアプリケーションをアップロードするために使用される開発者コンピュータ又は別のコンピュータである。
【００３３】
１つの実施形態では、サーバ１２７が、この（ユーザによってインストールされた後に現在モバイル装置１４７上で実行中の）アプリケーションと通信する。このアプリケーションは、本明細書で説明するようなモバイル装置１４７上の少なくとも１つの挙動を識別するように構成される。この少なくとも１つの挙動は、モバイル装置１４７にインストールされている他の複数のアプリケーション（例えば、ユーザが以前にＧｏｏｇｌｅ  Ｐｌａｙサービスからダウンロードした他のアプリケーション）の複数のコンポーネントの各々に関連するものであり、第１のコンポーネントに関連する第１の挙動を含む。
【００３４】
サーバ１２７は、モバイル装置１４７からユーザの少なくとも１つの挙動的選好を受け取り、この少なくとも１つの挙動的選好は、ユーザからの入力（例えば、メニュー又は結果リストからのユーザ選択）に基づいてアプリケーションにより決定される。サーバ１２７は、この少なくとも１つの挙動的選好を、後でモバイル装置１４７のユーザの意図に関する他のコンピュータ装置からの問い合わせなどに応答して使用できるように記憶する（例えば、サーバ１２７のメモリに記憶する）。１つの実施形態では、サーバ１２７が、多くのアドネットワークの各々によって個別に維持される。本明細書で説明するアドネットワーク検出器は、ユーザの代わりにこれらの挙動的選好をこれらのネットワークのために管理することができる。
【００３５】
別の実施形態では、アイデンティティサーバ１１０が、コンポーネントアイデンティティ１１４及びユーザポリシー１１６を記憶するデータベース１１２を含む。モバイル装置１４９は、既にモバイル装置１４９にインストールされているアプリケーション１０２を含む。アプリケーション１０２は、アプリケーション市場１２３又はソフトウェアサーバ１２７からインストールすることができる。
【００３６】
アプリケーション１０２は、コンポーネント１０４及び１０６を含む。ユーザポリシー１０８は、モバイル装置１４９のメモリにローカルに記憶される。以下でより詳細に説明するように、動作中には、ユーザポリシー１０８を用いてモバイル装置１４９上におけるコンポーネント１０４及び１０６の処理を規定することができる。
【００３７】
代わりに（又はユーザポリシー１０８に加えて）、モバイル装置１４９のためのユーザポリシーをユーザポリシー１１６の１つとしてアイデンティティサーバ１１０上に記憶することもできる。ユーザポリシーは、ローカルユーザポリシー又は遠隔ユーザポリシーのいずれか、又はこれらの組み合わせを用いてモバイル装置１４９上で実行することができる。
【００３８】
以下でより詳細に説明するように、モバイル装置１４９にアプリケーション１０２がインストールされた後でコンポーネント１０４及び１０６を識別することができ、モバイル装置１４９上で示される挙動は、コンポーネント１０４及び１０６の一方又は両方に起因することができる。モバイル装置１４９上の複数の異なるアプリケーションには所与のコンポーネント（例えば、コンポーネント１０４）が存在することができ、及び／又はこの所与のコンポーネントは、他の多くのユーザのモバイル又はその他のコンピュータ装置にインストールされているアプリケーションの数多くのコピー又はバージョンに共通することができる。１つの実施形態では、このコンポーネントの共通性が存在することにより、コンポーネントに関連する構造データ及び挙動データ（例えば、他のモバイル装置上でコンポーネントがどのように挙動するか）の観察及び収集を行うことができる。この既知のコンポーネントデータはデータベース１１２に記憶することができ、このコンポーネントデータを特定のコンポーネントアイデンティティ１１４に関連付けることができる。従って、以前のコンポーネントデータのデータリポジトリを用いて、（モバイル装置１４９に新たにインストールされたアプリケーション内で識別されるような）最近取得した新たなコンポーネントのデータと比較することができる。
【００３９】
より具体的には、モバイル装置１４９上のコンポーネントに関連する特徴及び挙動が識別され属性分析されると、これらの特徴及び挙動を、コンポーネントアイデンティティ１１４に関連するデータとしてモバイル装置１４９にローカルに又はアイデンティティサーバ１１０に遠隔的に記憶されている既知の特徴及び挙動と比較することができる。以下でより詳細に説明するように、これらの比較から得られた結果を用いて、構成に関する決定を行うこと、及び／又はモバイル装置又はその他のコンピュータ装置（例えば、ユーザ端末１４１）上の１又はそれ以上の特定のコンポーネントを無効にすることができる。
【００４０】
図１には、クライアントサーバアーキテクチャで実装された例示的なシステムを示しているが、本開示の実施形態は、別の様々なアーキテクチャで実装することができる。例えば、いくつかの実施形態では、ユーザ端末のピアツーピアネットワークを介してアイデンティティサーバ１１０又はアプリケーション市場１２３を実装し、モバイル装置からのアプリケーション及びデータ／情報がピアツーピア通信接続を介して共有されるようにすることができる。
【００４１】
いくつかの実施形態では、クライアントサーバアーキテクチャとピアツーピアアーキテクチャの組み合わせを使用し、１又はそれ以上の集中化サーバを用いて情報及び／又はサービスの一部を提供し、ピアツーピアネットワークを用いて他の情報及び／又はサービスを提供するようにすることもできる。従って、本開示の実施形態は特定のアーキテクチャに限定されるものではない。
【００４２】
図２に、１つの実施形態による、モバイル装置に遠隔的にインストールするための複数のアプリケーション（Ａ、Ｂ、Ｃ）を提供するアプリケーション市場１２３（例えば、Ｇｏｏｇｌｅ  Ｐｌａｙサービス）のウェブページを示す。ユーザは、このウェブページにアクセスして遠隔的にインストールするアプリケーションを選択する。ユーザは、（アプリケーションが無料でなければ）市場１２３により提供されるウェブページ内のアプリケーションに支払いを行うことができる。
【００４３】
例えば、ダウンロードに利用できるアプリケーションの１つを、Ｇｏｏｇｌｅ  Ｐｌａｙサービスにおいて利用可能な「ＢＴＣｏｎｔｒｏｌｌｅｒ」として知られているアプリケーションとすることができる。このアプリケーションに関する（Ｇｏｏｇｌｅ  Ｐｌａｙに投稿された）ユーザレビューの中は、インストール後にユーザのモバイル装置上で過度の広告が行われることに関するクレームを含むものもあった。
【００４４】
１つの実施形態では、ユーザのモバイル装置１４７に、本明細書で「アドネットワーク検出器」と呼ぶアプリケーションをＧｏｏｇｌｅ  Ｐｌａｙサービスからダウンロードすることができる。このアドネットワーク検出器アプリケーションに、後述するようなユーザの意図の表現及びモバイル装置１４７の挙動の制御を組み入れ、又は共に別様に機能させることができる。
【００４５】
アドネットワーク検出器アプリケーションは、モバイルアプリ内で使用されているアドネットワークが存在しないかどうかユーザの電話又はタブレットをスキャンし、どのような種類の広告が表示され得るか、及びそのアドネットワークがどのような情報を収集するかに関する情報をユーザに与える。ユーザは、この情報にアクセスして、特定のアドネットワークを有するアプリケーションをユーザの電話上に維持するかどうかを決定することができる。
【００４６】
モバイル装置（例えば、スマートフォン又はタブレット）の使用は急激に伸びており、広告主によっては、携帯電話上に広告を表示するための挑戦的な新技術を実験し始めたところもある。これらの技術は、標準的なＡｎｄｒｏｉｄ通知バーに広告をプッシュするもの、一般的に設計されたアイコンをモバイルデスクトップ上にドロップするもの、及びブックマーク又はデフォルトホームページなどのブラウザ設定を変更するものを含む。これらの各技術は、特定のアプリケーションの文脈にとらわれずに広告を表示することができるので、どのアプリが所与の広告に関与しているかをユーザが正確に知ることは難しい。アドネットワーク検出器アプリケーションは、どのアドネットワーク及びアプリケーションがこのような広告のソースであるかをユーザが特定する方法を提供する。
【００４７】
アドネットワークによっては、標的とする販売キャンペーンで使用できるように特定の装置又はユーザを識別する情報を収集するものもある。これを行うことにより、ユーザは、ブラウザベースの広告と同様に、より個人化された又は関連性のある広告を見ることができるようになる。アドネットワークがユーザの情報のどの側面を収集するかをユーザが知ることは困難な場合がある。各アドネットワーク特有の能力及び情報収集方法は、調査によって特定することができる。アドネットワーク検出器アプリケーションは、どのようなデータがどのアドネットワーク／アプリケーションによって収集されているかをユーザに通知する。
【００４８】
この実施形態では、アドネットワーク検出器アプリケーションが、モバイル広告をサポートしている実践に関する情報をユーザに提供する。このアプリケーションは、多くのアドネットワークを検出することができる。検出されるアドネットワークのいくつかとして、以下の例を挙げることができる。
・ＬｅａｄＢｏｌｔ
・ＡｄＦｏｎｉｃ
・ＡｄＫｎｏｗｌｅｄｇｅ
・ＡｄＭｏｂ
・ＢｕｚｚＣｉｔｙ
・Ｃａｓｅｅ
・Ｅｖｅｒｂａｄｇｅ
・ＪｕｍｐＴａｐ
【００４９】
この実施形態では、アドネットワークの能力及びプライバシーに関して各アドネットワーク特有の能力及び情報収集方法を調査することができる。アドネットワーク検出器アプリケーションは、この調査に基づいて、各アドネットワークがどの識別情報を収集するか、及びどのように収集するかを詳細化する。この詳細は、電子メールアドレスなどの個々のユーザに直接つながり得る個人情報、及びユーザではなく個々の装置又はネットワーク固有の装置及びネットワーク情報を含むことができる。
【００５０】
図３に、１つの実施形態による、インストールしたアプリケーション３０４（例えば、アプリケーション市場１２３からインストールした後のアドネットワーク検出器アプリケーション）がユーザに対してモバイル装置１４７のディスプレイ上に提示する画面３００を示す。この実施形態では、ユーザが、モバイル装置１４７上のアプリケーションコンポーネントの挙動を制御するという自身の意図を表す。
【００５１】
１つの例では、ユーザがモバイル装置１４７に、数多くのユーザインストールアプリケーションの中でも特にＢＴＣｏｎｔｒｏｌｌｅｒアプリケーションを既にインストールしているものとする。ＢＴＣｏｎｔｒｏｌｌｅｒは、複数の挙動を有する広告ネットワークコンポーネントを含む。第１の挙動は、モバイル装置１４７の通知バーに広告を表示することである。
【００５２】
この実施形態では、モバイル装置１４７に既にインストールされている各アプリケーション（例えば、ＢＴＣｏｎｔｒｏｌｌｅｒ）のコンポーネントが特定される（例えば、アプリケーション３０４により、又はこの目的でモバイル装置にインストールした別のツールにより特定される）。例えば、ユーザは、スキャン開始ボタン３０２をクリック又はタッチすることにより、これらのコンポーネントを特定するためのスキャンを開始することができる。
【００５３】
識別されるコンポーネントの例は、ＢＴＣｏｎｔｒｏｌｌｅｒアプリケーションに含まれるＬｅａｄＢｏｌｔアドネットワークとする。また、インストールされているアプリケーションの各コンポーネントに関連する少なくとも１つの挙動（例えば、通知バーに広告を表示すること）も識別される。
【００５４】
この識別された挙動が（スキャン結果リストなどの形で）ユーザに提示される。（例えば、特定の挙動をオプトアウトしたいというユーザの要望などの）ユーザの意図を表す少なくとも１つの挙動的選好を決定する。次に、モバイル装置上の様々なアプリケーションの識別されたコンポーネントを、ユーザが表す意図に合わせるために必要なように再構成することにより、この意図をモバイル装置上で実現する。
【００５５】
図４に、１つの実施形態による、モバイル装置１４７上のアプリケーション（すなわち、モバイル装置にインストールされているアプリケーション３０４以外のアプリケーション）を、これらのそれぞれのコンポーネントを識別するために分析した状態を示す、インストールしたアプリケーション３０４がユーザに提示する状態表示４００を示す。分析又はスキャンの進行度合いはバー４０２によって示される。
【００５６】
図５には、１つの実施形態による、モバイル装置１４７上のアプリケーションの分析からユーザに提示される一連の結果５００を示す。これらの結果は、識別された挙動のリストを含む。例えば、挙動５０２は、モバイル装置の通知バーに広告を表示することである。垂直構成又は列５０６には、リストされた挙動を示すコンポーネントを含む識別されたアプリケーションの数が示される。例えば、挙動５０２を示すコンポーネントを含むアプリケーションは１つしか識別されていない。挙動５０８を示すコンポーネントを含むアプリケーションは２つ識別されている。対照的に、挙動５０４を示すコンポーネントを含むアプリケーションは識別されていない。なお、この実装における数字は、特定の挙動を示すコンポーネントの数を示すものである。他の実装では、この数字（又はさらなる数字）が、その挙動を示すアプリケーションの数を反映することができる。所与のコンポーネントが複数の異なるアプリケーション内に存在することもあり、従ってこれらの２つの数字は必ずしも等しいものではない。
【００５７】
図６に、１つの実施形態による、モバイル装置１４７にインストールされたアプリケーション６０４（ＢＴＣｏｎｔｒｏｌｌｅｒ）に組み込まれている広告ネットワーク６０２（ＬｅａｄＢｏｌｔ）に関する情報を提示する画面６００を示す。画面６００は、アプリケーション６０４に関連する挙動についての説明６０６を含む。
【００５８】
図７には、１つの実施形態による、ユーザが広告ネットワーク６０２をオプトアウトするためのオプトアウトボタン７０２を提示する画面６００を示す。画面６００は、広告ネットワーク６０２のオプトアウトオプションを記述する説明７００を含む。ユーザは、オプトアウトボタン７０２をクリック又は（例えば、タッチ画面上を）タッチすることによって自身の意図を表す。
【００５９】
１つの実施形態では、このユーザの意図を、モバイル装置１４７のメモリにローカルに記憶することができる。或いは、この意図を、通信ネットワーク１２１を介してアクセス可能なサーバ（例えば、上述したアドネットワーク検出器のソフトウェア開発者が運用するサーバとすることができる図１のソフトウェアサーバ１２７）などの異なるコンピュータ装置に遠隔的に記憶することもできる。このサーバには、それぞれのユーザが以前に表した意図に挙動を合わせるために、サードパーティアプリケーションの開発者がアクセスできるようにすることもできる。別の実施形態では、このサーバがコンポーネントの所有者により運用される。
【００６０】
以下、他の様々な実施形態について説明する。第１の実施形態では、コンピュータ可読記憶媒体が、コンピュータ可読命令（例えば、アドネットワーク検出器の命令）を記憶し、このコンピュータ可読命令が、実行時にコンピュータ装置（例えば、ユーザのモバイル装置）に、ユーザのモバイル装置にインストールされたアプリケーションに関し、このアプリケーションのコンポーネントを特定すること、第１のコンポーネントに関連する第１の挙動（例えば、通知バー内の広告表示）を含む、コンポーネントの各々に関連する少なくとも１つの挙動を、モバイル装置の少なくとも１つのプロセッサを介して識別すること、この識別することから得られる、第１の挙動を含む挙動のリストを含む結果をユーザに提示すること、及びユーザからの少なくとも１つの挙動的選好の選択を受け取ることを行わせる。アプリケーションのコンポーネントを特定することに関するさらなる情報については、以下の「アプリケーションのコンポーネントの分析」という段落でより詳細に説明する。
【００６１】
１つの実施形態では、少なくとも１つの挙動的選好が、第１の挙動をオプトアウトすること、第１のコンポーネントを含むコンポーネントのうちの１つ又はそれ以上をオプトアウトすること、明確に識別された挙動についての一連のユーザ選好、及びポリシーから成る群から選択される。１つの実施形態では、少なくとも１つの挙動的選好がポリシーであり、このポリシーが、モバイル装置にインストールされた新たなアプリケーションに対して実行される。１つの実施形態では、第１のコンポーネントが、ユーザが第１のコンポーネントの個々の挙動を選択的にオプトアウトすることを可能にする。
【００６２】
１つの実施形態では、ユーザからの少なくとも１つの挙動的選好の選択が、第１の挙動をオプトアウトすることであり、上記命令がさらに、このオプトアウト後に第１のコンポーネントを実行させて第１の挙動がアクティブであるかどうかを判定する。１つの実施形態では、第１の挙動がアクティブであるかどうかを判定することが、異なるコンピュータ装置（例えば、ソフトウェアサーバ１２７）上のエミュレート環境内で第１のコンポーネントを実行すること、及びユーザからの選択を受け取った後にモバイル装置上の挙動をモニタすることから成る群から選択される少なくとも１つの動作を含む。
【００６３】
１つの実施形態では、ユーザからの少なくとも１つの挙動的選好の選択が、第１の挙動をオプトアウトすることであり、上記命令がさらに、このオプトアウト後に、第１のコンポーネントのアプリケーションプログラミングインターフェイスを用いてオプトアウトの状況を確認させる。１つの実施形態では、上記命令がさらに、モバイル装置に、ユーザからの選択に応答して、モバイル装置上でもはや第１の挙動が行われないように第１のコンポーネントの実行を再設定させる。
【００６４】
１つの実施形態では、上記命令がさらに、ユーザからの選択に応答して、モバイルコンピュータ装置からアプリケーションをアンインストールさせる。１つの実施形態では、上記命令がさらに、ユーザからの選択に応答して、モバイル装置上の第１のコンポーネントのさらなる実行を無効化させる。１つの実施形態では、第１のコンポーネントがアプリケーション及びさらなるアプリケーションにより共有され、無効化することが、アプリケーション及びさらなるアプリケーションの両方に影響を与える。
【００６５】
１つの実施形態では、第１の挙動が、ユーザにメッセージを提示することである。１つの実施形態では、このメッセージが、モバイル装置の通知エリアに提示される少なくとも１つの広告を含む。１つの実施形態では、メッセージの提示が、アプリケーションの通常動作中にユーザに提示されるアプリケーションの背景以外のものである。１つの実施形態では、第１のコンポーネントがアプリケーションの一部である。
【００６６】
１つの実施形態では、上記命令がさらに、ユーザにオプトアウトオプションを表示させ、このオプトアウトオプションが、モバイル装置に既にインストールされているアプリケーションのみを対象とする。１つの実施形態では、上記命令がさらに、ユーザにオプトアウトオプションを表示させ、このオプトアウトオプションが、データベースから決定された、モバイル装置上におけるユーザにとって可能な全てのオプトアウトフローを含む。１つの実施形態では、第１のコンポーネントが、モバイル装置にアプリケーションがインストールされる前にこのアプリケーションをパッケージされたリンクライブラリである。
【００６７】
１つの実施形態では、モバイル装置がタブレット装置である。１つの実施形態では、第１のコンポーネントが、アプリケーションの実行可能コードの一部であり、この実行可能コードが、アプリケーションと広告ネットワーク又は分析ネットワークとのやりとりを可能にする。１つの実施形態では、広告ネットワークとのやりとりが、広告ネットワークから提供される広告の表示を含む。
【００６８】
１つの実施形態では、非一時的コンピュータ可読記憶媒体がコンピュータ可読命令を記憶し、このコンピュータ可読命令が、実行時にコンピュータ装置に、ユーザのコンピュータ装置にインストールされたアプリケーションに関し、このアプリケーションのコンポーネントを特定すること、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を、少なくとも１つのプロセッサを介して識別すること、及びユーザの少なくとも１つの挙動的選好を決定することを行わせる。
【００６９】
１つの実施形態では、上記命令がさらに、アプリケーションが少なくとも１つの挙動的選好をローカルに決定できるように、この少なくとも１つの挙動的選好をコンピュータ装置上に記憶させる。１つの実施形態では、上記命令がさらに、第１のコンポーネントに、少なくとも１つの挙動的選好を評価して、第１のコンポーネントがコンピュータ装置上でどのように挙動すべきかを決定させる。
【００７０】
１つの実施形態では、上記命令がさらに、第１のコンポーネントに関連する広告ネットワークがユーザの少なくとも１つの挙動的選好を決定するために異なるコンピュータ装置（例えば、ソフトウェアサーバ１２７）に問い合わせを行えるように、少なくとも１つの挙動的選好を異なるコンピュータ装置上に記憶させる。１つの実施形態では、上記命令がさらに、第１のコンポーネントに、異なるコンピュータ装置のユーザのユーザ識別子を含むクエリからの結果に従って実行させる。
【００７１】
１つの実施形態では、上記命令がさらに、アプリケーションをダウンロード又はインストールしたことに応答して、ユーザの少なくとも１つの挙動的選好への準拠性を確認するためにアプリケーションをスキャンさせ、アプリケーションが少なくとも１つの挙動的選好に違反している場合、ユーザに違反を知らせ、又はアプリケーションのインストールを阻止させる。
【００７２】
１つの実施形態では、システムが、ディスプレイと、少なくとも１つのプロセッサと、命令を記憶するメモリとを備え、この命令は、少なくとも１つのプロセッサに、インストールされているアプリケーションのコンポーネントを特定すること、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を識別すること、ユーザがオプトアウトできるインストール済みのアプリケーションの少なくとも１つのコンポーネントをディスプレイ上に提示すること、及び少なくとも１つのコンポーネントの第１のコンポーネントのオプトアウトの選択をユーザから受け取ることを行うように命令するよう構成される。
【００７３】
１つの実施形態では、上記命令が、少なくとも１つのプロセッサに、ユーザが以前にオプトアウトしたコンポーネントのオプトアウト状況をユーザに提示するように命令するようさらに構成される。
【００７４】
１つの実施形態では、方法が、ユーザのコンピュータ装置にインストールされたアプリケーションに関し、アプリケーションのコンポーネントを特定するステップと、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を、コンピュータ装置の少なくとも１つのプロセッサを介して識別するステップと、識別ステップから得られる、第１の挙動を含む挙動のリストを含む結果をユーザに対してコンピュータ装置のディスプレイ上に提示するステップと、コンピュータ装置のユーザインターフェイスを介して、少なくとも１つの挙動的選好についてのユーザからの選択を受け取るステップとを含む。
【００７５】
１つの実施形態では、方法が、コンピュータ可読命令を含む第１のアプリケーション（例えば、アドネットワーク検出器アプリケーション）をメモリ（例えば、ソフトウェアサーバ１２７のメモリ）に記憶するステップを含み、このコンピュータ可読命令は、実行時に、ユーザのモバイル装置に、モバイル装置にインストールされた第２のアプリケーション（例えば、ＢＴＣｏｎｔｒｏｌｌｅｒアプリケーション６０４）のコンポーネントを特定すること、及び第１のコンポーネント（例えば、ＬｅａｄＢｏｌｔコンポーネント６０２）に関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を識別することを行わせ、この方法は、第１のアプリケーションを、後でデータ処理システム（例えば、アプリケーション市場１２３）からモバイル装置にインストールできるようデータ処理システムに記憶するために、少なくとも１つのプロセッサ（例えば、ソフトウェアサーバ１２７のマイクロプロセッサ）を通じて通信ネットワークを介して送信するステップをさらに含む。
【００７６】
１つの実施形態では、この方法が、モバイル装置に第１のアプリケーションがインストールされた後に、少なくとも１つのプロセッサを介して第１のアプリケーションと通信するステップをさらに含む。１つの実施形態では、データ処理システムがアプリケーション市場を含む。１つの実施形態では、データ処理システムがネットワークオペレータ（例えば、Ｖｅｒｉｚｏｎ又はＡＴ＆Ｔ）により制御され、モバイル装置が、ネットワークオペレータにより運営されるセルラーネットワークと共に動作するように構成される。
【００７７】
１つの実施形態では、システム（例えば、ソフトウェアサーバ１２７）が、少なくとも１つのプロセッサと、第１のアプリケーションを記憶するメモリとを備え、この第１のアプリケーションが、ユーザのモバイル装置上で実行された時に、このモバイル装置に、モバイル装置にインストールされた第２のアプリケーションのコンポーネントを特定すること、第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動を識別すること、及びユーザの少なくとも１つの挙動的選好を決定することを行わせ、メモリは、後で第１のアプリケーションをデータ処理システム（例えば、アプリケーション市場１２３）から通信ネットワークを介してモバイル装置にインストールできるように、第１のアプリケーションをデータ処理システムに送信するよう少なくとも１つのプロセッサに命令するように構成された命令をさらに記憶する。
【００７８】
１つの実施形態では、この命令が、少なくとも１つのプロセッサに、モバイル装置に第１のアプリケーションがインストールされた後に第１のアプリケーションと通信するように命令するようさらに構成される。
【００７９】
１つの実施形態では、方法が、ユーザのモバイル装置上で実行される、該モバイル装置上の少なくとも１つの挙動を識別するアプリケーション（例えば、アドネットワーク検出器アプリケーション）と少なくとも１つのプロセッサ（例えば、ソフトウェアサーバ１２７のプロセッサ）を介して通信するステップを含む方法であって、この少なくとも１つの挙動は、モバイル装置にインストールされている他の複数のアプリケーションの複数のコンポーネントの各々に関連するとともに、第１のコンポーネントに関連する第１の挙動を含み、この方法は、ユーザからの入力に基づいてアプリケーションにより決定されるユーザの少なくとも１つの挙動的選好をモバイル装置から受け取るステップと、少なくとも１つの挙動的選好をメモリに記憶する（例えば、複数のデータベースサーバ間で分散されたデータベースに記憶する）ステップとをさらに含む。
【００８０】
１つの実施形態では、この方法が、少なくとも１つの挙動を記憶するステップをさらに含む。１つの実施形態では、この方法が、ユーザの少なくとも１つの挙動的選好を要求する、第１のコンポーネントに関連するクエリを広告ネットワークから受け取るステップをさらに含む。１つの実施形態では、この方法が、第１のコンポーネントの識別をモバイル装置から受け取るステップと、第１のコンポーネントを、少なくとも１つのプロセッサを介してエミュレート環境で実行して、第１の挙動がアクティブであるかどうかを判定するステップとをさらに含む。
【００８１】
１つの実施形態では、この方法が、少なくとも１つの挙動的選好に対する新たなアプリケーションの準拠性を確認するために、少なくとも１つの挙動的選好に関するクエリを受け取るステップをさらに含む。１つの実施形態では、この方法が、少なくとも１つの挙動的選好を評価して、第１のコンポーネントがモバイル装置上でどのように挙動すべきかを決定するために、通信ネットワークを介して受け取った要求に応答して情報を提供するステップをさらに含む。
【００８２】
以下、上記実施形態の様々な実装に関するさらなる例示的な非限定的詳細について説明する。１つの例では、ユーザが、（例えば、本明細書で説明した方法を用いて特定された）特定のコンポーネントをオプトアウトすることができる。ユーザには、ユーザがオプトアウトすることができるコンポーネントのリストが提示される。オプトアウト動作は、ユーザが行うことも、又はユーザの要求又は選択時に自動的に行うこともできる。その後、ユーザは、ユーザがオプトアウトした識別されたコンポーネントの状況表示を（例えば、モバイル装置のディスプレイ上で）見ることができる。
【００８３】
１つの実施形態では、様々な種類のオプトアウトオプションが存在する。例えば、ユーザは、コンポーネント全体をオプトアウトすること、コンポーネントの特定の挙動をオプトアウトすること、コンポーネント全体をオプトインすること、コンポーネントの特定の挙動をオプトインすること、コンポーネントが収集した一部又は全部のデータをパージすること、ユーザ又は装置をコンポーネントに対して識別するために使用された識別子をリセットすること、或いは装置上のコンポーネントの挙動又は装置上のコンポーネントとの間で転送されるデータを別様に修正することができる。
【００８４】
１つの実施形態では、様々な方法を用いてユーザに（例えば、モバイル装置のディスプレイ上に）オプトアウトオプションを表示することができる。第１の方法では、モバイル装置にインストールされているアプリケーション内にどのコンポーネントが存在するかを検出し、このモバイル装置にインストールされているアプリケーションのオプトアウトフローのみを表示することにより、オプトアウトオプションの表示が行われる。第２の方法では、ユーザがどの挙動をオプトアウトしたいかに関する入力がユーザから受け取られる。第３の方法では、データベースから決定される全ての考えられるオプトアウトフローがユーザに提示される。
【００８５】
１つの実施形態では、様々な方法でオプトアウトの状態を確認することができる。第１の方法では、コンポーネントのベンダ又は開発者により提供されるＡＰＩを用いてオプトアウト状態を確認することができる。第２の方法では、対応するコンポーネントを実行することにより（例えば、サーバ上のエミュレート環境で、又はユーザのモバイル装置上の挙動をモニタすることにより）、挙動が今なおアクティブであるかどうかを判定する。
【００８６】
１つの実施形態では、ユーザが、ユーザのモバイル装置上で望まれる特定の挙動の選好を宣言する。コンポーネントは、ユーザのモバイル装置上でどのように挙動すべきかを判断するために、コンポーネント自体がこれらの宣言された選好を評価する。
【００８７】
例えば、ユーザは自身の選好を設定し、これらの選好をローカルに又はリモートサーバ（例えば、ソフトウェアサーバ１２７）に記憶することができる。コンポーネントは、どのように挙動すべきか（又はモバイル装置又は別のコンピュータ装置により、どのように挙動することが必要とされているか）を判断するために（例えば、クエリを送信することにより）これらの選好に問い合わせを行う。
【００８８】
１つの実施形態では、ユーザが設定できる様々なタイプの選好が、ターゲット広告のための位置を収集すること、ユーザの装置の通知エリア内に通知を行うこと、装置にブックマーク又はアイコンを植え付けること、及び（例えば、ユーザがどのアプリをインストールしたかに関する）ターゲット広告の配信に使用されるアプリの追跡を行うことに関連する。
【００８９】
１つの実施形態では、様々な方法を用いてユーザ選好を記憶することができる。第１の方法では、アプリケーションが、ユーザがどの選好を設定したかを確認する問い合わせを行うことができるローカルサービスを装置上で使用する。
【００９０】
第２の方法では、サーバ側サービスが、ユーザ識別子（例えば、電話番号、ＩＭＥＩ、Ａｎｄｒｏｉｄ  ＩＤ、Ａｐｐｌｅ  ＵＤＩＤ、又はこれらのハッシュ／ソルトハッシュバージョン）に基づいてユーザの選好を問い合わせることをアドネットワークに許可する。
【００９１】
別の実施形態では、ユーザがどの挙動を望むかについて選好を宣言する。これらの選好に反するアプリケーションがダウンロード又はインストールされた時には、自動スキャニング又は警告が行われる。
【００９２】
例えば、モバイル装置は、インストール時にアプリケーション内にどのコンポーネントが存在するかを検出し、そのアプリケーションのコンポーネントに関連する挙動を特定する。これらの挙動のいずれかが認められたものでなく、又は警告を必要とする場合、モバイル装置は、アプリケーションがインストールされるのを防ぐこと（又はそのアプリケーションをインストールしないようにユーザに通知すること）、又はアプリケーションがそのコンポーネントの１つに認められていない挙動を含むことをユーザに警告することができる。
【００９３】
以下、さらなる非限定的な例について説明するが、ユーザが自身の意図を表すために使用できる機構は様々である。１つの例は、特定の挙動に対する肯定的オプトイン又はオプトアウトである。例えば、ユーザは、特定のコンポーネントが自分の位置を追跡することを望まない旨、又はＧｏｏｇｌｅ分析によって自身に関する特定の情報が知られることを望まない旨を示すことができる。別の例では、ユーザが、自分の位置データにあらゆるサードパーティコンポーネントがアクセスしたり、又はこれを見たりすることを望まない旨の要望を示す選好を設定することができる。
【００９４】
別の例では、アプリケーションポリシーを実行することができる。アドネットワーク検出器は、未確認の挙動を行うコンポーネントを有するあらゆるアプリに対し、このアプリがユーザの電話又はその他の装置にインストールされるのを防ぐ。これらの選好は、このような挙動を表すコンポーネントを含む可能性があるあらゆるアプリケーションのインストールの阻止という形で表される挙動ベースの選好である。
【００９５】
１つの例では、ユーザの電話上でアプリケーションが実行されている場合、このアプリケーションは、このユーザにとっての選好が何であるかを（例えば、ソフトウェアサーバ１２７に実装された）選好サービス又は選好ストアに尋ね、実行中にこの選好を尊重すべきである。多くのユーザのユーザ選好に関する情報は、コンポーネントが選好を問い合わせて尊重できるように、１つのオンライン位置で利用可能にすることができる。
【００９６】
アプリケーション内に存在するコンポーネントを特定することに関しては、このアプリケーションを識別してコンポーネントに分割することができる。識別後、これらの識別されたコンポーネントの挙動を特定するために使用できる技術は様々である。場合によっては、アプリケーション内のコンポーネントのコールグラフの構造的比較を調べる（例えば、どのコンポーネントがモバイル装置のオペレーティングシステムと通信しているか、及びオペレーティングシステムのどの側面が関与しているかを特定する）ことができる。コンポーネント内部のコードを調べる他の形の静的解析を使用することもできる。コードを調べることにより、例えばそのコンポーネントがユーザの位置を取得できるかどうか、又はその他の機能を実行できるかどうかを判定することができる。１つの例では、オンラインで共通して分散したコンポーネント及び対応するこれらのコンポーネントの挙動のリストを含む知識ベースを維持することができる。
【００９７】
また、基本的にエミュレート環境において又は実際の装置上でアプリケーションコンポーネントを実行し、ユーザ装置上で何が起きているか（例えば、コンポーネントがどのようなサービスに接続又は通信しているか）を検出して、コンポーネントが特定の挙動を有しているかどうかを判定する動的分析を使用することもができる。コンポーネント及びコンポーネント属性の特定に関するさらなる詳細については、以下の「アプリケーションのコンポーネント分析」という段落に示す。
【００９８】
１つの例では、ユーザの装置にインストールされたアプリケーション又は装置上での挙動（さらにはユーザが既に装置にインストールしているアプリ以外でも装置上で起こり得る全ての挙動一式）、及びこれらの挙動がどのようなアプリケーション／コンポーネントに起因するかを表示する画面をユーザに提示することができる。
【００９９】
１つの例では、ユーザが特定のコンポーネントをオプトアウトすることができる。ユーザの電話にどのようなコンポーネントが既に存在しているかをユーザに示すこともでき、或いはユーザが特定のタイプの挙動を望んでいない旨を示し、アドネットワーク検出器が、その挙動に関連する特定のネットワークのオプトアウトのみをユーザに示すこともできる。
【０１００】
別の例では、ユーザが、挙動に関する自身の選好を表す。これらの選好をオンライン選好サービスに記憶し、コンポーネントが、ユーザのモバイル装置にインストールされる前にこのサービスに問い合わせを行う必要があるようにすることもできる。このサービスは、モバイル装置に実装することも、又は別のサーバに実装することもできる。
【０１０１】
モバイル装置の、及びより一般的にはモバイル装置に関する情報をユーザに提示することを含むモバイル装置の使用法についての様々な非限定的な例に関するさらなる情報は、２０１１年２月２４日に公開された、Ｍａｈａｆｆｅｙ他による「モバイル装置の交換のためのシステム及び方法」という名称の既に公開されている米国特許出願公開第２０１１／００４７０３３号に記載されており、この特許出願の内容全体は本明細書に完全に記載されているかのように引用により本明細書に組み入れられる。
【０１０２】
図８は、様々な実施形態で使用することができるデータ処理システム（例えば、アイデンティティサーバ１１０、メッセージングサーバ１２５、アプリケーション市場１２３又はソフトウェアサーバ１２７）のブロック図である。図８にはコンピュータシステムの様々なコンポーネントを示しているが、コンポーネント同士を相互接続するいずれかの特定のアーキテクチャ又は態様を表す意図はない。これよりも少ない又はこれよりも多くのコンポーネントを有する他のシステムを使用することもできる。
【０１０３】
図８では、システム２０１が、（単複の）マイクロプロセッサ２０３とメモリ２０８とを相互接続する相互接続部２０２（例えば、バス及びシステムコアロジック）を含む。図８の例では、マイクロプロセッサ２０３がキャッシュメモリ２０４に結合される。
【０１０４】
相互接続部２０２は、（単複の）マイクロプロセッサ２０３とメモリ２０８を互いに相互接続するとともに、これらをディスプレイコントローラ及びディスプレイ装置２０７に、さらには入力／出力コントローラ２０６を介して入力／出力（Ｉ／Ｏ）装置２０５などの周辺装置にも相互接続する。典型的なＩ／Ｏ装置は、マウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、スキャナ、ビデオカメラ及び当業で周知のその他の装置を含む。
【０１０５】
相互接続部２０２は、様々なブリッジ、コントローラ及び／又はアダプタを介して互いに接続された１又はそれ以上のバスを含むことができる。１つの実施形態では、Ｉ／Ｏコントローラ２０６が、ＵＳＢ（ユニバーサルシリアルバス）周辺機器を制御するためのＵＳＢアダプタ、及び／又はＩＥＥＥ−１３９４周辺機器を制御するためのＩＥＥＥ−１３９４バスアダプタを含む。
【０１０６】
メモリ２０８は、ＲＯＭ（リードオンリメモリ）、及び揮発性ＲＡＭ（ランダムアクセスメモリ）、及びハードドライブ、フラッシュメモリなどの不揮発性メモリを含むことができる。
【０１０７】
通常、揮発性ＲＡＭは、メモリ内のデータをリフレッシュ又は維持するために絶えず電力を必要とする動的ＲＡＭ（ＤＲＡＭ）として実装される。通常、不揮発性メモリは、磁気ハードドライブ、磁気光学ドライブ、又は光学ドライブ（例えば、ＤＶＤ  ＲＡＭ）、或いはシステムから電力を除去した後でもデータを維持するその他のタイプのメモリシステムである。不揮発性メモリは、ランダムアクセスメモリとすることもできる。
【０１０８】
不揮発性メモリは、データ処理システム内の他のコンポーネントに直接結合されたローカル装置とすることができる。モデム又はイーサネット（登録商標）インターフェイスなどのネットワークインターフェイスを介してデータ処理システムに結合されたネットワーク記憶装置などの、システムから離れた不揮発性メモリを使用することもできる。
【０１０９】
１つの実施形態では、図８に示すようなデータ処理システムを用いて、アプリケーション市場１２３、メッセージングサーバ１２５及び／又はその他のサーバを実現する。
【０１１０】
別の実施形態では、図８に示すようなデータ処理システムを用いて、ユーザ端末、モバイル装置、又はアプリケーションがインストールされる別のコンピュータ装置を実現する。ユーザ端末は、例えば、ノートブックコンピュータ又はパーソナルデスクトップコンピュータの形をとることができる。
【０１１１】
いくつかの実施形態では、システムの１又はそれ以上のサーバを、複数のデータ処理システムのピアツーピアネットワークのサービス、又は分散コンピュータシステムのネットワークに置き換えることができる。ピアツーピアネットワーク又は分散コンピュータシステムは、集合的にサーバデータ処理システムと見なすことができる。
【０１１２】
本開示の実施形態は、（単複の）マイクロプロセッサ２０３及び／又はメモリ２０８を通じて実装することができる。例えば、（単複の）マイクロプロセッサ２０３内のハードウェアロジックを介し、メモリ２０８に記憶された命令を部分的に用いて、説明した機能を部分的に実装することができる。いくつかの実施形態は、メモリ２０８に記憶された追加命令を伴わずに（単複の）マイクロプロセッサ２０３を用いて実装される。いくつかの実施形態は、メモリ２０８に記憶された、１又はそれ以上の汎用マイクロプロセッサ２０３が実行するための命令を用いて実装される。従って、本開示は、特定のハードウェア及び／又はソフトウェアの構成に限定されるものではない。
【０１１３】
図９は、１つの実施形態によるユーザ装置（例えば、モバイル装置又はユーザ端末）のブロック図である。図９では、ユーザ装置が、提示装置２２９、ユーザ入力装置２３１、プロセッサ２３３、メモリ２２７、位置識別ユニット２２５及び通信装置２２３を接続する相互接続部２２１を含む。
【０１１４】
図９では、位置識別ユニット２２５を用いて地理的位置を識別する。位置識別ユニット２２５は、ユーザ装置の現在位置を自動的に識別するために、全地球測位システム（ＧＰＳ）受信機などの衛星測位システム受信機を含むことができる。
【０１１５】
図９では、通信装置２２３が、ネットワークサーバと通信して位置データを含むデータを提供するように構成される。１つの実施形態では、ユーザ入力装置２３１が、ユーザデータ又はコンテンツを受け取り、又は生成するように構成される。ユーザ入力装置２３１は、テキスト入力装置、静止画像カメラ、ビデオカメラ及び／又はサウンドレコーダなどを含むことができる。
【０１１６】
アプリケーションのコンポーネント分析
以下、コンポーネント分析及び属性（例えば、アプリケーションのコンポーネントを識別して特定すること）に関連する様々な追加の実施形態を示す。以下の実施形態は、上述した説明におけるあらゆる実施形態の一般性を限定するものではない。
【０１１７】
１つの実施形態では、アプリケーションが、１又はそれ以上のコンポーネント（例えば、ライブラリ、アドネットワーク又は分析ソフトウェア開発キット（ＳＤＫ）、又は協働するように設計されたその他のコードセット）を含むモバイルアプリケーションである。コンポーネントアイデンティティ（例えば、コンポーネントアイデンティティ１１４）は、コンポーネントに関する情報である。コンポーネントアイデンティティの例としては、（アドネットワーク、分析、及びマルウェアＳＤＫなどの）カテゴリ、（Ａｃｍｅ社、Ｊｏｈｎ  Ｓｍｉｔｈなどの）オーサーシップ、（「ＡｄＭｏｂ」などの）コンポーネント名、（ＡｄＭｏｂ  ６．ｘ、ＡｄＭｏｂ、ｚｌｉｂなどの）コンポーネントのバージョンの範囲又は全バージョン、及び（ｚｌｉｂ  １．２．７、ＡｄＭｏｂ  ＳＤＫ  ６．０．１などの）コンポーネントの特定のバージョンが挙げられる。所与のコンポーネントに関連するデータは、データベース１１２に記憶することができる。
【０１１８】
１つの実施形態では、コンポーネントの挙動が、一般にコンピュータ装置上でコンポーネントが機能している（例えば、モバイル装置１４９上で実行中のアプリケーション１０２内で機能している）時に存在又は発生する挙動（例えば、実行される機能）である。挙動の一例としては、サーバに特定の種類のデータを送信すること（例えば、ｗｗｗ１．ａｄｃｏｐａｎｙ．ｃｏｍにおけるサーバにブラウザ履歴を送信すること、又はｔｒａｃｋｉｎｇ．ａｎａｌｙｔｉｃｓｃｏｐａｎｙ．ｎｅｔにおけるサーバに位置を送信すること）がある。他の例としては、コンピュータ装置上のデータにアクセスすること（例えば、コンタクトすること、履歴を呼出すこと）、及び装置上の特定の機能を実行すること（例えば、画面の明るさを変更すること、テキストメッセージを送信すること、電話を掛けること、通知バーに広告をプッシュすること）が挙げられる。
【０１１９】
１つの実施形態では、コンポーネントの構造が、コンポーネントがコードとしてどのように実装されているかである。この構造は、コードパッケージ及び／又はコードモジュール構造を含むことができる。また、コンポーネントの構造は、例えば、制御フロー／コールグラフ内での相互参照、静的データの参照、及び使用される機械命令などの、コンポーネントの実行可能コードの特徴を含むこともできる。
【０１２０】
以下、コンポーネント分析に関連する様々なさらなる実施形態について説明する。第１の実施形態では、非一時的コンピュータ可読記憶媒体がコンピュータ可読命令を記憶し、このコンピュータ可読命令が、実行時にコンピュータシステムに、ユーザのコンピュータ装置（例えば、モバイル装置１４９）にインストールされたアプリケーション（例えば、アプリケーション１０２の１つ）に関し、このアプリケーションのコンポーネント（例えば、コンポーネント１０４及び１０６）を特定すること、及び第１のコンポーネントに関連する第１の挙動を含む、コンポーネントの各々に関連する少なくとも１つの挙動（例えば、アドサーバに装置の位置を送信すること）を、少なくとも１つのプロセッサを介して識別することを行わせる。この命令は、コンピュータシステムに、コンピュータ装置のユーザディスプレイ上にコンポーネントの識別を提示させることができる。この命令は、コンピュータシステムに、ユーザの少なくとも１つの挙動的選好を決定させることができる。
【０１２１】
１つの実施形態では、この命令が、コンピュータシステムに、少なくとも１つの挙動的選好（例えば、モバイル装置におけるユーザにより表されるユーザ意図）に少なくとも部分的に基づくユーザポリシー（例えば、ユーザポリシー１０８又はユーザポリシー１１６の１つ）を記憶し、コンピュータ装置にインストールされた新たなアプリケーションに対してユーザポリシーを実行させる。
【０１２２】
１つの実施形態では、この命令が、第１のコンポーネントに、アイデンティティサーバ（例えば、アイデンティティサーバ１１０又は別のコンピュータ装置）の問い合わせからの結果に従って実行させる。この命令は、コンピュータシステムに、アプリケーションをインストールしたことに応答して、アイデンティティサーバに記憶されたユーザのユーザポリシーへの準拠性を確認するためにアプリケーションをスキャンさせることができる。１つの実施形態では、この命令が、コンピュータシステムに、コンポーネントに関連する識別された挙動に基づいてコンポーネントの各々のためのユーザポリシーを実行させることができる。
【０１２３】
この命令は、コンピュータシステムに、コンポーネントのためのユーザポリシーに内の許容される挙動を識別された挙動と比較させることができる。１つの例では、許容される挙動を比較することが、他のコンピュータ装置上のコンポーネントで観察されるデータリポジトリ（例えば、データベース１１２）からの挙動を特定することを含む。この命令は、コンピュータ装置に、データリポジトリからの挙動の決定に応答して、コンピュータ装置上のコンポーネントのうちの１つ又はそれ以上の実行を設定又は無効化させることができる。
【０１２４】
１つの実施形態では、システムが、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータを記憶するデータリポジトリ（例えば、データベース１１２）と、少なくとも１つのプロセッサと、命令を記憶するメモリとを備え、この命令が、コンピュータ装置上で実行された時に、このコンピュータ装置に、ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、この新たなコンポーネントとコンポーネントデータの比較を行うこと、及びこの比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うことを行わせる。
【０１２５】
１つの実施形態では、上記命令がさらに、コンピュータ装置に、決定に応答して、第１の既知のコンポーネントの第１の既知の挙動をユーザのユーザポリシーと比較すること、及び新たなコンポーネントの観察される挙動をユーザポリシーと比較することの少なくとも一方を行わせる。１つの実施形態では、コンポーネントデータがコンポーネントアイデンティティ（例えば、コンポーネントアイデンティティ１１４）を含み、各コンポーネントアイデンティティは、既知のコンポーネントのそれぞれの識別情報に対応する。１つの実施形態では、上記決定が、コンピュー装置に新たなコンポーネントをインストールする前に行われる。
【０１２６】
１つの実施形態では、上記命令がさらに、コンピュータ装置に、上記比較に類似性値（例えば、０〜１の任意の範囲内の値）を関連付けさせ、上記決定が、この類似性値が閾値よりも大きいことに応答して行われる。１つの実施形態では、上記比較が、新たなコンポーネントの構造に少なくとも部分的に基づき、この構造は、パッケージング構造、モジュール構造及び実行可能コード構造から成る群から選択される。
【０１２７】
１つの実施形態では、コンポーネントデータが、既知の構造的特徴及び既知の挙動的特徴を含む。１つの実施形態では、上記比較を行うことが、既知の構造的特徴及び既知の挙動的特徴を新たなコンポーネントの識別された特徴と比較することを含む。
【０１２８】
１つの実施形態では、上記命令がさらに、コンピュータ装置に、識別された特徴が既知の構造的特徴及び既知の挙動的特徴の少なくとも一方と異なると判定された時に通知を生成させる。１つの実施形態では、通知を生成することが、コンピュータ装置に警告を送ることを含む。
【０１２９】
１つの実施形態では、方法が、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータをメモリに記憶するステップと、ユーザのコンピュータ装置の第１のアプリケーション内の新たなコンポーネントに関し、少なくとも１つのプロセッサを介して新たなコンポーネントとコンポーネントデータの比較を行うステップと、この比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うステップとを含む。
【０１３０】
１つの実施形態では、新たなコンポーネントが、第１のアプリケーションからのコード、及び第１のアプリケーション内のライブラリから成る群から選択される。１つの実施形態では、複数の異なるアプリケーションの各々が新たなコンポーネントを含み、この新たなコンポーネントは、コンピュータ装置で実行された時の一連の挙動に対応し、コンポーネントデータは、この一連の挙動を含む挙動データを含む。
【０１３１】
１つの実施形態では、この方法が、一連の挙動を新たなコンポーネントに関連付けるステップをさらに含む。１つの実施形態では、異なるアプリケーションのそれぞれを実行した時に複数のコンピュータ装置の各々を観察し、複数のコンピュータ装置の各々が一連の挙動を示す。１つの実施形態では、上記決定が、コンピュータ装置上の新たなコンポーネントの動作の背景に部分的に基づく。
【０１３２】
１つの実施形態では、上記背景が、第１のアプリケーションの実行中に第１のアプリケーションがユーザに対して可視的に存在しながら位置情報がアクセスを受けていることであり、上記一連の挙動は、コンピュータ装置の位置を特定することを含む。１つの実施形態では、コンポーネントデータが、各々が少なくとも１つ受け入れ可能な挙動に関連する複数の背景を含む。１つの実施形態では、コンポーネントデータが、既知のコンポーネントのリスクスコアを含み、上記方法が、ユーザのコンピュータ装置にインストールされている又はインストールされる予定のアプリケーションに関するクエリに応答してリスクスコアを提供するステップをさらに含む。
【０１３３】
１つの実施形態では、方法が、コンピュータ可読命令を含む第１のアプリケーションをメモリに記憶するステップを含み、このコンピュータ可読命令は、実行時にユーザのモバイル装置に、このモバイル装置にインストールされた第２のアプリケーションの新たなコンポーネントに関し、この新たなコンポーネントと、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータとの比較を行うこと、及びこの比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うことを行わせ、この方法は、第１のアプリケーションを、後でデータ処理システムからモバイル装置にインストールできるようにデータ処理システムに記憶するために、少なくとも１つのプロセッサを通じて通信ネットワークを介して送信するステップをさらに含む。
【０１３４】
１つの実施形態では、システムが、少なくとも１つのプロセッサと、第１のアプリケーションを記憶するメモリとを備え、第１のアプリケーションが、ユーザのモバイル装置上で実行された時に、このモバイル装置に、モバイル装置にインストールされた第２のアプリケーションの新たなコンポーネントに関し、この新たなコンポーネントと、第１の既知のコンポーネントのデータを含む既知のコンポーネントのコンポーネントデータとの比較を行うこと、及びこの比較に基づいて、新たなコンポーネントが第１の既知のコンポーネントに対応する旨の決定を行うことを行わせ、メモリが、後で第１のアプリケーションをデータ処理システムから通信ネットワークを介してモバイル装置にインストールできるように、第１のアプリケーションをデータ処理システムに送信するよう少なくとも１つのプロセッサに命令するように構成された命令をさらに記憶する。
【０１３５】
ここでは、１つの特定の実施形態のコンポーネント分析処理について説明しているが、新たなアプリケーションを識別可能なコンポーネントに分解することもできる。各コンポーネントのアイデンティティをユーザに表示することもできる。各コンポーネントアイデンティティに起因する挙動及び／又は構造の特徴を識別することもできる。所与のコンポーネントの挙動をユーザに表示することもできる。
【０１３６】
コンポーネントの挙動に基づくユーザポリシー（例えば、ユーザポリシー１０８）をユーザのコンピュータ装置上で実行することもできる。例えば、このユーザポリシーは、広告ネットワークに位置を送信するアプリケーションが存在しないことを必要とすることができる。別の例では、このユーザポリシーが、アプリケーションが広告ネットワークに識別子を送信しないことを必要とすることができる。
【０１３７】
新たなアプリケーション内に存在するコンポーネントの挙動及び／又は構造の特徴を識別することもできる。このアプリケーションは、例えばモバイル装置１４９にインストールされているアプリケーション１０２とすることができる。
【０１３８】
コンポーネントアイデンティティに起因する特徴と、新たなアプリケーション内で識別された特徴の比較を行う。１つの実施形態では、識別された特徴がコンポーネントアイデンティティに起因する特徴と異なる場合、コンポーネントの挙動が変化したことを示すための警告を生成する。コンポーネントアイデンティティに起因する特徴は、アイデンティティサーバ１１０のデータベース１１２に記憶し、この比較を行う時にアクセスすることができる。例えば、これらの起因する特徴は、それぞれのコンポーネントアイデンティティ１１４に関連するコンポーネントデータとして記憶することができる（すなわち、コンポーネントの挙動又はコンポーネントのその他の特徴に関する既知のデータをコンポーネントアイデンティティ１１４毎に記憶することができる）。
【０１３９】
以下、コンポーネント分析がどのように行われるかに関するさらなる詳細について説明する。上述したように、アプリケーションは識別可能なコンポーネントに分解される。具体的には、データリポジトリが、一連のコンポーネントアイデンティティをデータベースに記憶する。
【０１４０】
各コンポーネントアイデンティティは、アプリケーション内に所与のコンポーネントが存在する場合にそのアプリケーション内に所与のコンポーネントが存在することを示す所与のコンポーネントの識別情報を有する。識別情報の例としては、一連の１又はそれ以上のクラスのパッケージ名プレフィクス、クラス名、又はコードブロックのコードフィンガープリント、メソッド、クラス、パッケージなどが挙げられる。
【０１４１】
フィンガープリント法を使用する際には、様々な方法で実行することができる。第１の方法は、命令セットの要約表現を作成することである。別の方法は、コードセットのフィンガープリント識別子（例えば、インデックスのハッシュ）を作成できる、又は別のインデックスの組と比較してファジーマッチングを行うことができる一連のｎグラムインデックスを要約表現から作成することである。さらに別の方法では、アセット又はリソースフィンガープリント法を使用することができる。最終的な方法として、装置上の又は動的分析システム内のアプリケーションにより生成されたネットワークトラフィックを分析することによってフィンガープリント法を行うことができる。サーバ通信、サーバに向かうネットワークトラフィックを用いて、コンポーネントを特定のネットワークサービスに関連付けることができる。ネットワークトラフィックのいくつかの例として、ｓｅｒｖｅｒ１．ｓｏｍｅｗｈｅｒｅ．ｃｏｍという名前のサーバへのトラフィック、８．８．８．８又は２００１：４８６０：４８６０：：８８８８というＩＰのサーバへのトラフィック、「Ｕｓｅｒ−Ａｇｅｎｔ：ＭｙＨｔｔｐＬｉｂｒａｒｙ−１．１」というヘッダのＨＴＴＰ要求、特定のＵＲＩ又はＵＲＩパターンのＨＴＴＰ要求、及びＳＮＯＲＴ又はＹＡＲＡルールに適合するトラフィックが挙げられる。
【０１４２】
新たなアプリケーションの分析を用いて、所与のコンポーネントアイデンティティの識別情報がこの新たなアプリケーションに一致するかどうかを判定することができる。一致する場合、この新たなアプリケーション内に所与のコンポーネントが存在する。この分析は、クライアント（例えば、モバイル装置１４９）において、サーバ（例えば、アイデンティティサーバ１１０）において、又はこれらの組み合わせを用いて行うことができる。
【０１４３】
１つの実施形態では、この分析が一方のコンピュータ装置（例えば、クライアント又はサーバのいずれか）において行われる。識別情報のデータベースは、このコンピュータ装置上にローカルに記憶される。新たなアプリケーションは、局所的にも存在する（例えば、この新たなアプリケーション自体が、既にモバイル装置１４９から、又はモバイル装置１４９にインストールされる前にアプリケーション市場又はソフトウェアサーバ１２７からアイデンティティサーバ１１０に送信されている）。
【０１４４】
この実施形態では、複数の分析オプションが存在する。第１のオプションでは、この新たなアプリケーションをデータベース内の識別情報の項目毎に検索して、識別情報が新たなアプリケーションに一致するかどうかを判定する。或いは、新たなアプリケーションから情報を引き出し、チェック又は比較を行って、この情報がデータベースに記憶されている識別情報のいずれかに一致するかどうかを確認することもできる。
【０１４５】
別の実施形態では、クライアントコンピュータ装置が、アプリケーション内に存在するコンポーネントを特定するための情報をサーバに提出する。サーバには、コンポーネント識別情報（既知のコンポーネントデータ）のデータベースが記憶されている。アプリケーションは、クライアント上に存在する。クライアントは、アプリケーションから情報（例えば、コンポーネント識別情報）を引き出し、この引き出した情報をサーバに送信する。
【０１４６】
サーバは、この引き出された情報がデータベース内の識別情報のいずれかに一致するかどうかを確認する（例えば、引き出された情報を、モバイル装置１４９からのクエリとして受け取ることができる）。一致する場合、サーバは、コンポーネントアイデンティティに関する情報をクライアントに戻す（例えば、サーバは、クエリからの結果をモバイル装置１４９に送信する）。
【０１４７】
異なる実施形態では、クライアントコンピュータ装置が、新たなアプリケーションの識別子をサーバに提出する。この識別子は、例えば、アプリケーションバイナリコードのハッシュ、パッケージ名、アプリケーションのタイトル、又は別の形のアプリケーション識別子とすることができる。サーバは、以前に分析したアプリケーションに関するデータを記憶している。このデータは、以前に分析したアプリケーションの各々のコンポーネントのリストを含む。
【０１４８】
サーバは、クライアントから受け取った識別子を使用して、この識別子を以前に分析したアプリケーションに関するデータと比較する。この識別子と以前に分析したアプリケーションの間に一致が存在する場合、（上記の記憶されているコンポーネントリストから取得した）この一致したアプリケーションのコンポーネントが新たなアプリケーション内に存在するかどうかを判定する（また、この結果をクライアント装置に送信することもできる）。このデータベースとの照合は、１つの装置上におけるコンポーネント分析に関して上述した方法と同様に行うことができる。サーバは、これらの識別されたコンポーネントアイデンティティに関する情報をクライアントに戻す。
【０１４９】
コンポーネントがアプリケーション内に存在するものとして識別された後には、このコンポーネントのアイデンティティをユーザに表示することができる。例えば、アプリケーション内に存在するコンポーネントの識別及び表示は、アドネットワーク検出器に関して上述した方法と同様に行うことができる。アプリケーション内に存在するものとして識別されたコンポーネントについては、様々なコンポーネントアイデンティティのデータベースに記憶されている所与のコンポーネントに起因する挙動的及び／又は構造的特徴をサーバからクライアント装置に送信することができる。
【０１５０】
１つの実施形態では、アプリケーションのコンポーネント内に実際に存在する特徴を識別するための様々な方法が存在する。例えば、２０１１年２月２４日に公開された、Ｍａｈａｆｆｅｙ他による「セキュリティデータ収集及び分析のためのシステム及び方法」という名称の米国特許出願公開第２０１１／００４７５９７号に、モバイル装置上のアプリケーションから情報を収集し、サーバにおいてさらに処理することに関する一般的説明が示されており、この特許出願は本明細書に完全に記載されているかのように引用により本明細書に組み入れられる。この実施形態によれば、米国特許出願公開第２０１１／００４７５９７号においてＭａｈａｆｆｅｙ他により記載される収集された情報は、コンポーネントの特徴を識別するために、アイデンティティサーバ１１０においてコンポーネント分析に使用される。
【０１５１】
別の実施形態では、他の方法を用いて挙動的特徴を決定又は収集することもできる。例えば、ネットワークトラフィック（例えば、ＳＭＳ、ＩＰ）データ、又は所与の挙動のコードソース（例えば、ジオロケーティングに関与するクラス名又はパッケージ名、又はＳＭＳトラフィックの送信に関与するコードセグメントのフィンガープリント）に基づいて挙動を特定することができる。
【０１５２】
１つの実施形態では、コンポーネントアイデンティティに起因する特徴を、（例えば、モバイル装置にインストールされたばかりの新たなアプリケーションに関して収集した）実際に存在する特徴と比較する。例えば、挙動がコンポーネントアイデンティティの既知のデータの一部であり、新たなアプリケーションのコンポーネントの挙動がこの既知の挙動に一致する場合、（例えば、データベース１１２内の）このコンポーネントアイデンティティに関する情報が、この新たなアプリケーションに当てはまると想定される。コンポーネントアイデンティティに関する情報は、例えば、テキスト記述、リスクスコアリング、及びアプリケーションがマルウェアであるか否かのデータを含むことができる。例えば、この情報は、モバイル装置からのクエリに対する結果又は応答として提供することができる。
【０１５３】
実際の挙動と、コンポーネントアイデンティティの既知の挙動とが異なる場合、新たなアプリケーション内のコンポーネントが最近のバージョン又は改ざんされたバージョンであり、データベースを更新するためにコンポーネントを再評価する必要があることを示していると考えられる。また、上記で特定されたコンポーネント情報に基づいて警告を生成することもできる。例えば、さらなるコンポーネント分析を行うように分析者に電子メールを送信し、又は行うべきさらなるコンポーネント分析に関する入力を作業待ち行列内に作成することができる。
【０１５４】
他の様々な実施形態では、装置上のアプリケーションのコンポーネント識別の結果がユーザに提示される。ユーザは、このコンポーネント識別に基づき、ユーザポリシーを定義又は更新するため入力をユーザインターフェイスにおいて行うことができる。例えば、ユーザは、識別されたコンポーネントをオプトアウトすることができる。
【０１５５】
別の実施形態では、（手動評価が実用的でない場合）望ましくない可能性のあるコードを大規模に評価するためのコンポーネント評価処理が行われる。上述したコンポーネント分析は、人間が手動で行わずに済むように自動化される。以前に評価した（例えば、コンポーネントアイデンティティのデータとしてリスクスコアと共に記憶した）コンポーネントを特徴付け、このコンポーネントの挙動がいつ変化したか（すなわち、実際の挙動がコンポーネントアイデンティティに記憶されている既知の挙動といつ異なったか）を特定することによって自動化処理を生成することができ、人間は、コンポーネントコードの挙動が変化した時にのみ再評価を行えばよい。挙動の変化は、わずかに変化したコードフィンガープリントに関連することもできる（例えば、ファジーマッチングを行っている場合には、変化がないと考えられる閾値、一致が存在するものの十分な挙動の変化があると考えられる別の閾値が存在する）。同様に、開示した他の特徴を用いて、新たなアプリケーション内のコンポーネントが既知のコンポーネントと正確に一致するかどうか、又は再分析に値する形で部分的に一致するかどうかを判定することもできる。
【０１５６】
さらに別の実施形態は、アプリケーションの挙動的リスク分析に関する。この実施形態では、コンポーネント分析により、多くのユーザ装置にインストールされている数多くの異なるアプリケーションにわたって（又は同じアプリケーションのコピーにわたって）共通する既に評価した識別済みのコンポーネント（すなわち、データベース１１２に記憶されている既知のコンポーネントデータを有するコンポーネント）を、（例えば、関連する挙動が以前に観察されなかった）特定の新たなアプリケーション特有のコンポーネント（例えば、モバイル装置１４９における直近の１回のインストールに特有の挙動）と区別する。これらの特有の挙動は、新たなアプリケーション（例えば、アプリケーション１０２）の背景において詳細に監査される。
【０１５７】
背景の例として、一般にアドネットワークは位置データを求める。この挙動は広く受け入れられている。例えば、ユーザがＡｎｇｒｙ  Ｂｉｒｄｓなどのゲームを見ている場合、位置を求めるアプリケーションが示している挙動が以前に受け入れ可能なものとして（例えば、データストアデータベース１１４から特定されたものとして）観察されたアドネットワークに関連する場合、このような挙動を示すことがある。しかしながら、他の例では、実際のゲームコード自体が位置を求めてくることは不適切な挙動と考えられる。
【０１５８】
通常、所与のアプリケーションに特有のコードの量はかなり少ない。（例えば、モバイル装置用の）ほとんどのアプリケーションは、少なくとも１つの又は他の多くのアプリケーション内のコードを主に使用する（通常、アプリケーション内の大部分のコードは特有なものではなく、コードにはアプリケーション間で多くの共通性がある）。
【０１５９】
時に、既知のＳＤＫの背景において挙動を分析する場合、この挙動は、以前に受け入れ可能（又はリスクスコアが低い）と判断された反復可能な挙動の場合もある。従って、例えば既にライブラリを評価済みである場合、さらなる分析をスキップすることができる。
【０１６０】
既知の新たなアプリケーションの類似性に関する実施形態では、（上述したように）ファジーマッチング及びフィンガープリントを用いることができる。例えば、０〜１の類似性スコアを使用することができる。類似性スコアは、新たなアプリケーションの分析後にサーバから戻される。この新たなアプリケーション内のコードを、識別済みのコンポーネントライブラリ（例えば、アイデンティティサーバ１１０上のデータベース１１２内のライブラリ）内に既に存在するコードと比較する。
【０１６１】
通常、コンパイラは、特定のアプリケーションのインストールに対して他のインストールと異なるように多くの変更を行うことができるので、コードの類似性が正確に一致することはない。類似性は、差異が類似性閾値を超える場合、新たにインストールされたアプリケーション内に既知のコンポーネントが存在するという判定が行われるように定義される。例えば、新たなアプリケーションは、（以前に受け入れ可能と判定された）わずかにカスタマイズされたバージョンのコンポーネントを含むことがある。他の例では、新たなアプリケーションが、以前に分析したことのない新たなバージョンのコンポーネントを含むこともある。１つの実施形態では、代わりに類似性保護機構を突破するようにわずかに修正されただけの受け入れ不可能なコードが、上述したような挙動観察及びコンポーネント分析に基づいて受け入れ不可能として検出される。
【０１６２】
１つの実施形態では、コンポーネントが、既知のコンポーネントの類似性に対して分析される。挙動は、個人識別情報又は装置情報の使用、又はユーザインターフェイスの表示、通知、ネットワーク通信、及びファイルの読み取り又は書き込み動作を含む、アプリケーションが装置上で行うあらゆる動作を含むことができる。アプリケーション及びそのコンポーネントの挙動を制御又は制限するためのポリシーを定義して適用することもできる。この定義は、広告ネットワークを識別し、これらの広告ネットワークのための様々なオプトアウト動作を許可するためのポリシーを定義することを含むことができる。
【０１６３】
結び
本説明では、説明を単純にするために、様々な機能及び動作をソフトウェアコードによって行われ、又は生じるものとして説明している場合がある。しかしながら、当業者であれば、このような表現が意味するところは、マイクロプロセッサなどのプロセッサがコードを実行することによりこれらの機能が行われることであると認識するであろう。これとは別に、又はこれと組み合わせて、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を使用するようなソフトウェア命令の有無に関わらず、専用回路を用いて機能及び動作を実装することもできる。ソフトウェア命令を伴わずに、又はソフトウェア命令と組み合わせて配線回路を用いて実施形態を実装することもできる。従って、これらの技術は、ハードウェア回路とソフトウェアのいずれの特定の組み合わせにも、データ処理システムにより実行される命令のいずれの特定のソースにも限定されるものではない。
【０１６４】
実施形態によっては、完全に機能するコンピュータ及びコンピュータシステムに実装できるものもあるが、様々な実施形態を様々な形のコンピュータ製品として分散し、実際に分散を行うために使用する特定のタイプの機械又はコンピュータ可読媒体に関わらず適用することもできる。
【０１６５】
開示した少なくともいくつかの態様は、少なくとも部分的にソフトウェア内で具体化することができる。すなわち、これらの技術は、マイクロプロセッサなどのプロセッサが、ＲＯＭ、揮発性ＲＡＭ、不揮発性メモリ、キャッシュ又は遠隔記憶装置などのメモリに含まれる命令シーケンスを実行したことに応答して、コンピュータシステム又はその他のデータ処理システム内で実施することができる。
【０１６６】
実施形態を実装するために実行されるルーチンは、オペレーティングシステム、ミドルウェア、サービス配信プラットフォーム、ＳＤＫ（ソフトウェア開発キット）コンポーネント、ウェブサービス、又はその他の特定のアプリケーション、コンポーネント、プログラム、オブジェクト、「コンピュータプログラム」と呼ばれるモジュール又は命令シーケンスの一部として実装することができる。これらのルーチンへの呼び出しインターフェイスは、ソフトウェア開発団体にＡＰＩ（アプリケーションプログラミングインターフェイス）として公開することができる。通常、コンピュータプログラムは、コンピュータ内の様々なメモリ及び記憶装置に様々な時点で存在し、コンピュータ内の１又はそれ以上のプロセッサに読まれて実行された時に、様々な態様に関する要素を実行するのに必要な動作をこのコンピュータに行わせる１又はそれ以上の命令セットを含む。
【０１６７】
データ処理システムにより実行された時にこのシステムに様々な方法を実行させるソフトウェア及びデータの記憶には、機械可読媒体を使用することができる。これらの実行可能なソフトウェア及びデータは、例えば、ＲＯＭ、揮発性ＲＡＭ、不揮発性メモリ及び／又はキャッシュを含む様々な場所に記憶することができる。このソフトウェア及び／又はデータの一部を、これらの記憶装置のいずれか１つに記憶することもできる。さらに、集中化サーバ又はピアツーピアネットワークからデータ及び命令を取得することもできる。異なる集中化サーバ及び／又はピアツーピアネットワークから異なる時点で、及び異なる通信セッション又は同じ通信セッションにおいてデータ及び命令の異なる部分を取得することもできる。これらのデータ及び命令は、アプリケーションの実行前にその全体を取得することができる。或いは、実行に必要な実行時にデータ及び命令の一部を動的に取得することもできる。従って、特定の時点にデータ及び命令の全体が機械可読媒体上に存在する必要はない。
【０１６８】
コンピュータ可読媒体の例としては、以下に限定されるわけではないが、特に揮発性及び不揮発性メモリ素子、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ素子、フロッピー（登録商標）ディスク及びその他の取り外し可能ディスク、磁気ディスク記憶媒体、光学記憶媒体（例えば、コンパクトディスクリードオンリメモリ（ＣＤ  ＲＯＭＳ）、デジタル多機能ディスク（ＤＶＤ）など）などの記録可能及び記録不可能なタイプの媒体が挙げられる。コンピュータ可読媒体は、命令を記憶することができる。
【０１６９】
命令は、電気信号、光学信号、音響信号、又は搬送波、赤外線信号、デジタル信号などのその他の形の伝播信号のためのデジタル及びアナログ通信リンク内で具体化することもできる。しかしながら、搬送波、赤外線信号、デジタル信号などの伝播信号は有形機械可読媒体ではなく、命令を記憶するようには構成されていない。
【０１７０】
一般に、有形機械可読媒体としては、（例えば、コンピュータ、ネットワーク装置、携帯情報端末、製造ツール、１又はそれ以上のプロセッサの組を含むいずれかの装置などの）機械がアクセス可能な形で情報を提供（例えば、記憶）するいずれかの機構が挙げられる。
【０１７１】
様々な実施形態では、配線回路をソフトウェア命令と組み合わせて使用してこれらの技術を実装することができる。従って、これらの技術は、ハードウェア回路とソフトウェアのいずれの特定の組み合わせにも、データ処理システムにより実行される命令のいずれの特定のソースにも限定されるものではない。
【０１７２】
図面には複数の動作を特定の順序で示しているものもあるが、順序に依存しない動作は並べ替えることができ、動作によっては組み合わせたり又は分割したりできるものもある。並べ替え又は分類について具体的に言及しているが、当業者にはその他の形も明らかであると思われるので、代替例の包括的リストは示さない。さらに、これらの段階をハードウェア、ファームウェア、ソフトウェア、又はこれらのいずれかの組み合わせで実装することもできると認識されたい。
【０１７３】
上述した明細書では、本開示の特定の例示的な実施形態を参照しながら本開示を説明した。以下の特許請求の範囲に示す広範な思想及び範囲から逸脱することなく、本明細書に様々な修正を行えることが明らかであろう。従って、明細書及び図面は、限定的な意味ではなく例示的な意味で捉えるべきである。
【符号の説明】
【０１７４】
１０２  アプリケーション
１０４  コンポーネント
１０６  コンポーネント
１０８  ユーザポリシー
１１０  アイデンティティサーバ
１１２  データベース
１１４  コンポーネントアイデンティティ
１１６  ユーザポリシー
１２１  通信ネットワーク
１２３  アプリケーション市場
１２５  メッセージングサーバ
１２７  ソフトウェアサーバ
１４１  ユーザ端末Ａ
１４３  ユーザ端末Ｂ
１４５  ユーザ端末Ｃ
１４７  モバイル装置
１４９  モバイル装置
【図１】
2015527629.tif 000003
【図２】
2015527629.tif 000004
【図８】
2015527629.tif 000005
【図９】
2015527629.tif 000006
【図３】
2015527629.tif 000007
【図４】
2015527629.tif 000008
【図５】
2015527629.tif 000009
【図６】
2015527629.tif 000010
【図７】
2015527629.tif 000011
【国際調査報告】
2015527629.tif 000012
2015527629.tif 000013