(57)【特許請求の範囲】
【請求項１】
命令を記憶した少なくとも１つのマシンアクセス可能な記憶媒体であって、前記命令がマシン上で実行されたとき、前記命令は、前記マシンに、
特定のプラットフォームのソフトウェア開発キットのセマンティック・モデルに対して特定のアプリケーションのコードを解析させ、ここで、前記セマンティック・モデルは、複数のアプリケーション挙動を、前記特定のプラットフォームのそれぞれのアプリケーション・プログラミング・インタフェース（ＡＰＩ）コールに関連付け、前記特定のアプリケーションの前記コードは、前記特定のアプリケーションを特定のユーザ・デバイス上で実施する試みに関して解析され；
前記コードの前記解析に基づいて、前記特定のアプリケーションの挙動のセットを識別させ；
前記挙動のセットのうちの特定の挙動が望ましくない挙動であると識別させ、ここで、前記挙動のセットのうちの特定の挙動が望ましくない挙動であると識別させることは、１以上の挙動が１以上のルールに違反すると判定させることを含み；
前記挙動のセットのうちの１以上の挙動が望ましくない挙動であるとの識別に基づいて、前記特定のユーザ・デバイスへの前記特定のアプリケーションのインストールをブロックさせる、
記憶媒体。
【請求項２】
前記１以上のルールは、特定のユーザに関連付けられている、
請求項１記載の記憶媒体。
【請求項３】
前記１以上のルールの少なくとも一部は、前記特定のユーザにより定義されたルールを含む、
請求項２記載の記憶媒体。
【請求項４】
前記１以上のルールは、ネットワーク・サービス・プロバイダに関連付けられている、
請求項１記載の記憶媒体。
【請求項５】
ユーザ入力が、前記特定の挙動が望ましくないと識別する、
請求項１記載の記憶媒体。
【請求項６】
前記ユーザ入力は、前記の識別された挙動のセットの人間が読み取り可能な説明を表示するユーザ・インタフェースに関して受信される、
請求項５記載の記憶媒体。
【請求項７】
前記人間が読み取り可能な説明は、該説明を生成するためのテンプレートと、前記セマンティック・モデルとを用いて生成される、
請求項６記載の記憶媒体。
【請求項８】
前記特定のユーザ・デバイスは、スマートフォン及びタブレット・コンピューティング・デバイスのうちの１つである、
請求項１記載の記憶媒体。
【請求項９】
特定のプラットフォームのソフトウェア開発キットのセマンティック・モデルに対して特定のアプリケーションのコードを解析する解析ステップであって、前記セマンティック・モデルは、複数のアプリケーション挙動を、前記特定のプラットフォームのそれぞれのアプリケーション・プログラミング・インタフェース（ＡＰＩ）コールに関連付け、前記特定のアプリケーションの前記コードは、前記特定のアプリケーションを特定のユーザ・デバイス上で実施する試みに関して解析される、解析ステップと、
前記コードの前記解析に基づいて、前記特定のアプリケーションの挙動のセットを識別するステップと、
前記挙動のセットのうちの特定の挙動が望ましくない挙動であると識別するステップと、
前記挙動のセットのうちの１以上の挙動が望ましくない挙動であるとの識別に基づいて、前記特定のユーザ・デバイスへの前記特定のアプリケーションのインストールをブロックするステップと、
を含む、方法であって、
前記特定のアプリケーションのコードを制御フローに逆アセンブルし、前記セマンティック・モデルに少なくとも部分的に基づいて、前記特定のアプリケーションに関するアプリケーション・ロジックのモデルを生成するステップ
をさらに含む、
方法。
【請求項１０】
前記アプリケーション・ロジックのモデルは、さらに、アンビエント・アプリケーション・ナレッジに少なくとも部分的に基づく、
請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンピュータ・セキュリティの分野に関し、より詳細には、モバイル・デバイスのセキュリティに関する。
【背景技術】
【０００２】
スマートフォン、ＰＤＡ、ラップトップ、ネットブック、及びタブレット等のモバイル・デバイスの流通及び使用が、急速なペースで拡大しつつある。さらに、そのようなデバイスの採用が、いくつかの先進国市場において、広がってきており、デスクトップ・コンピュータ及びフィーチャフォンの採用を上回っている。モバイル・デバイスのオペレーティング・システム及びハードウェア能力の高度化が、進みつつあり、場合によっては、従来のコンピュータの特徴セット及び機能に勝るようになってきている。例えば、現在のモバイル・デバイスは、従来のデバイスには通常含まれない、グローバル・ポジショニング・システム（ＧＰＳ）のような位置センサ、加速度計、ジャイロスコープ、近距離通信（ＮＦＣ）等の様々なセンサ及びサブシステムを有することができる。これに加えて、いくつかのモバイル・デバイスの常時接続性、及び所有者がそのようなデバイスを常に持ち運ぶ性質から、モバイル・デバイスは、マルウェア開発者、ハッカ、及び他の悪意のある行為者にとって、魅力的なターゲットになってきている。さらに、「アプリケーション・ストア（app  store）」及び他のオープン・マーケットプレースは、Ｇｏｏｇｌｅ（登録商標）  Ａｎｄｒｏｉｄ（登録商標）、ｉＯＳ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等のデバイス・プラットフォームを含むそのようなデバイス向けに開発されている何万というアプリケーションの開発を可能にしたが、そのようなアプリケーションの一部は、品質及び目的に疑わしいところがある。
【図面の簡単な説明】
【０００３】
様々な図面における同様の参照番号及び指定は同様のエレメントを示す。
【図１】一実施形態に従った、アプリケーション管理システムを含む例示的なシステムの簡略化された概略図。
【図２】一実施形態に従った、例示的なアプリケーション・マネージャ及びユーザ・デバイスを含む例示的なシステムの簡略化されたブロック図。
【図３】一実施形態に従った、ユーザ・デバイスのアプリケーションの解析及び回復を示す簡略化されたブロック図。
【図４】一実施形態に従った、アプリケーションの例示的な挙動評価を示す簡略化されたブロック図。
【図５Ａ】いくつかの実施形態に従った、例示的なアプリケーション内の制御フローの簡略化された表現。
【図５Ｂ】いくつかの実施形態に従った、例示的なアプリケーション内の制御フローの簡略化された表現。
【図６】いくつかの実施形態に従った、例示的なユーザ・デバイスがアクセス可能な例示的なサブシステムを示す簡略化されたブロック図。
【図７】いくつかの実施形態に従った、アプリケーション挙動を判定するためのルールの使用を示す簡略化されたブロック図。
【図８】一実施形態に従った、アプリケーション挙動の評価及び望ましくない挙動の回復を示す簡略化されたフロー図。
【図９】一実施形態に従った、アプリケーションの挙動解析に基づいて、望ましくない挙動を含むと判定されたアプリケーションの管理及び修正に関してなされた決定を示す簡略化されたフロー図。
【図１０】一実施形態に従った、アプリケーションの例示的な回復を示す簡略化されたフロー図。
【図１１】一実施形態に従った、アプリケーションの例示的な回復を示す簡略化されたブロック図。
【図１２Ａ】いくつかの実施形態に従った、アプリケーションの望ましくない挙動の検出及び修正の例を示す図。
【図１２Ｂ】いくつかの実施形態に従った、アプリケーションの望ましくない挙動の検出及び修正の例を示す図。
【図１２Ｃ】いくつかの実施形態に従った、アプリケーションの望ましくない挙動の検出及び修正の例を示す図。
【図１２Ｄ】いくつかの実施形態に従った、アプリケーションの望ましくない挙動の検出及び修正の例を示す図。
【図１２Ｅ】いくつかの実施形態に従った、アプリケーションの望ましくない挙動の検出及び修正の例を示す図。
【図１３】一実施形態に従った、アプリケーションの例示的な回復を示す簡略化されたフロー図。
【図１４Ａ】いくつかの実施形態に従った、例示的なモード・マネージャの特徴を示す簡略化されたブロック図。
【図１４Ｂ】いくつかの実施形態に従った、例示的なモード・マネージャの特徴を示す簡略化されたブロック図。
【図１５Ａ】いくつかの実施形態に従った、ユーザ・デバイスにおけるモードを管理するための例示的なアルゴリズムの諸部分を示す図。
【図１５Ｂ】いくつかの実施形態に従った、ユーザ・デバイスにおけるモードを管理するための例示的なアルゴリズムの諸部分を示す図。
【図１６】一実施形態に従った、デバイス間でデバイス・モードを共有するための簡略化されたブロック図。
【図１７】一実施形態に従った、デバイスのモードを管理することにおけるコンテキストの使用を示す簡略化されたフロー図。
【図１８】いくつかの実施形態に従った、ユーザ・デバイス上でのリモート設定及び／又はモードのアクティブ化を示す簡略化されたフロー図。
【図１９】いくつかの実施形態に従った、収集されるアプリケーション情報を示す簡略化されたブロック図。
【図２０Ａ】いくつかの実施形態に従った、ユーザ・デバイスのモード管理に関して提供される例示的なユーザ・インタフェースのスクリーンショット。
【図２０Ｂ】いくつかの実施形態に従った、ユーザ・デバイスのモード管理に関して提供される例示的なユーザ・インタフェースのスクリーンショット。
【図２０Ｃ】いくつかの実施形態に従った、ユーザ・デバイスのモード管理に関して提供される例示的なユーザ・インタフェースのスクリーンショット。
【図２０Ｄ】いくつかの実施形態に従った、ユーザ・デバイスのモード管理に関して提供される例示的なユーザ・インタフェースのスクリーンショット。
【図２１Ａ】いくつかの実施形態に従った、例示的なアプリケーション管理システムを伴う例示的なオペレーションを示すフローチャート。
【図２１Ｂ】いくつかの実施形態に従った、例示的なアプリケーション管理システムを伴う例示的なオペレーションを示すフローチャート。
【図２１Ｃ】いくつかの実施形態に従った、例示的なアプリケーション管理システムを伴う例示的なオペレーションを示すフローチャート。
【発明を実施するための形態】
【０００４】
図１は、例えば、例示的なアプリケーション管理サーバ１０５及び１以上のモバイル・ユーザ・デバイス１１０、１１５、１２０、１２５を含む例示的なシステム１００を示している。そのようなモバイル・ユーザ・デバイスとして、いくつかある例の中でもとりわけ、スマートフォン、モバイル・ゲーミング・システム、タブレット・コンピュータ、ラップトップ、ネットブックがある。アプリケーション管理サーバ１０５は、ダウンロードされたアプリケーション、インストールされたアプリケーション、使用されているアプリケーション、又はユーザ・デバイス１１０、１１５、１２０、１２５のために提供されたアプリケーションの管理を支援するための１以上のサービスをユーザ・デバイスに提供することができる。ユーザ・デバイス１１０、１１５、１２０、１２５は、例えば、Ａｎｄｒｏｉｄ（登録商標）  Ｍａｒｋｅｔ、ｉＴｕｎｅｓ（登録商標）、及び他の例等の集約型アプリケーション店舗（centralized  application  storefront）等のアプリケーション・サーバ１４０にアクセスすることができる。アプリケーション・サーバ１４０は、いくつかの例において、ユーザ・デバイス１１０、１１５、１２０、１２５にダウンロード及びインストールされ得るソフトウェア・アプリケーションの他のソースをさらに含み得る。ユーザ・デバイス１１０、１１５、１２０、１２５は、ローカル・エリア・ネットワーク及びインターネット等のワイド・エリア・ネットワークを含む１以上のネットワーク１３０を介して、アプリケーション管理サーバ１０５と通信することができ、アプリケーション管理サーバ１０５のデータ及びサービスを使用することができる。例示的なアプリケーション管理サーバ１０５のサービスの中でもとりわけ、ユーザ・デバイス１１０、１１５、１２０、１２５に利用可能なアプリケーションは、少なくとも部分的にアプリケーション管理サーバ１０５を介して提供される機能により、解析、評価、及び回復され得る。さらに、アプリケーション管理サーバ１０５は、ユーザ・デバイス１１０、１１５、１２０、１２５に利用可能になったサービスに関して、情報サーバ１４５等の他の外部システム及びサーバとインタラクトして、他の外部システム及びサーバのリソース、データ、及びサービスを使用することができる。例えば、そのような情報サーバ１４５は、いくつかある例の中でもとりわけ、ユーザ・デバイス１１０、１１５、１２０、１２５に利用可能なアプリケーションに関するさらなるインテリジェンス（intelligence）及びコンテキスト（context）を提供するサービス及びデータをホストすることができる。
【０００５】
一般に、例示的なコンピューティング環境１００におけるシステム・デバイスを含む「サーバ」、「クライアント」、「クライアント・デバイス」、「ユーザ・デバイス」、「モバイル・デバイス」、「コンピューティング・デバイス」、「ネットワーク・エレメント」、「ホスト」、「システム・タイプ・システム・エンティティ」、及び「システム」（例えば、１０５、１１０、１１５、１２０、１２５、１４０、１４５等）は、コンピューティング環境１００に関連するデータ及び情報を受信、送信、処理、記憶、又は管理するよう動作可能な電子コンピューティング・デバイスを含み得る。本文書で使用されるとき、用語「コンピュータ」、「プロセッサ」、「プロセッサ・デバイス」、又は「処理デバイス」は、任意の適切な処理デバイスを含むよう意図されている。例えば、コンピューティング環境１００内の単一のデバイスとして示されるエレメントは、複数のサーバ・コンピュータを含むサーバ・プール等の複数のコンピューティング・デバイス及びプロセッサを用いて実装され得る。さらに、コンピューティング・デバイスのうちのいずれか、全て、又はいくつかは、Ｌｉｎｕｘ（登録商標）、ＵＮＩＸ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ（登録商標）  ＯＳ、Ａｐｐｌｅ（登録商標）  ｉＯＳ（登録商標）、Ｇｏｏｇｌｅ（登録商標）  Ａｎｄｒｏｉｄ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）  Ｓｅｒｖｅｒ等を含む任意のオペレーティング・システムとともに、カスタマイズされたオペレーティング・システム及びプロプライエタリなオペレーティング・システムを含む特定のオペレーティング・システムの実行を仮想化するよう適合された仮想マシンを実行するよう適合され得る。
【０００６】
さらに、サーバ、ユーザ・デバイス、ネットワーク・エレメント、システム、及び他のコンピューティング・デバイスは、それぞれ、いくつかある機能及びハードウェアの中でもとりわけ、１以上のプロセッサ、コンピュータ読み取り可能メモリ、及び１以上のインタフェースを含み得る。サーバは、任意の適切なソフトウェア・コンポーネント若しくはモジュール、又は、分散ソフトウェア・アプリケーション、エンタプライズ・ソフトウェア・アプリケーション、又はクラウドベースのソフトウェア・アプリケーション、データ、及びサービスを含む、ソフトウェア・アプリケーション及びサービス（例えば、サーバ１０５のパーソナル・セーフティ・システム、サービス、及びアプリケーション等）をホスト及び／又はサーブすることができる１以上のコンピューティング・デバイスを含み得る。例えば、いくつかの実施例において、アプリケーション管理サーバ１０５、アプリケーション・サーバ１４０、情報サーバ１４５、又はコンピューティング・システム１００の他のサブシステムは、システム１００における他のサービス及びデバイスとインタフェースをとり、協働し、そのようなサービス等に依存し、あるいはそのようなサービス等により使用されるデータ、ソフトウェア・サービス、及びアプリケーションをリモートでホストし、サーブし、あるいは管理するよう構成されるクラウド実装型システムに少なくとも部分的に含まれ得る。いくつかの例において、サーバ、システム、サブシステム、又はコンピューティング・デバイスは、一般的コンピューティング・システム、サーバ、サーバ・プール、又はクラウド・コンピューティング環境上でホストされ得、共有メモリ、共有プロセッサ、及び共有インタフェースを含むコンピューティング・リソースを共有し得るデバイスの組合せとして実装され得る。
【０００７】
ユーザ、エンドポイント、又はクライアント・コンピューティング・デバイス（例えば、１１０、１１５、１２０、１２５等）は、従来のコンピューティング・デバイス及びモバイル・コンピューティング・デバイスを含み得る。そのようなコンピューティング・デバイスとして、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、スマートフォン、携帯情報端末、フィーチャフォン、ハンドヘルド・ビデオ・ゲーム・コンソール、デスクトップ・コンピュータ、インターネット対応テレビジョン、及び人間のユーザとインタフェースをとり、１以上のネットワーク（例えば、１３０）を介して他のデバイスと通信することができる他のデバイスがある。コンピュータ支援型アプライアンス（computer-assisted  appliance）又は「スマート」アプライアンスは、家庭用デバイス及び産業用デバイス、並びに家庭用機械及び産業用機械を含み得る。そのようなデバイス及び機械は、コンピュータ・プロセッサを含み、コンピュータ・プロセッサ、他のハードウェア、及び／又はコンピュータ・プロセッサにより実行される１以上のソフトウェア・プログラムにより、制御され、モニタリングされ、支援され、補完され、あるいはデバイスの機能を向上させる。コンピュータ支援型アプライアンスは、多様なコンピュータ支援型機械及び製品を含み得る。そのようなコンピュータ支援型機械及び製品として、冷蔵庫、洗濯機、自動車、ＨＶＡＣシステム、産業用機械、オーブン、セキュリティ・システム等がある。
【０００８】
ユーザ・コンピューティング・デバイス、コンピュータ支援型アプライアンス、サーバ、及びコンピューティング・デバイスの特性は、一般に、それぞれのオペレーティング・システム、及びロードされたソフトウェア・プログラム、インストールされたソフトウェア・プログラム、実行されたソフトウェア・プログラム、動作されたソフトウェア・プログラム、又は各デバイスがアクセス可能なソフトウェア・プログラムの集合を含め、デバイスごとに大きく変わり得る。例えば、コンピューティング・デバイスは、プログラムの様々なセットをランし、実行し、インストールし、あるいは含むことができる。そのようなプログラムのセットとして、オペレーティング・システム、アプリケーション、プラグイン、アプレット、仮想マシン、マシン画像、ドライバ、実行可能ファイル、及びそれぞれのデバイスによりラン、実行、又は使用されることが可能な他のソフトウェアベースのプログラムを含む。
【０００９】
いくつかのシステム・デバイスは、システム・デバイスのコンピュータ・プロセッサによりサポートされる少なくとも１つのグラフィカル・ディスプレイ・デバイス及びユーザ・インタフェースをさらに含み得る。これにより、ユーザは、システム内で提供されるアプリケーション及び他のプログラムのグラフィカル・ユーザ・インタフェースを見て、グラフィカル・ユーザ・インタフェースとインタラクトすることが可能となる。そのようなグラフィカル・ユーザ・インタフェースは、システム・デバイス内でホストされるアプリケーションとインタラクトするプログラムのユーザ・インタフェース及びグラフィカル表現とともに、アプリケーション管理サーバ・サービス及び他のアプリケーションに関連付けられたユーザ・インタフェース等を含む。さらに、システム・デバイスは、１人のユーザにより使用されるという観点で説明され得るが、本開示は、多くのユーザが１つのコンピュータを使用し得ること、又は１人のユーザが、複数のコンピュータを使用し得ることも意図している。
【００１０】
図１は、複数のエレメントを含むものとして、又は複数のエレメントに関連付けられるものとして説明されるが、図１のコンピューティング環境１００内に示される全てのエレメントが、本開示の各代替実施例において使用され得るわけではない。さらに、図１の例に関して説明したエレメントのうち１以上は、コンピューティング環境１００の外部に配置されてもよいのに対し、他の例では、所定のエレメントは、他の説明したエレメント及び例示した実施例に記載されていない他のエレメントのうちの１以上の一部内に、又は他の説明したエレメント及び例示した実施例に記載されていない他のエレメントのうちの１以上の一部として含まれてもよい。さらに、図１に示した所定のエレメントは、他のコンポーネントと組み合されてもよいとともに、本明細書で説明する目的に加えて、代替の目的又は追加の目的のために使用されてもよい。
【００１１】
次に図２の例示的なブロック図に移ると、例えば、１以上のネットワーク１３０を介して通信するアプリケーション・サーバ１４０及び情報サーバ１４５を含むいくつかあるコンピューティング・デバイス及びネットワーク・エレメントの中でもとりわけ、アプリケーション・マネージャ２０５、ユーザ・システム２１０を含む例示的なシステムが示されている。１つの例示的な実施例において、アプリケーション・マネージャ２０５は、１以上のプロセッサ・デバイス２１５、メモリ・エレメント２１８、並びに１以上の他のソフトウェア実装型コンポーネント及び／又はハードウェア実装型コンポーネントを含み得る。例えば、１つの例示的な実施例において、アプリケーション・マネージャ２０５は、前述したものの組合せを含むいくつかある可能なマシン実行可能ロジック、コンポーネント、及び機能の中でもとりわけ、共有エンジン２２０、ユーザ・マネージャ２２２、回復エンジン２２５、挙動解析エンジン２２８、アプリケーション・インテリジェンス・エンジン２３０を含み得る。
【００１２】
一例において、共有エンジン２２０は、アプリケーション（例えば、アプリケーション・サーバ１４０により利用可能になったもの）に関連する情報のクラウドソーシングを管理するための機能を提供するとともに、アプリケーション・マネージャ２０５により少なくとも部分的に生成又は収集されたリソースを含む、そのような情報及びリソースの共有を提供するよう構成され得る。例えば、例示的な共有エンジン２２０は、いくつかある例の中でもとりわけ、特定のユーザ及び関連するユーザ・デバイス（例えば、２１０）向けに開発された修正されたアプリケーション２３２及び定義されたアプリケーション・モード２４０を、複数のユーザ・デバイス（例えば、２１０）にわたって共有されるようにすることができる。例示的なユーザ・マネージャ２２２は、アプリケーション・マネージャ２０５のサービスを使用又は利用する様々なユーザ・デバイス（例えば、２１０）のユーザ・アカウントを管理するための機能を提供することができる。例示的なユーザ・マネージャ２２２は、いくつかある例の中でもとりわけ、様々な修正されたアプリケーション２３２、アプリケーション・データ及びフィードバック・データ（例えば、２３５）、並びに特定のユーザにより作成又は修正されたアプリケーション・モードを含むアプリケーション・モード２４０を、１以上のユーザ・アカウント及びシステム内のユーザ・デバイス（例えば、２１０）に関連付けることができる。
【００１３】
いくつかの実施例において、アプリケーション・マネージャ２０５は、ユーザが、１以上のアプリケーション・サーバ（例えば、１４０）を介して提供されたアプリケーションを含む様々なアプリケーションをダウンロード、インストール、アクティブ化、又は使用、若しくは入手することを試みることに関して、１以上のユーザ・デバイス（例えば、２１０）にアプリケーション管理、セキュリティ、及び診断サービスを提供することができるコンポーネント、エンジン、及びモジュールをさらに含み得る。例えば、１つの例示的な実施例において、アプリケーション・マネージャ２０５は、システム上のユーザ・デバイスに利用可能になった様々なアプリケーションの機能を解析及び識別するよう適合された例示的な挙動解析エンジン２２８を含み得る。さらに、ユーザ又は管理者が、いくつかある例の中でもとりわけ、ブロック、制限、回復、又は修正することを望み得るアプリケーションの機能が、例えば、挙動解析エンジン２２８により識別され得る。したがって、いくつかの実施例において、例示的なアプリケーション・マネージャ２０５は、例えば、挙動解析エンジン２２８により検出された望ましくないアプリケーション機能を除去するために、ユーザに代わってアプリケーションを修正し、それにより修正されたアプリケーション２３２を生成するよう構成された例示的な回復エンジン２２５を含み得る。いくつかの例において、修正されたアプリケーション２３２は、対応するユーザのリクエスト、ルール、設定、及び嗜好に基づいて、具体的に修正及び構成され得る。さらに、アプリケーション・マネージャ２０５は、例えば、情報サーバ１４５及びアプリケーション・マネージャ２０５の内部と外部の両方にある他のソース並びにそのクライアント・ユーザ・デバイス（例えば、２１０）から、アプリケーション・データ（例えば、２３５）を収集するよう構成されたアプリケーション・インテリジェンス・エンジン２３０を含み得る。アプリケーション・インテリジェンス・エンジン２３０を使用して、例えば、アプリケーション・サーバ１４０によりサーブされた１以上のアプリケーションに関するインテリジェンスを収集することができる。インテリジェンスは、いくつかある例の中でもとりわけ、アプリケーション・マネージャ２０５による挙動解析及びアプリケーションの評価等の、アプリケーション・マネージャ２０５により提供されるサービスに関して使用され得る。
【００１４】
いくつかの実施例において、ユーザ・デバイス（例えば、２１０）は、１以上のプロセッサ・デバイス２４２及び１以上のメモリ・エレメント２４５に加えて、例えば、モード・マネージャ２４８、設定マネージャ２５２、セキュリティ・ツール２５０を含む１以上の他のソフトウェア実装型コンポーネント並びに／又はハードウェア実装型コンポーネント、及び１以上のアプリケーション２５５（例えば、アプリケーション・サーバ１４０を介して入手されたもの）を含み得る。１つの例示的な実施例において、ユーザ・デバイス２１０は、ユーザ・デバイス２１０上の複数のアプリケーション・アクセス・モード２６５を定義、実行、及び管理するための機能を備えたモード・マネージャ２４８を含み得る。モード・ルール２７０は、さらに、モード・マネージャ２４８により管理され得る。モード・ルール２７０は、例えば、ユーザ・デバイス２１０上の様々なモード２６５を自動的に開始又は実行するための特定の条件を定義する。さらに、１以上の設定２６０は、例えば、例示的な設定マネージャ２５２を介してユーザにより定義され得る。設定は、いくつかある例の中でもとりわけ、デバイス２１０の様々なモード２６５に対応するものであり、場合によっては、デバイス２１０の様々なモード２６５に関して使用される。
【００１５】
図３の例に移ると、簡略化されたブロック図３００は、例示的なアプリケーション・マネージャの機能及びフローを示している。例えば、挙動モニタ２２８は、いくつかある例の中でもとりわけ、アプリケーションの１以上の機能及び／又はコンテンツが、良いものであるか、悪いものであるか、疑わしいものであるか、あるいは未知の品質のものであるかを識別するために、アプリケーションを評価することができる。この評価は、情報サーバ、ユーザ・フィードバック、及び他のソース等の様々なソース（例えば、１４５）から取得された情報に基づき得る。「悪い」アプリケーション機能及び／又はコンテンツが識別される例において、アプリケーション回復エンジン２２５は、アプリケーションを修正し、アプリケーションの回復バージョンに対応する修正アプリケーション・ファイル２３２を生成するために識別された望ましくない機能を修正するよう関与し得る。さらに、疑わしいアプリケーション又は未知のアプリケーションは、実際においてアプリケーションンの機能に関するより多くのインテリジェンスが取得されるまで疑わしいアプリケーションを隔離するために、ユーザ・デバイス２１０の特定の制限アクセス・モードに専用となるよう、例えば、モード・マネージャ２４８により指定され得る。アプリケーションが、ユーザ、ネットワーク、管理者等のルール、要件、又は嗜好を満たすと判定される例において、アプリケーションは、ユーザ・デバイス上へのインストールに進むことが許可され得る。さらに、修正アプリケーション・ファイルを生成するよう回復されたアプリケーションは、いくつかある例の中でもとりわけ、修正されたアプリケーションがデバイス上へのインストールのためにユーザ・デバイスに進むことを可能にし得る。
【００１６】
図４は、例示的なアプリケーション挙動解析エンジンを介して可能にされる例示的な原理及びアクティビティを示すブロック図４００を含む。アプリケーション・バイナリ４０５は、逆アセンブラ・データ／制御フロー・アナライザ４１０によりアクセス又は受信され得る。逆アセンブラ・データ／制御フロー・アナライザ４１０は、アプリケーション説明、レビュー、コメント、並びに他の構造化データ及び非構造化データ等の、（例えば、外部情報ソースに加えて、ユーザ、レビューワ等から収集された）アンビエント・アプリケーション・ナレッジ（ambient  application  knowledge）４１５と相まって、アプリケーション・バイナリ４０５ごとに、アプリケーション・ロジックのモデル４２０を作成することができる。逆アセンブラ・制御フロー・アナライザ４１０は、例えば、コード又はアプリケーション・ロジック・モデルを、ソフトウェア開発キット内で定義された既知の機能又はソフトウェア開発キットから識別可能な既知の機能と、及び／又は対応するクライアント・デバイス・オペレーティング・システムに加えて、クライアント・デバイスに適合するアプリケーションの大部分又は全てにより使用される共通ＡＰＩと比較することに基づいて、所与のアプリケーションの挙動４２５を識別することができる。いくつかの例は、いくつかある例の中でもとりわけ、Ｇｏｏｇｌｅ（登録商標）  Ａｎｄｒｏｉｄ（登録商標）ソフトウェア開発キット、Ａｐｐｌｅ（登録商標）  ｉＯＳ（登録商標）ソフトウェア開発キット、Ｗｉｎｄｏｗｓ（登録商標）ソフトウェア開発キットを含む。
【００１７】
一般に、プラットフォーム・ソフトウェア開発キット（「ＳＤＫ」）は、プラットフォームに適合するアプリケーションによりアクセス可能な種々のプラットフォーム・サブシステムを定義し、そのようなプラットフォーム・サブシステムへのアクセスを提供するドキュメンテーション、ヘッダ・ファイル、ライブラリ、コマンド、インタフェース等を提供することができる。１つの例示的な実施例において、プラットフォームＳＤＫ及び対応するＡＰＩ並びにＡＰＩコール（すなわち、ＡＰＩの関数及びルーチンに対するコール）は、プラットフォームに適合するアプリケーションの挙動及び機能を判定するために、例えば、アプリケーション挙動エンジンにより使用され得るモデル内に表現され得る。共通に使用されるＡＰＩのセマンティックスが、アプリケーション挙動を導出するのに必要な重要情報とともに、プログラム読み取り可能な形態で表現される。例示的なアプリケーション挙動エンジンが、ＡＰＩコールを用いて所与のアプリケーションのオペレーション及び挙動を理解及び識別するために、セマンティック・モデルを使用することができるように、プラットフォームＳＤＫのセマンティックスが表現され得る。例えば、１つの例示的な実施例において、プラットフォームの潜在的なＡＰＩの全てが、それぞれのＡＰＩコールがプラットフォーム上で行うことを説明するとともにＡＰＩのオペレーション及び挙動の対応するパラメータを説明する挙動タグ（behavioral  tag）でそれぞれのＡＰＩコールの名前をタグ付けすることにより、例えば、ＡＰＩインテリジェンス４３０を介して表現され得る。一例として、そのようなセマンティック表現のテンプレートが、例えば、以下のようにモデル化され得る。
【数１】
0006013613.tif 000002
【００１８】
前述の例において、「ｃａｔｅｇｏｒｙ」は、ＡＰＩコールのタイプを指定し得、そのようなＡＰＩコールの一般的機能を識別するために使用され得る。そのような機能として、ＡＰＩコールが、特定のサブシステム、ディスク等から情報を読み出すもの、様々なメッセージを生成するもの、様々なネットワーク挙動を開始するもの、様々な外部サーバと通信することを試みるもの、特定のデバイス機能又はエレメント（例えば、カメラ、ＳＭＳコントローラ等）をトリガするものがある。「Ｓｅｎｓｉｔｉｖｉｔｙ」は、サブシステムが、多くの例の中でもとりわけ、マルウェアの導入、許可されていないトラッキング又はデータ収集、ＳＭＳメッセージ又は電子メール・メッセージの許可されていない又は望ましくない読み取り又は送信を潜在的に許す場合、特定のメモリ位置への読み込みがスパイ（spying）の可能性をもたらすかどうか等、サブシステムに関する悪意のある挙動の可能性のコンテキストにおいて、ＡＰＩにより影響が及ぼされる、あるいはＡＰＩにより関連付けられるサブシステムのそれぞれの感度（sensitivity）を表し得る。さらに、「ｄｅｐｅｎｄｅｎｃｙ」は、このＡＰＩの出力がプログラムの他の部分に直接的に影響を及ぼし得るかどうかを表し得る。例えば、ｓｅｎｄＴｅｘｔＭｅｓｓａｇｅ（）ＡＰＩは、いくつかある例の中でもとりわけ、このＡＰＩが単にＳＭＳメッセージを送出するだけであり、何も返さない場合には、依存関係を有さないものとして識別され得る。
【００１９】
他の情報は、ソースのコミュニティ４４５、ルール４５０、及び他の情報からインテリジェンスを収集するグローバル・スレット・インテリジェンス（ＧＴＩ）４４０等の、評価下にあるアプリケーションの挙動を判定するために、（例えば、例示的な解析エンジン（例えば、２２８）の）挙動ヒューリスティックス／ルール・エンジン４３５により使用され得る。
【００２０】
上述したように、例示的なアプリケーション挙動解析エンジン（例えば、２２８）は、例えば、適合するアプリケーションが基づく標準プラットフォームＳＤＫのセマンティック表現に基づいて、所与のアプリケーションの制御フロー、オペレーション、機能、及び挙動を識別するための機能を有することができる。図５Ａにおいて、例示的なゲーミング・アプリケーションのための簡略化されたアプリケーション制御フローの表現５００が示されている。ゲームの機能は、一般的に、望ましく、セキュアであり、安全であり得るが、プラットフォームＳＤＫのセマンティック表現及びゲーム・アプリケーションのためのアンビエント・アプリケーション・インテリジェンスと比較したゲーム・アプリケーション・バイナリのコードのより深い検査は、ユーザの明示的な知識又は許可を伴う又は伴わない、ＳＭＳメッセージを送信するアプリケーション等の、ユーザにより即座に識別可能でない、理解されない、あるいは認識されない他の機能の識別をもたらし得る。別の例として、図５Ｂに示されるように、アプリケーション・バイナリの特定のオブジェクトの検査が、所与のアプリケーションの機能及び制御フローの全体を明らかにし得るとともに、ユーザが認識、理解、又は承認し得ない、個々のプログラム、プログラム・ユニット、又はアプリケーション間の依存関係を明らかにし得る。一例として、いくつかの実施例において、識別された挙動ヒューリスティックスは、データ・フロー及びコールの特定のパターンを識別するＸＭＬファイルにおいて、外部的に表現され得る。挙動は、そこから、識別することができる。例えば：
【数２】
0006013613.tif 000003
【００２１】
いくつかの実施例において、例えば、プラットフォームＳＤＫのセマンティック表現のモデルに基づいて、アプリケーション・ロジックはモデル化され得、ルールが、アプリケーション・ロジックを解釈して、悪意のある挙動、プライバシを侵害する挙動、ポリシ違反の挙動、又は他の望ましくない挙動に対応するアプリケーションの対応するバイナリ内の命令及びコールを識別するために、適用され得る。アプリケーションの機能の論理モデルは、いくつかある例の中でもとりわけ、データ・フロー構造及び制御フロー構造を介したアプリケーション・ロジックの表現（例えば、５０５）を含み得る。データ・フロー構造は、データ・オブジェクトが、アプリケーション・ロジック（例えば、５１０）を通って、外部プログラム・ユニットを含む他のプログラム・ユニット（例えば、５１５）に到達するときの、データ・オブジェクトの寿命を表し得る。データ・フロー構造（例えば、５０５）を使用して、データが移動しアプリケーション・ロジックにより潜在的に変形されるときに、アプリケーション・プログラムの一部分からデータのフローを識別することができる。例えば、データ・フロー・モデルを使用して、いくつかある例の中でもとりわけ、インターネット通信後オペレーションを介して、特定のデータがアプリケーションによりリークされていると推定することができる。さらに、制御フロー構造は、影響を受けやすい（sensitive）又は望ましくないものであると判定されたアプリケーション・コールの発生源を識別するための、様々な関数コール（例えば、５２０、５２５）の制御フローを表し得る。例示的な例として、ＳＭＳメッセージを送信するアプリケーションによるコールは、多くの可能な例の中でもとりわけ、例えば、ユーザがインタラクトしたアプリケーションのＵＩエレメントに遡ることができる、あるいは、アプリケーションのバックグラウンド・プロセスにおける自律的イベントにまで遡ることができる。
【００２２】
図６の例に移ると、例えば、プラットフォームＳＤＫにおいて定義された１以上のＡＰＩを介してアプリケーションによりアクセス可能な様々なサブシステム、デバイス、及び機能を示す簡略化されたブロック図が示されている。いくつかの実施例において、全てのプラットフォーム・サブシステムは、サブシステムが、悪意のある挙動又は望ましくない挙動に関して操作又は使用されるかもしれないという可能性のコンテキストにおけるそれぞれのサブシステムの感度に基づいて、分類され得る、あるいは重みが割り当てられ得る。そのような重み及び感度は、様々なファクタに基づき得る。そのようなファクタとして、いくつかある例の中でもとりわけ、例えば、プライバシの侵害の可能性、データ・リーク、金銭上の感度がある。これらのファクタはまた、プラットフォームの様々なサブシステムの分類の基礎を形成し得る。そのようなサブシステムは、モバイル・デバイスに組み込まれ得る将来の機能を含む多くの可能な機能及びサブシステムの中でもとりわけ、例えば、連絡先リスト、フォト・ギャラリ、電子メール・クライアント、カレンダ、インターネット接続及び閲覧、グラフィックス、ビデオ機能、カメラ、オーディオ、セキュリティ・ツール及びエンジン、電話、Ｗｉ−Ｆｉ（登録商標）機能、Ｂｌｕｅｔｏｏｔｈ（登録商標）機能、データ・ポート、バッテリ電力、タッチスクリーン、グローバル・ポジショニング・システムを含み得る。
【００２３】
図７の例に示されるように、アプリケーション挙動解析エンジンのルール・エンジンは、例えば、ルール・データベースからのルールにアクセスすることができる。そのようなルールは、例えば、ユーザの嗜好に従った、特定のユーザ又はユーザのセット向けにカスタム定義されたルール及び／又はそのような特定のユーザ又はユーザのセットによりカスタム定義されたルールに加えて、ユーザに適用可能なポリシ（例えば、インターネット・サービス・プロバイダ、エンタプライズ・ネットワーク、ブロードバンド・データ・プロバイダ等のポリシ）を含む。ルール・エンジンは、（例えば、アプリケーションに対応するプラットフォームＳＤＫのセマンティック表現に基づいて作成された）アプリケーション・ロジック・モデルをさらなる入力として受け取り、アプリケーション・ロジック・モデルにおいて識別されたアプリケーションの様々なオペレーション及び機能を評価することができる。ルール・エンジンは、アプリケーションの特定のインスタンスに適用可能なものとして識別されたルールに従って、アプリケーションの様々なオペレーション及び機能を評価することができる。そのようなアプリケーションのインスタンスとして、識別されたルールに関連付けられたユーザの特定のユーザ・コンピューティング・デバイスにダウンロード又はインストールされることを試みられたアプリケーションのインスタンスがある。１以上のルール（例えば、所定の挙動又はアクションを禁止するルール）に違反し、いくつかの例において、識別されたアプリケーション挙動の修正及び／又は目標ユーザ・デバイス上の１以上のオペレーション・モードへのアプリケーションの割り当てを促すものとして識別されたアプリケーション挙動を含むアプリケーション挙動が、ルール・エンジンにより識別され得る。そのようなオペレーション・モードとして、いくつかある例の中でもとりわけ、隔離オペレーション・モード又は管理者オペレーション・モードがある。
【００２４】
いくつかの実施例において、識別された挙動の、ＡＰＩセマンティックスの説明に基づく人間が読み取り可能な説明が構築され得る。一例において、人間が話すことができる動詞及び名詞が、セマンティック表現におけるテンプレート・メッセージに関連付けられ得、ＡＰＩに利用可能な関数及びオペレーションの特定の人間が理解可能な説明にマッピングされ得る。さらに、例えば、アプリケーション挙動解析エンジンにより実行される、セマンティック・モデルに従ったアプリケーションの評価に関して、挙動解析結果の人間が読み取り可能なサマリが、そのマッピングから生成され得、いくつかの実施例では、解析されたアプリケーションの制御フロー、データ・フローとともに、様々な機能を説明するように、ユーザに提示され得る。そのような結果は、ユーザに不可視なあるいはユーザによる検出が難しい機能を含む、アプリケーションの解析中にカバーされなかった機能の説明を生成するために、人間が読み取り可能な説明を利用し得る。例えば、一実施例において、ユーザのデバイスからＳＭＳデータを読み取るための例示的なアプリケーションの機能を識別及び説明するために、テンプレートが使用及び入力され得る。例示的な例として、「このアプリケーションは、ＳＭＳインボックスから、あなたのＳＭＳデータを読み取り、ウェブ・サイトに送信する」といった対応する説明が生成され得る。そのような説明は、例えば、次のようなプラットフォームＳＤＫのセマンティック表現及びＡＰＩに基づいて例示的なテンプレートに書き入れることにより構築され得る：「このアプリケーションは、＜名詞：ＳＭＳインボックス＞から、あなたの＜名詞：ＳＭＳデータ＞を＜動詞：読み取り＞、＜名詞：ウェブ・サイト＞に＜動詞：送信する＞」。
【００２５】
いくつかの例において、解析されたアプリケーション挙動は、解析されたアプリケーションによる他のアプリケーション、プログラム、又はサービスの使用を明らかにし得る。いくつかの例において、解析されたアプリケーションによる、ローカル・アプリケーション、リモート・サービス、又は他のプログラムへのコールは、例えば、他のコールされたアプリケーションが、いくつかある例の中でもとりわけ、安全でない、信頼できない、あるいは未知であるとして識別される場合、望ましくないものであり得る。他の例において、解析されたアプリケーションによりコール又は使用されたプログラムは、信頼できるプログラムとして識別され得る。したがって、いくつかの実施例において、アプリケーション挙動解析エンジンは、様々な解析されたアプリケーションに既知である、あるいはそのようなアプリケーションにより潜在的にコールされ得る様々なプログラムのステータス及び評価を識別するホワイトリスト及び／又はブラックリストを使用、生成、変更、及び管理することができる。いくつかの実施例において、リモート・サーバによりホストされるアプリケーション及びサービスは、さらに、いくつかある例の中でもとりわけ、それぞれのＵＲＬ又はそれぞれのホスト・サーバに対応する他のアドレス情報により、そのようなホワイトリスト及び／又はブラックリストにおいて識別され得る。
【００２６】
いくつかの実施例において、挙動解析エンジンは、評価下で、アプリケーションにより特定のアクティビティが実行される、プラットフォームＡＰＩがアクセスされる、あるいは機能が使用されるコンテキストを識別することができる。一例として、プラットフォーム電話サブシステムにアクセスしようとする解析されたアプリケーションの試みは、その試みの原因又はコンテキストに基づいて評価され得る。例えば、いくつかのコンテキストにおいて、特定のＡＰＩコールは、完全に容認できるものであり得るのに対し、他のコンテキストにおいて、そのＡＰＩコールは望ましくないものであり得る。例えば、ボタン押下等のユーザ・インタフェース・インタラクションに応答して電話サブシステムにアクセスする識別されたアプリケーション機能は、いくつかある例の中でもとりわけ、ユーザにより提供された指示に応答するものではなく、自律的に電話サブシステムにアクセスしようとするアプリケーションによる試みとは異なって評価され得る。
【００２７】
上述したように、いくつかの実施例において、アプリケーション挙動の評価において使用され得るルールが定義され得る。そのようなルールは、挙動が悪意のあるものであると判定されるべきであるコンテキストを含む、アプリケーション挙動解析エンジンにより識別されたアプリケーションのロジック又は潜在的に悪意のある挙動のヒューリスティック解析を実行する際の使用のために表現及び構成され得る。例えば、ルール・エンジンは、アプリケーション内に存在する１以上の潜在的に悪意のある挙動又は望ましくない挙動を識別するために、１以上のルールをアプリケーション・ロジック・モデルに適用することができる。いくつかの実施例において、ルールは、以下のように表現され得る。
【数３】
0006013613.tif 000004
ルールは汎用的なものであってもよいし、特定のサブシステム等に固有のものであってもよい。そのようなルールとして、いくつかある例の中でもとりわけ、個人用連絡先データを記憶するメモリ・エレメントのデータ・リークを検出するルール等がある。特定のアプリケーション挙動は、単一のルール又は複数のルールのアプリケーションに基づいて導出され得る。
【００２８】
いくつかの実施例において、アプリケーション挙動解析エンジンは、解析が実行されるモバイル・ユーザ・デバイスからリモートにある１以上のサーバ・コンピューティング・デバイス上でホストされ得る。他の例では、アプリケーション挙動解析エンジンの少なくとも一部分は、サーバ・サイド・アプリケーション挙動解析エンジン・コンポーネントの機能とともに、代替的に又は重複して提供され得る。例えば、１つの例示的な実施例において、ユーザ・コンピューティング・デバイスには、ユーザ・デバイスにおいて実行されるアプリケーションの少なくとも部分的な又は迅速な予備的評価を可能にするアプリケーション挙動解析エンジン機能が提供され得る。それにより、ユーザに迅速なフィードバックを提供することができるとともに、アプリケーションが隔離されるべきであるか、ダウンロード又はインストールを拒否されるべきであるか、且つ／あるいは例えば、クラウド・システム内に設けられたもの等のリモート・アプリケーション挙動解析エンジンに転送されるべきであるかを評価することができる。それにより、アプリケーションのよりロバストな挙動解析が可能となる（おそらくは、挙動解析評価により増大した待ち時間をもたらし得る）。
【００２９】
いくつかの実施例において、アプリケーションの解析中、解析されるアプリケーションのダウンロード、隔離、又は起動は、解析が終了するまで、止められ得る、あるいは遅延され得る。いくつかの例において、ユーザには、アプリケーションの解析を識別するとともに、解析されるアプリケーションのインストール、ダウンロード、又は起動に対処するための様々なオプションを提供するプロンプトが提供され得る。例えば、ユーザには、いくつかある例の中でもとりわけ、解析を省略するオプション、解析されるアプリケーションのインストールを遅らせるオプション、解析されるアプリケーションを特定のモードに割り当てるオプションが提供され得る。さらに、いくつかの実施例において、評価に関してユーザに提示されるプロンプトは、挙動解析エンジン評価及び／又は解析されるアプリケーションに関連する外部インテリジェンスから収集された予備的情報等の情報とともに提示され得る。そのようなインテリジェンスは、例えば、いくつかある例の中でもとりわけ、解析されるアプリケーションの以前の評価において挙動解析エンジンにより収集されたインテリジェンスを含み得る。実際、いくつかの実施例において、挙動解析エンジンは、いくつかある例の中でもとりわけ、特定の解析されるアプリケーションに関して、挙動解析エンジンから受信されたフィードバックに他のユーザがどのように反応したかを、そのアプリケーションのために発見されたユーザ挙動に対して示すことができる。
【００３０】
いくつかの実施例において、挙動解析エンジンは、挙動解析エンジンに既知の、且つ／あるいは挙動解析エンジンにより以前に解析された、アプリケーションのブラックリスト、グレイリスト、及び／又はホワイトリストを保持することができる。そのようなブラックリスト、グレイリスト、及び／又はホワイトリストは、他のソース及び他のユーザからの外部インテリジェンスである、以前の挙動解析から収集されたインテリジェンスの履歴に基づき得る。挙動解析エンジンは、そのような情報を使用して、アプリケーションの初期評価を実行することができ、以前の解析から収集された情報を利用することができる。それにより、初期フィルタリング又はフィードバックが、ユーザが特定のアプリケーションをどのように扱うかとともに、挙動解析エンジンを用いてそのアプリケーションに対するさらなる挙動解析を開始するかどうかを決定することを支援するために、ユーザに提供され得る。
【００３１】
アプリケーションの挙動解析、及び／又はブラックリスト／ホワイトリストは、さらに、いくつかある例及び考慮事項の中でもとりわけ、様々なアプリケーションに責任があるとして識別された開発者又は他のパーティの一般的評価情報を組み込む、あるいは考慮に入れることができる。アプリケーションの開発者、ディストリビュータ等の信頼性又は非信頼性（untrustworthiness）を考慮に入れたルールが定義され得る。例えば、挙動解析エンジンによる開発者のアプリケーションの集約解析に基づいて、アプリケーション開発スコア・レーティングが、開発者のために計算され得る。例えば、そのようなレーティングは、いくつかある例の中でもとりわけ、以下のように導出され得る：
ＡｐｐＤｅｖｅｌｏｐｅｒ  Ｒａｔｉｎｇ＝ｆ（アプリケーションの総数，アプリケーションにおける望ましくない挙動の重み付き平均，アプリケーションの人気、低レーティングの平均レシオ）
例えば、１つの例示的な例において、望ましくない挙動の重み付き平均は、開発者のアプリケーションのセットに対して生成され得る：
【表１】
0006013613.tif 000005
いくつかある例示的な実施例の中でもとりわけ、平均重み（average  weight）は、
平均重み＝総重み／アプリケーションの総数
により導出され得る。
【００３２】
挙動解析エンジンにより評価されるアプリケーションにより使用され得る、１以上のネットワークにわたって検出された悪意のある挙動を識別するために、グローバル・スレット・インテリジェンス（ＧＴＩ）フィード等のインテリジェンス・データベース等の外部ソースを使用することができる。例えば、他の悪意のある攻撃、マルウェア、又は疑わしいシステムに関連する、あるいは他の悪意のある攻撃、マルウェア、又は疑わしいシステムにおいて使用されたと以前に判定された様々なＵＲＬ、ＩＰアドレス、電話番号、及びファイルを識別することができる。さらに、挙動解析エンジンは、インテリジェンス・データベースとインタフェースをとって、いくつかある例の中でもとりわけ、挙動解析エンジン自身により実行されたアプリケーションの挙動解析から収集されたさらなるインテリジェンスを提供することができる。
【００３３】
さらに、いくつかのシステム及びプラットフォームにおいて、１以上のアプリケーション・サーバ又は店舗により提供されたアプリケーションは、所与のアプリケーションのために収集された、基本的説明、レーティング、ユーザ・フィードバック等をユーザに提供することができる。残念なことに、多くの例において、そのようなレーティング、アプリケーション説明、コンテンツ・レーティング等は、アプリケーション開発者自身により提供、操作、又は影響され得る。それにより、いくつかのアプリケーションに関してユーザに提供される情報の信頼性又は正当性が潜在的に損なわれる。したがって、実施例のうちのいくつかにおいて、例示的な挙動解析エンジンにより実行されたアプリケーションの挙動解析から収集されたインテリジェンス（例えば、挙動説明）を使用して、プラットフォーム上で利用可能なアプリケーションの閲覧、購入、及びダウンロードに関して、ユーザに提供される説明を補足、訂正、又は修正することができる。さらに、いくつかの実施例において、挙動解析エンジンは、こうしたデフォルトのアプリケーション説明、コンテンツ・レーティング、ユーザ・フィードバック等を、挙動解析に関して考慮される外部インテリジェンスとして使用することができる。さらに他の例において、挙動解析エンジンを使用して、挙動に従ってアプリケーションを分類するための基礎として機能し得る、複数のアプリケーション間の共通挙動特徴（common  behavioral  trait）を識別することができる。そのような分類は、いくつかある例の中でもとりわけ、ユーザが様々なアプリケーションの品質及び挙動、並びに潜在的リスクをより良く理解するのを支援するために、ユーザに提供され得る。
【００３４】
図８に移ると、（例えば、挙動解析エンジンを用いた）アプリケーション挙動の深い解析を実行し、アプリケーションにおいて望ましくないと判定された挙動を修正する試みにおけるアプリケーション回復を実行するとともに、いくつかの例において、アプリケーションの他のコア機能を維持するための例示的なフローである簡略化された概略図８００が示されている。図示されるように、アプリケーション・バイナリが、いくつかの例において、アンビエント・アプリケーション・ナレッジ４１５、インテリジェンス等にさらに基づくアプリケーション・ロジック・モデル（例えば、４２０）を作成するために、（例えば、挙動解析エンジンの）逆アセンブラ・データ制御フロー・アナライザ４１０に提供され得る。上述したように、アプリケーション・ロジックのモデル４２０は、それぞれのアプリケーションのアプリケーション挙動を識別するために、定義されたルール、プラットフォームＡＰＩインテリジェンス、及び挙動ヒューリスティックスに基づいて、挙動ヒューリスティック／ルール・エンジン４３５により評価され得る。さらに、アプリケーションのコードのセクションが、示された望ましくない挙動に責任を有するとして、評価中識別され得る。このコードには、修正のためにフラグが付けられ得る。さらに、アプリケーション挙動が望ましくないものとして識別され、ユーザ、管理者、又は予め定義されたルールにより回復されるようリクエスト又は指示される例において、アプリケーション・バイナリは、さらに、規律を破る挙動及び対応するコードを除去、ブロック、又は修正し、それによりユーザがその後にユーザのデバイスにダウンロード及びインストールさせ、ユーザのデバイス上で実行させることができるアプリケーション・バイナリの回復バージョン２３２を生成するために、処理され得る。さらに、上述したように、グローバル・スレット・インテリジェンス・フィード４４０又は他のインテリジェンス・データベースは、考慮及び挙動解析とともにアプリケーション回復のために、インテリジェンスを提供することができる。さらに、挙動解析から収集されたインテリジェンスは、ユーザ及びシステムのコミュニティ４４５から入力、データ、及びインテリジェンスをさらに受信する外部インテリジェンス・データベースと共有され得る。
【００３５】
次に図９の例に移ると、アプリケーションの挙動解析に基づいて望ましくない挙動を含むと判定されたアプリケーションの管理及び修正に関してなされる決定を示すさらなるフローチャート９００が示されている。例えば、ルール及びポリシが、１以上の望ましくない挙動を含むと判定されたアプリケーションがどのように処理されるべきか及びどのような条件下で処理されるべきかを定義するために、例えば、ユーザ、システム管理者、又はネットワーク管理者により定義され得る。そのようなポリシは、例えば、望ましくない挙動の特定のタイプを識別し得、そのような挙動を、いくつかある例の中でもとりわけ、アプリケーションの回復又は修正、アプリケーションのブラックリスト化又はホワイトリスト化、アプリケーションの隔離等のアクションの予め定められたコース（course）にマッピングし得る。さらに、ユーザ入力は、ユーザ・コンピューティング・デバイス上へのアプリケーションの配備（deployment）の管理を促進させ得る。そのような入力は、ユーザに提示されたプロンプトに関して受信され得、いくつかある例の中でもとりわけ、例えば、１以上の識別された望ましくない挙動を修正するリクエスト、解析されたアプリケーションを特定のオペレーション・モード又は隔離領域に割り当てる命令を含み得る。
【００３６】
上述したように、アプリケーション挙動の静的回復及び個別化（personalization）が、アプリケーションのコードを修正することを可能にする回復エンジンにより実行され得、ユーザが望ましくない挙動を除去するとともにアプリケーションの安全な機能又は正当な機能を維持することを可能にするアプリケーションの「安全」バージョンを生成し得る。そのような回復は、いくつかのケースでは、回復を促進させる個別に定義されたポリシに個別化又はカスタムマイズされ得る。それにより、ユーザ、サービス・プロバイダ、デバイス製造業者等は、対応するユーザ・デバイスにインストールされるアプリケーションの機能を制御して個別化することが可能となる。図１０において、オリジナル・アプリケーション１００５の例示的な回復のフローを示す簡略化されたｂ図１０００が示されている。望ましくない挙動及びアプリケーション・バイナリのコードの規律を破るセクションを識別すると（１０１０）、規律を破るコード及び対応する挙動を識別、除去、置換、又はブロックして、修正されたアプリケーション・バイナリ１０１５を生成するために、回復エンジンが提供され得る。一例として、回復エンジン２２８は、様々なタイプの望ましくない挙動を除去又はブロックすることによりアプリケーションを修正するためのロジックを含み得る。そのような除去又はブロックは、例えば、この例において、オリジナル・アプリケーション・バイナリにおいて発見された規律を破る命令を除去することによるＳＭＳ機能の許可されていない読み取り又はアクセスである。この例に示されているように、他の例では、回復エンジンは、例えば、ＡＰＩコールを信頼できるシステム、宛先、アドレス等にリダイレクトするようコードを書き換えることにより、規律を破るコードを修正することができる。回復エンジン２２８は、アプリケーションの所望のコア機能に影響を及ぼすのを避けるために、最小限の変更でオリジナル・コードを修正することができる。さらに、回復ポリシは、回復のためのアプリケーション・コードを識別するために考慮されるパターンを識別し得る。これは、例えば、規律を破る挙動に対応するコードのヒューリスティック・パターンを識別するＸＭＬファイルで表現され得る。各タイプのコードの定義されたパターン又は識別されたパターンは、例えば、対応するポリシに従って、特定の回復方法により回復され得る。そのような方法は、回復がアプリケーションの機能の残りの部分に影響を及ぼさないように、識別及び定義され得る。
【００３７】
様々な回復方法が、アプリケーション回復エンジンにより使用され得る。例えば、コード機能の特定の規律を破るラインが、制御チェーンにおける最終ノード又はリーフ・ノードとして識別され得る。そのような例において、規律を破るコードが、いくつかある例の中でもとりわけ、アプリケーション内の依存関係に影響を及ぼすことなく、抑制又は除去されることが可能であると判定され得る。別の例において、特定のＡＰＩコールの除去が、周囲コードに影響を及ぼす可能性がないと判定される場合、除去による回復方法が適用され得る。ＡＰＩの性質及び特性が、いくつかある例の中でもとりわけ、例えば、セマンティック・プラットフォームＳＤＫ表現から学習され得る。他の例において、規律を破る挙動が、コードの１以上のセクションからのものであり得、いくつかある例の中でもとりわけ、例えば、ＡＰＩの挙動を変更するためにレジスタ内のデータを置換することや、規律を破るＡＰＩコードを新たなＡＰＩコードで置換することにより同じインタフェースでＡＰＩコールをＡＰＩの新たなバージョンにリダイレクトすることによる、その挙動を修正するために適用される複数の回復の方法をもたらし得る。ＡＰＩの新たなバージョンが導入される例において、その新たなＡＰＩは、望ましくない挙動を解決するいくつかある例示的な技術の中でもとりわけ、例えば、何もせずプログラムの他の部分に影響を及ぼさないようにレジスタ・ステータスを設定する、望ましくない挙動を避けるために様々な方法で入力を処理する、あるいは、入力／出力パラメータの前処理及び／又は後処理を行ってオリジナルＡＰＩをコールすることができる。
【００３８】
図１１に移ると、特定の望ましくない挙動に関連するコードの識別を示す簡略化されたブロック図が示されている。例えば、アプリケーション・コードのセクション１ａ及びセクション１ｂは、検出された望ましくない第１の挙動に対応するものとして識別され得、セクション２ａ及びセクション２ｂは、アプリケーションの望ましくない第２の挙動に対応するものとして識別され得る。したがって、アプリケーションを回復することは、コードの識別された規律を破るセクションを、望ましくない挙動を修正又は抑制するコードで修正又は置換することを含み得る。さらに、識別されたコード又はＡＰＩコールに対応する回復ポリシは、規律を破るコードを修正し望ましくない挙動を修正するための回復技術を識別するために、識別され得る。
【００３９】
図１２Ａ〜図１２Ｅにおいて、望ましくない挙動の検出及び望ましくない挙動の修正のさらなる例が示されている。例えば、図１２Ａにおいて、アプリケーションが緯度及び経度情報を外部サーバに送信することを可能にする例示的なコード・フラグメントが、例えば、挙動解析エンジンを使用するＡＰＩテンプレートに入力するために処理されているものとして示されている。図１２Ｂに示されるように、地理的位置データを収集し地理的位置データを外部サーバに送信する挙動に対応するアプリケーション・コードの部分が識別され得る。一例に従うと、コードの規律を破るラインが、例えば、いくつかある例の中でもとりわけ、アプリケーションがユーザ位置を追跡するのを防止するように、地理的位置データの送信をマスク又はリダイレクトするコードで置換され得る。別の例において、図１２Ｃに示されるように、アプリケーション内の制御フローが、対応するアプリケーション・コードとともに識別され得る。図１２Ｄ〜図１２Ｅの例に示されるように、特定の望ましくない挙動の修正は、いくつかある例の中でもとりわけ、コードの規律を破るラインの削除を含み得る。
【００４０】
図１３は、アプリケーションの１以上の検出された望ましくない挙動の修正に関する例示的なフロー１３００を示している。例えば、特定のユーザに関するアプリケーションの挙動の動的個別化とのコネクション、アプリケーションの複合的挙動、及び対応するコード・セグメントが識別され得る。ユーザが修正又は変更のための特定の識別された挙動を選択することを可能にするユーザ・インタフェースが、アプリケーションの回復又はカスタマイズに関して提示され得る。１つの例示的な実施例において、ユーザ・インタフェースには、アプリケーション回復エンジンに関して、アプリケーション回復エンジンがどのように（例えば、どの識別された挙動）アプリケーションを修正するかを指示するユーザ入力が提供され得る。別の例において、アプリケーション回復エンジンは、修正されたアプリケーションの起動時にユーザがアプリケーションの挙動を動的に有効にする、無効にする、あるいは修正又はカスタムマイズすることを可能にする１以上のユーザ・インタフェース・コントロールをアプリケーションのオリジナル・バイナリに挿入することができる。例えば、ユーザの選択に基づいて、容認された挙動に対応するコードのオリジナル・セクションが、いくつかある例の中でもとりわけ、同一のコードの回復バージョンの代わりに使用され得る。効果的なことに、挙動が示されるコードのセグメントの各々が、ユーザ嗜好及び入力に基づいて、選択的にオフ又はオンにされ得る。さらに、ユーザ・インタフェースは、アプリケーション挙動の特定のサブセットの選択が存続し、アプリケーションがユーザのデバイス上で起動される次回に利用可能なように、アプリケーションの設定を保存するオプションをユーザに提供することができる。
【００４１】
いくつかの実施例において、ユーザ・デバイス上で定義される使用モードを定義する、有効にする、及び使用するための機能が提供され得る。従来では、いくつかある例の中でもとりわけ、スマートフォン及びタブレット・コンピュータ等のユーザ・デバイスは、単一のユーザ及びアプリケーション・プロファイルをサポートするよう設計されている。しかしながら、単一のオペレーション・プロファイル及びモードは、デバイスの実際のユーザ又はデバイスが使用される状況の全てに対して適切ではない場合がある。例えば、ユーザは、短期間の間、ユーザのデバイスを友人に貸すことを望む場合があるが、デバイス上の影響を受けやすいアプリケーション及びデータ、電子メール・アプリケーション、連絡先、カレンダ、メッセージング機能等のうちのいくつかへのアクセスの制御をそれでも維持したいであろう。他の例において、ユーザは、例えば、ゲームをプレイするために子供が一時的にデバイスを使用することを許可することを望む場合があるが、他のアプリケーション（例えば、ウェブ・ブラウザ）並びに所定のデバイス設定及びデータへのアクセスを子供からブロックしたいと望むであろう。さらに、ユーザは、デバイス上のアプリケーションの何らかのサブセットの使用を、特定の時間、位置、及び状況に制御したいと望む場合がある。例えば、ゲーム及びソーシャル・ネットワーキング・アプリケーションは、いくつかある例の中でもとりわけ、学校の時間の間は無効にされることが望まれ得る。
【００４２】
図１４Ａは、モード・マネージャの例示的な実施例の簡略化されたブロック図１４００ａを示している。例えば、様々なモードが、ユーザ・デバイス及び外部サービスから収集されたインテリジェンスに基づいて定義され得る。ユーザは、ユーザ・インタフェースを介して１以上のモードを定義することができ、デバイス上のモード・マネージャは、例えば、モードの各々に割り当てられた、例えば、専用クレデンシャルを用いて、様々なモードへのアクセスを管理することができる。さらに、上述したように、アプリケーション・モニタリング・サービス又はアプリケーション挙動解析エンジンは、ユーザ・デバイス上で利用可能な隔離モード又は高セキュリティ・モードを特定のアプリケーションにレコメンドすることができる。したがって、ユーザは、そのようなモードを定義して、潜在的にリスクのあるアプリケーション又は現在解析されているアプリケーションへのアクセスを、いくつかある例の中でもとりわけ、管理者、大人、又は他の信頼できるユーザに制限することができる。
【００４３】
図１４Ｂは、アプリケーション・モード・マネージャの原理を示す別の簡略化されたブロック図１４００ｂを示している。アプリケーション・モード・マネージャ２４８は、いくつかの実施例において、いくつかある例の中でもとりわけ、モード設定マネージャ１４０５、ロック・サービス１４１０、ロック・マネージャ１４１５、クレデンシャル・マネージャ１４２０、アプリケーション・アクセス・マネージャ１４２５、アプリケーション保護サービス１４３０、パスワード・エンジン１４３５等の様々なモジュール及び機能を含み得る。例えば、例示する例において、管理特権を有するユーザは、パスワード又はＰＩＮを設定し、例えば、モード設定マネージャを用いて、ユーザにより定義されたモードにそのようなクレデンシャルを割り当てることができる。アクセス・マネージャは、クレデンシャル・マネージャを使用して、デバイスの現在のユーザがデバイスのために定義されたモードのセットのうちの１つにアクセスすることを可能にする有効なクレデンシャルが受信されたかどうかを検証することができる。正しくないクレデンシャルが入力された場合、ロック・マネージャは、ロック・サービスを呼び出して、ユーザを制限モードに割り当てることにより、あるいはユーザを完全にロック・アウトすることにより、現在のユーザを１以上のアプリケーションからロック・アウトすることができる。
【００４４】
いくつかの実施例において、デバイス・モードは、除外リスト（exclusion  list）又は包含リスト（inclusion  list）から構成され得る。デバイス・モードは、使用が禁止されている、あるいは制限されているという点で、そのモードにおいて許可されている、あるいはいくらか保護されているアプリケーションのそれぞれのセットとして定義され得る。いくつかの例において、除外リストは、対応するモード下（すなわち、残っているアプリケーションが、そのモードで保護されている、あるいはロックされている）でアクセス可能な、デバイスのアプリケーション及び／又はサブシステムの特定のサブセットを示すモードのために定義され得る。例えば、モードは、例えば、＜ＭｏｄｅＮａｍｅ，  Ｉｎｃｌｕｓｉｏｎ／Ｅｘｃｌｕｓｉｏｎ，  Ａｃｃｅｓｓ  ＰＩＮ，  Ａｐｐ  １，  Ａｐｐ  ２，  Ａｐｐ  ３．．．．．Ａｐｐ  Ｎ＞に従って定義され得る。いくつかの例において、各デバイス・モードは、特定のパスワードで保護され得、特定のパスワードに関連付けられ得る。デバイスの機能及びアプリケーションの全てへのアクセスを許可するマスタ・モードが定義され得る。したがって、マスタ・モードへのアクセスを可能にするマスタ・パスワードが提供され得る。マスタ・モード内では、ユーザには、デバイスで利用可能な又はデバイスで定義されたモードのセットを管理するための管理コンソールへのアクセスが提供され得る。したがって、ユーザは、管理コンソールを介して、モードを編集又は定義することができるとともに、予め定義されたモードをアクティブ化又は削除することもできる。例示的な管理コンソールは、ユーザが、アプリケーションのリストから、ユーザが任意の所与のモードで保護されるものとして又はアクセス可能なものとして指定することを望むアプリケーションを選択することを可能にし得る。いくつかのケースでは、単一のアプリケーションが、複数の異なるモード下で、許可又は保護され得る。
【００４５】
いくつかの実施例において、モード・パスワードは、暗号化されたメモリに記憶され得る。例えば、各モードのパスワードは、同じパスワードにより生成されたキーを用いて暗号化され得る。次いで、記憶された暗号化されたパスワードは、ユーザにより入力されたパスワードから生成されたキーを用いてパスワードを復号することにより、認証され得る。次いで、復号されたデータは、ユーザが入力したパスワードと比較され得る。ユーザにより提供されたパスワードに基づいて、ユーザによるモードへのアクセスを可能にするために、対応するモードが識別され認証され得る。いくつかの実施例において、例えば、アクティビティが長時間なかった後、ユーザが、デバイスを手動でロックする場合もあるし、デバイスが、自身でロックする場合もある。デバイスをアンロックする、あるいはデバイスをウェーク・アップすることを試みるとき、ユーザには、デバイスで利用可能なデバイスのために定義されたモードのうちの１つのパスワードを要求するログイン・プロンプトが、再度提示され得る。
【００４６】
いくつかの実施例において、モードは階層的であり得る。例えば、より高いレベルのモード（すなわち、比較的高いレベルのアクセスを提供するモード）にログインしたユーザは、より低いレベルのモードのクレデンシャルを提供することなく、自由に別のモードに移動することができ得る。一方、より低いレベルのモードに対して認証されたユーザは、ユーザが以前に認証されたより低いレベルのモードよりも階層的に高いレベルの別のモードにアクセスすることを試みるとき、さらなるクレデンシャルを入力するよう強いられる。例えば、一例において、以下の４つのデバイス・モードが定義され得る：
モード１は管理者レベル・モードである；
モード２はゲスト・レベル・モードである；
モード３はゲスト・レベル・モードである；
モード４は低特権モードである
そして、階層は、いくつかある例示的な実施例の中でもとりわけ、モード１＞モード２及びモード３＞モード４であり、モード２はモード３と同じレベルであると定義される。
【００４７】
いくつかの実施例において、所定のモードがアクティブであるとき、デバイスの構成が、変更され得る、カスタムマイズされ得る、あるいは少なくとも部分的に制限され得る。例えば、特定のモードは、ＧＰＳ機能、データ・アクセス、電話機能、及び所定のアプリケーションをアクティブ化又は非アクティブ化し得る。さらに、いくつかの例において、モードにあるときに特定のアプリケーションのデータをセキュアにするデバイス・モードが提供され得る。例えば、新たなモードが作成され、アプリケーションのセットへの対応するアクセス・レベルを割り当てられると、それらのアプリケーションのデータは、別々の暗号化キーを介した暗号化により保護され得る。これは、例えば、いくつかある例の中でもとりわけ、ファイル及びフォルダを暗号化するための暗号化ファイル・システムを用いることにより実装され得る。
【００４８】
いくつかの実施例において、アプリケーションの実行可能コードは、アプリケーションの挙動又は特徴のうちの１以上へのアクセス及び／又はアプリケーションの挙動又は特徴のうちの１以上の使用を許可しないモードにおいて使用されているアプリケーションに対して保護するために、セキュアにされ得る。例えば、一実施例において、アプリケーション実行可能コードは、暗号化されたセカンダリ・ストレージに記憶され得る。ユーザ・デバイスのアプリケーション・ローダは、いくつかの例において、いくつかある可能な実施例の中でもとりわけ、アプリケーションへのアクセスが試みられるアクティブ・デバイス・モードに関して、アプリケーションが許可されたアプリケーション・リスト内で発見される場合のみ、実行可能コードへの条件付き非暗号化アクセスを得ることができる。
【００４９】
いくつかの例において、ユーザ・デバイスのための複数のデバイス・モードを定義することは、さらに、対応するモードの各々において提示される複数の一意なホーム・スクリーンの設定（provision）をもたらし得る。結果として、そのような実施例では、所与のホーム・スクリーンの出現は、デバイス上でアクティブであるモードをユーザに示し得るとともに、そのモードで利用可能なアクセス特権をユーザに示し得る。いくつかの例において、ホーム・スクリーンは、その対応するモード内で利用可能なアプリケーションのアイコンを含み得、いくつかある例の中でもとりわけ、そのモード内で保護される他のアプリケーションのアイコンを隠す、あるいは目立たなくする。
【００５０】
さらに、いくつかの例において、デバイス・モードは、例えば、ユーザ・デバイス上で検出又はロードされるアプリケーションの識別された挙動及びセキュリティ・プロファイルに基づいて、自動的に作成され得る。例えば、モード・マネージャは、例えば、例示的なアプリケーション挙動解析エンジンにより実行された挙動解析を使用して、挙動の共通分類又はセキュリティ・プロファイルの分類を示すアプリケーションを識別することができる。例えば、オンライン・リソースへのアクセスを許可するものとして識別されたアプリケーションは、そのようなアクセスを許可するものとして定義された１以上のモードに動的にグループ化され割り当てられ得る。未成年ユーザに専用のモード等の他のモードは、いくつかある例の中でもとりわけ、ユーザがインターネットへアクセスすることを可能にするアプリケーションへのアクセスを拒否され得る。他の例示的な分類は、電話機能又はモバイル・メッセージング機能を可能にするアプリケーション、影響を受けやすいデータを使用し潜在的にプライベートな情報を収集するサブシステム（例えば、カメラ、ボイス・レコーダ、ＧＰＳシステム等）を使用するアプリケーション、及び他の例を含み得る。いくつかの実施例において、年齢レーティング（例えば、７＋、１２＋、１８＋年齢等）等の、アプリケーションに関連するアンビエント・インテリジェンス、ユーザ・レビュー、又は他の情報を使用して、アプリケーションを分類し様々なモードにグループ化することができる。例えば、アプリケーションの説明は、年齢又は成熟度レーティングに加えて、成熟度レーティングの理由も含み得る。したがって、一例において、いくつかある例の中でもとりわけ、例えば、より高い成熟度レーティングを有するアプリケーションへの子供のユーザによるアクセスをブロックする１以上のモードが定義され得る。
【００５１】
他のグローバル・インテリジェンス又は分散インテリジェンスを使用して、図１９の簡略化されたブロック図１９００に示されているもののような、所与のアプリケーションのための情報を作成することもできる。例えば、アプリケーション情報は、いくつかある例の中でもとりわけ、グローバル・スレット・インテリジェンス４４０、パブリッシャ／開発者評価情報１９０５、アプリケーション・ストア・フィードバック及びレビュー１９１０、挙動解析結果１９１５からの、アプリケーションの挙動に関するセキュリティ情報から構築され得る。そのような情報（例えば、４４０、１９０５、１９１０等）を、アプリケーションの挙動評価１９１５（例えば、アプリケーションが潜在的にデータをリークするかどうか、位置情報を提供するかどうか、ＳＭＳメッセージングを可能にするかどうか等）とともに使用して、所定のアプリケーションを、いくつかある例の中でもとりわけ、隔離モード又は管理者モード等の特定のデバイス・モードに割り当てることができる。ユーザは、さらに、いくつかある例の中でもとりわけ、１以上のモードに含めるために自由にアプリケーションを個別に選択するのではなく、それぞれのモードに対するアプリケーションの割り当てのための基礎として、カスタム分類又は挙動を指定することができる、あるいは予め定義された分類又は挙動を選択することができる。
【００５２】
図１５Ａの例に移ると、特定のモードに関連付けられたパスワード情報を記憶するための例示的なアルゴリズムが示されている。図１５Ｂは、パスワードを検証し、入力されたパスワードに対応する、アクティブ化すべきモードを識別するための例示的なアルゴリズムを示している。図１５Ａ〜図１５Ｂのアルゴリズムは、例示の目的で単に提示される非限定的な例であり、他の代替アルゴリズム及び実施例が他の例では使用され得ることを理解すべきである。
【００５３】
図１６の例に移ると、いくつかの実施例において、所与のユーザにより定義されたモードは、例えば、１以上のモードとともに、そのモードに関連付けられたルールを収集し他のユーザと共有することを可能にするアプリケーション管理サービス、クラウド・サービス、又は他のサービス（例えば、１６００）に提供され得る。さらに、モード共有サービス１６００により維持される共有デバイス・モードは、ユーザ・デバイス１１０、１２０へのダウンロード及びユーザ・デバイス１１０、１２０での使用のために閲覧及び選択され得、それにより、ユーザは、他のユーザにより作成されモード共有サービスを用いて共有されているモードを有するユーザのデバイスを設定することが可能となる。さらに、ユーザは、いくつかの例において、モード共有サービスから共有モードの定義をダウンロード及びインストールして、一意なパスワードをその新たにインストールされたモードに割り当てることにより、共有モードを設定することができる。さらに他の例において、モード構成は、デバイス間で直接的に共有され得、１つのデバイスは、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、近距離通信（ＮＦＣ）、ＷｉＦｉ（登録商標）、及びその他等の無線ピア・ツー・ピア技術を介して、モードを共有している別のデバイスから新たなモードを得ることができる。
【００５４】
いくつかの実施例において、図１７の例に示されるように、モードは、例えば、デバイス自身により検出されたコンテキスト情報に基づいて、自動的にアクティブ化され得る。いくつかの例において、ユーザは、（例えば、管理コンソール上で）特定のモードを自動的にアクティブ化するためのルールを構成することができる。例えば、特定のモードは、ユーザ・デバイスにおける特定のコンテキストの検出に応答して、自動的にアクティブ化され得る。そのようなコンテキストは、多くの可能な例の中でもとりわけ、例えば、定められた地理的領域内でのデバイスの位置又は近接さを検出すること、デバイスが他のデバイスの近くに存在するのを検出すること、特定のデータ・ネットワークの範囲内のデバイスを検出すること、（例えば、デバイスにより収集されたユーザ生体情報に基づいて）デバイスのユーザを検出すること、検出された時刻、デバイス・バッテリ・ステータス、使用アクティビティ（例えば、デバイス上で非常に多くの時間を費やすユーザから守るため等）、デバイスが移動中である、すなわち、動いている最中であるかどうか（例えば、ＧＰＳ機能、加速度計、又はデバイス上の他の機能を介して検出される）を含み得る。
【００５５】
次に図１８の例に移ると、いくつかの実施例において、モードは、ユーザがリモートでモードをアクティブ化／非アクティブ化又は定義することを可能にするクラウド・サービス等のリモート・サービスを介して、設定及び構成され得る。そのようなサービスを用いると、ユーザは、リモートで（例えば、ターゲット・モバイル・ユーザ・デバイスではないコンピュータを用いて）モードを作成することができ、ターゲット・ユーザ・デバイスに１以上のモードを設定することができ、また、リモート位置からユーザ・デバイス上のモードをアクティブ化及び非アクティブ化することができる。さらに、管理者は、そのサービスを使用して、モバイル・ユーザ・デバイス上にそのようなモードを設定することができるとともに、いくつかある例の中でもとりわけ、所与のモードを自動的にアクティブ化、適用、又は非アクティブ化するためのルール及びコンテキストを定義することができる。
【００５６】
図２０Ａ〜図２０Ｄは、モバイル・ユーザ・デバイス上でのモード管理のいくつかの例示的な実施例の特定の特徴を示すユーザ・インタフェースの例示的なスクリーンショットを示している。例えば、図２０Ａのスクリーンショットは、新たなモード及びモード・パスワードを定義するためのユーザ・インタフェースを示している。ユーザがデバイス上の複数の利用可能なモードのうち１つのモードを選択してアクティブ化することを可能にする、且つ／あるいはユーザが選択されたモードのためのクレデンシャルを提供することを可能にする同様のユーザ・インタフェースが提供され得る。いくつかの実施例において、ユーザ・デバイスは、ネイティブ・ログイン・クレデンシャル又はネイティブ・ログイン・マネージャを含み得る。モード・マネージャは、ネイティブ・ログイン・マネージャをオーバライドして、ネイティブ・ログイン・スクリーンをモード固有のログイン・プロンプト（例えば、ユーザ・デバイスの複数モード機能を可能にする）で置換するアプリケーション自体として実装され得る。いくつかの例において、ユーザは、複数のモードを有するユーザ・デバイスが設定されることに視覚的に気付かない場合がある。ここで、ログイン・スクリーンは、複数の異なるログイン・コードのうちの１つを受け入れることができ、各ログイン・コードは、ユーザ・デバイス上で設定される（隠されたモードを含む）サポートされるモードに対応する。
【００５７】
図２０Ｂのスクリーンショットは、特定のモードのホーム・スクリーンのビューを示している。この例に示されるように、クレデンシャルを提供し、（例えば、制限されたアプリケーションのアクセスを許可する）より高いレベルのモードをアクティブ化することによってのみアクセスされ得る制限されたアプリケーションのセットが指定され得る。さらに、Ｍｙ  Ａｐｐｓフォルダは、現在のアクティブ・モードにおいて有効にされているアプリケーションへのアクセスを提供し得る。図２０Ｃのスクリーンショットは、ユーザが新たなモードをアクティブ化、編集、又は作成することを可能にする例示的な管理スクリーンの別のビューを提供する。さらに、図２０Ｄの例示的なスクリーンショットは、モード・マネージャのいくつかの実施例において提供され得る、例えば、ユーザが、アプリケーションのリストから、どのアプリケーションが所与のモードに含まれるべきであるか、あるいは所与のモードにおいて保護されるべきであるかをデバイス上で指定することを可能にするユーザ・インタフェースを示している。前述の例は、所定の原理を例示する目的で単に提供されたに過ぎないことを理解すべきであり、限定的な例として解釈すべきではない。実際、様々な異なる実装、ユーザ・インタフェース、プログラム・アーキテクチャ、オペレーティング・システム、ＳＤＫプラットフォーム、及び方法シーケンスが、本明細書で例示及び説明した一般的原理から逸脱することなく、上述した例の代わりに使用されてもよい。
【００５８】
図２１Ａ〜図２１Ｃは、モバイル・ユーザ・コンピューティング・デバイス上でのアプリケーションの管理における例示的な技術を示すフローチャート２１００ａ〜２１００ｃである。例えば、図２１Ａの例において、特定のアプリケーションのコードが、例えば、プラットフォームＳＤＫの表現及び／又はＡＰＩ等のプラットフォームのセマンティック表現に対して解析され得る（２１０５）。特定のアプリケーションの挙動のセットが識別され得る（２１１０）。挙動のセットのうちの少なくとも１つの望ましくない挙動が、例えば、識別された挙動のセットのうちの１つのユーザ選択に基づいて、又は、特定のモバイル・コンピューティング・デバイスにダウンロードされるアプリケーション、インストールされるアプリケーション、起動されるアプリケーション、あるいは使用されるアプリケーションのための（ユーザ又は管理者により）定義されたルール及び／又はポリシに従って自動的に、識別され得る（２１１５）。
【００５９】
図２１Ｂの例において、（例えば、図２１Ａの例の原理に従って）挙動が識別され得（２１２０）、特定のアプリケーションの挙動のセットが検出され得る。次いで、識別された挙動に対応する特定のアプリケーションのコードのセクションが識別され得る（２１２５）。例えば、識別された挙動が望ましくない挙動である等といった識別に応答して、挙動を自動的に修正するために、識別されたコードのセクションに対して修正アクションが実行され得る（２１３０）。修正アクションは、特定のアプリケーションの「回復」バージョンの動的な生成をもたらし得る。特定のアプリケーションの「回復」バージョンは、オリジナルの機能の少なくとも一部分を維持し、望ましくない機能がブロックされる、あるいは回復バージョンから除去される。
【００６０】
図２１Ｃの例において、複数のモードのうちの特定のモードがアクティブ化され得る（２１４０）。複数のモードは、特定のユーザ・コンピューティング・デバイスのために定義され得、複数のモードにおけるそれぞれのモードにアクセスするためのクレデンシャルを有する特定のユーザに対してどのようなコンピューティング・デバイスの機能のサブセット及びそのソフトウェアがアクセス可能になり得るかを指示し得る。特定のモードのアクティブ化（２１４０）に従って、ユーザ・コンピューティング・デバイスにインストールされた１以上のアプリケーションへのアクセスが制限され得る（２１４５）。さらに、いくつかの実施例において、特定のモードのアクティブ化は、適用されるコンピューティング・デバイスの制限された構成又は代替構成をもたらし得る。これにより、いくつかある例の中でもとりわけ、ハードウェア機能、並びにユーザ・コンピューティング・デバイスの設定及びデータを含む１以上のサブシステム及び機能へのユーザのアクセスを制限する。
【００６１】
本開示は、所定の実施例及び概ね関連する方法の観点で説明されたが、そのような実施例及び方法の変更及び入れ替えは、当業者に明らかであろう。例えば、本明細書で説明した動作は、説明したものと異なる順序で実行されてよく、それでも所望の結果を達成することができる。一例として、添付の図面に示されるプロセスは、所望の結果を達成するのに、必ずしも、示される特定の順序又は連続した順序を必要としない。所定の実施例では、マルチタスク化及び並行処理が有利である場合がある。さらに、多様なユーザ・インタフェース・レイアウト及び機能がサポートされ得る。他の変形例も添付の特許請求の範囲の範囲内にある。
【００６２】
本明細書で説明した主題及びオペレーションの実施形態は、デジタル電子回路、又はコンピュータ・ソフトウェア、ファームウェア、若しくはハードウェアにより実装され得、これには、本明細書で開示した構造、その構造的均等物、又はそれらのうちの１以上の組合せが含まれる。本明細書で説明した主題の実施形態は、１以上のコンピュータ・プログラム、すなわち、コンピュータ・プログラム命令の１以上のモジュールとして実装され得、データ処理装置により実行される、あるいはデータ処理装置のオペレーションを制御するようコンピュータ記憶媒体において符号化され得る。代替的に又は追加的に、プログラム命令は、人工的に生成される伝播信号、例えば、データ処理装置により実行されるよう適切な受信機装置に送信する情報を符号化するように生成された、マシンにより生成された電気信号、光信号、又は電磁信号において符号化することができる。コンピュータ記憶媒体は、コンピュータ読み取り可能記憶デバイス、コンピュータ読み取り可能記憶基板、ランダム若しくはシリアル・アクセス・メモリ・アレイ若しくはデバイス、又はそれらのうちの１以上の組合せとすることができる、あるいはそれらに含まれ得る。さらに、コンピュータ記憶媒体は、それ自体が伝播信号ではないが、人工的に生成された伝播信号において符号化されたコンピュータ・プログラム命令のソース又は宛先となり得る。コンピュータ記憶媒体はまた、分散ソフトウェア環境又はクラウド・コンピューティング環境を含む、１以上の別個の物理コンポーネント若しくは媒体（例えば、複数のＣＤ、ディスク、又は他の記憶デバイス）とすることもできる、あるいはそれらに含まれ得る。
【００６３】
コア・ネットワーク及び無線アクセス・ネットワークを含むアクセス・ネットワークを含むネットワークは、１以上のネットワーク・エレメントを含み得る。「ネットワーク・エレメント」は、様々なタイプのルータ、スイッチ、ゲートウェイ、ブリッジ、ロード・バランサ、ファイヤ・ウォール、サーバ、インライン・サービス・ノード、プロキシ、プロセッサ、モジュール、又は、ネットワーク環境において情報を交換するよう動作可能な任意の他の適切なデバイス、コンポーネント、エレメント、若しくはオブジェクトを含み得る。ネットワーク・エレメントは、本明細書で概説したスクリーン管理機能のためのプロセッサを用いることに関連付けられたアクティビティをサポート（又は、実行）する適切なプロセッサ、メモリ・エレメント、ハードウェア、及び／又はソフトウェアを含み得る。さらに、ネットワーク・エレメントは、そのオペレーションを円滑にする任意の適切なコンポーネント、モジュール、インタフェース、又はオブジェクトを含み得る。これは、データ又は情報の効果的な交換を可能にする適切なアルゴリズム及び通信プロトコルを含み得る。
【００６４】
本明細書で説明したオペレーションは、１以上のコンピュータ読み取り可能記憶デバイスに記憶された、あるいは他のソースから受信されたデータに対するデータ処理装置により実行されるオペレーションとして実施され得る。「データ処理装置」、「プロセッサ」、「処理デバイス」、及び「コンピューティング・デバイス」という用語は、データを処理するための全ての種類の装置、デバイス、及びマシンを含み得、これには、例として、プログラマブル・プロセッサ、コンピュータ、システム・オン・チップ、又は上記のうちの複数のもの若しくはそれらの組合せが含まれる。装置は、いくつかある適切なオプションの中でも、汎用論理回路又は専用論理回路、例えば、中央処理装置（ＣＰＵ）、ブレード、特定用途向け集積回路（ＡＳＩＣ）、又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）を含み得る。いくつかのプロセッサ及びコンピューティング・デバイスが、単一のプロセッサとして説明及び／又は例示されたが、関連するサーバの特定の必要性に応じて、複数のプロセッサが使用されてもよい。単一のプロセッサへの言及は、適宜、複数のプロセッサを含むことを意味する。一般に、プロセッサは、命令を実行し、データを操作して、所定のオペレーションを実行する。装置はまた、ハードウェアに加えて、当該のコンピュータ・プログラムの実行環境を作成するコード、例えば、プロセッサ・ファームウェア、プロトコル・スタック、データベース管理システム、オペレーティング・システム、クロス・プラットフォーム・ランタイム環境、仮想マシン、又はそれらのうちの１以上の組合せを構成するコードも含み得る。装置及び実行環境は、ウェブ・サービス、分散コンピューティング・インフラストラクチャ及びグリッド・コンピューティング・インフラストラクチャ等の様々な異なるコンピューティング・モデル・インフラストラクチャを実現することができる。
【００６５】
コンピュータ・プログラム（プログラム、ソフトウェア、ソフトウェア・アプリケーション、スクリプト、モジュール、（ソフトウェア・）ツール、（ソフトウェア・）エンジン、又はコードとしても知られる）は、コンパイラ型言語又はインタプリタ型言語、宣言型言語又は手続き型言語を含む任意の形態のプログラミング言語で書くことができ、スタンドアローン・プログラムとして、又はモジュール、コンポーネント、サブルーチン、オブジェクト、若しくはコンピューティング環境において用いるのに適した他のユニットとして配備することを含む任意の形で配備することができる。例えば、コンピュータ・プログラムは、実行されると、少なくとも本明細書で説明したプロセス及びオペレーションを実行するよう動作可能な、有体の媒体上のコンピュータ読み取り可能命令、ファームウェア、有線の若しくはプログラムされたハードウェア、又はそれらの任意の組合せを含み得る。コンピュータ・プログラムは、ファイル・システム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラム又はデータ（例えば、マークアップ言語文書に記憶される１以上のスクリプト）を保持するファイルの一部分に、若しくは当該プログラムに専用の単一のファイルに、又は複数の連携ファイル（例えば、１以上のモジュール、サブプログラム、又はコード部分を記憶するファイル）に記憶され得る。コンピュータ・プログラムは、１つのコンピュータ、又は１つのサイトに位置するあるいは複数のサイトにわたって分散され、通信ネットワークにより相互接続された複数のコンピュータ上で実行されるよう配備され得る。
【００６６】
プログラムは、様々なオブジェクト、メソッド、若しくは他のプロセスを介して様々な特徴及び機能を実装する個々のモジュールとして実施され得る、あるいは、その代わりに、適宜、複数のサブモジュール、サード・パーティ・サービス、コンポーネント、ライブラリ等を含み得る。逆に、様々なコンポーネントの特徴及び機能は、適宜、単一のコンポーネントに結合され得る。所定のケースでは、プログラム及びソフトウェア・システムは、複合的なホストされるアプリケーションとして実装され得る。例えば、複合アプリケーションの一部分は、エンタプライズＪａｖａ（登録商標）  Ｂｅａｎ（ＥＪＢ）として実装され得る、あるいは、設計時間コンポーネントが、とりわけ、Ｊ２ＥＥ（Ｊａｖａ（登録商標）２プラットフォーム・エンタプライズ・エディション）、ＡＢＡＰ（発展型ビジネス・アプリケーション・プログラミング）オブジェクト、又はマイクロソフト（登録商標）の．ＮＥＴ等の様々なプラットフォーム内にランタイム実装を生成する機能を有し得る。さらに、アプリケーションは、ネットワークを介して（例えば、インターネットを介して）アクセス及び実行されるウェブベースのアプリケーションを表し得る。さらに、特定のホストされるアプリケーション又はサービスに関連付けられる１以上のプロセスは、リモートで記憶、参照、又は実行され得る。例えば、特定のホストされるアプリケーション又はサービスの一部は、リモートでコールされたアプリケーションに関連付けられたウェブ・サービスであり得るのに対し、ホストされるアプリケーションの別の部分は、リモート・クライアントで処理するようにまとめられたインタフェース・オブジェクト又はエージェントであり得る。さらに、本開示の範囲から逸脱することなく、ホストされるアプリケーション及びソフトウェア・サービスのうちの任意のもの又は全てが、別のソフトウェア・モジュール又はエンタプライズ・アプリケーション（図示せず）の子モジュール又はサブモジュールであり得る。また、さらに、ホストされるアプリケーションの一部分は、機能しているユーザにより、アプリケーションをホストしているサーバにおいて直接、及びクライアントにおいてリモートで実行され得る。
【００６７】
本明細書で説明したプロセス及び論理フローは、入力データに対し動作して出力を生成することにより動作を実行するよう１以上のコンピュータ・プログラムを実行する１以上のプログラマブル・プロセッサにより実行され得る。プロセス及び論理フローはまた、専用論理回路、例えば、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）又はＡＳＩＣ（特定用途向け集積回路）により実行され得、装置はまた、この専用論理回路として実装され得る。
【００６８】
コンピュータ・プログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ及び専用マイクロプロセッサの双方、並びに任意の種類のデジタル・コンピュータの任意の１以上のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリ若しくはランダム・アクセス・メモリ又はその双方から命令及びデータを受信する。コンピュータの重要なエレメントは、命令に従って動作を実行するプロセッサと、命令及びデータを記憶する１以上のメモリ・デバイスとである。一般に、コンピュータはまた、データを記憶する１以上の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、若しくは光ディスクを含む、あるいはそれらからデータを受信する若しくはそれらにデータを伝送する若しくは双方を行うようにそれらに動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えば、いくつか例を挙げると、携帯電話機、携帯情報端末（ＰＤＡ）、タブレット・コンピュータ、モバイル・オーディオ若しくはビデオ・プレーヤ、ゲーム・コンソール、グローバル・ポジショニング・システム（ＧＰＳ）受信機、又はポータブル記憶デバイス（例えば、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ）に組み込まれ得る。コンピュータ・プログラム命令及びデータを記憶するのに適したデバイスは、例として、半導体メモリ・デバイス、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュ・メモリ・デバイス；磁気ディスク、例えば、内部ハードディスク又は取り外し可能なディスク；光磁気ディスク；並びにＣＤ  ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含む、全ての形態の不揮発性メモリ、媒体、及びメモリ・デバイスを含む。プロセッサ及びメモリは、専用論理回路により補われ得る、あるいは専用論理回路に組み込まれ得る。
【００６９】
ユーザとのインタラクションを提供するために、本明細書で説明した主題の実施形態は、情報をユーザに表示するディスプレイ・デバイス、例えば、ＣＲＴ（陰極線管）又はＬＣＤ（液晶ディスプレイ）モニタと、ユーザがコンピュータに入力を提供することができるキーボード及びポインティング・デバイス、例えば、マウス又はトラックボールとを有するコンピュータ上で実施され得る。ユーザとのインタラクションを提供する他の種類のデバイスが使用されてもよい。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、又は触覚入力を含む任意の形態で受信され得る。さらに、コンピュータは、ユーザにより使用されるリモート・デバイスを含むデバイスに文書を送信しデバイスから文書を受信することにより、ユーザとインタラクトすることができる。
【００７０】
本明細書で説明した主題の実施形態は、コンピューティング・システムにおいて実施され得、このコンピューティング・システムは、例えば、データ・サーバとしてバック・エンド・コンポーネントを含む、あるいはミドルウェア・コンポーネント、例えば、アプリケーション・サーバを含む、あるいはフロント・エンド・コンポーネント、例えば、ユーザが本明細書で説明した主題の実施例とインタラクトすることができるグラフィカル・ユーザ・インタフェース若しくはウェブ・ブラウザを有するクライアント・コンピュータを含む、あるいはそのようなバック・エンド・コンポーネント、ミドルウェア・コンポーネント、若しくはフロント・エンド・コンポーネントの任意の組合せを含む。システムのコンポーネントは、任意の形態又は媒体のデジタル・データ通信、例えば、通信ネットワークにより相互接続され得る。通信ネットワークの例として、システム内の様々なコンピューティング・コンポーネント間の通信を円滑にするよう動作可能な、任意の内部ネットワーク若しくは外部ネットワーク、ネットワーク、サブネットワーク、又はそれらの組合せがある。ネットワークは、例えば、インターネット・プロトコル（ＩＰ）パケット、フレーム・リレー・フレーム、非同期転送モード（ＡＴＭ）セル、音声、ビデオ、データ、及び他の適切な情報を、ネットワーク・アドレス間で通信することができる。ネットワークはまた、１以上のローカル・エリア・ネットワーク（ＬＡＮ）、無線アクセス・ネットワーク（ＲＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネットの全て又は一部分、ピア・ツー・ピア・ネットワーク（例えば、アド・ホック・ピア・ツー・ピア・ネットワーク）、及び／又は１以上のロケーションにおける任意の他の１以上の通信システムを含み得る。
【００７１】
コンピューティング・システムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般に互いからリモートにあり、通常、通信ネットワークを介してインタラクトする。クライアント及びサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータ・プログラムにより生じる。いくつかの実施形態では、サーバが、データ（例えば、ＨＴＭＬページ）を、クライアント・デバイスに（例えば、クライアント・デバイスとインタラクトしているユーザにデータを表示し、そのユーザからユーザ入力を受け取る目的で）送信する。クライアント・デバイスにおいて生成されるデータ（例えば、ユーザ・インタラクションの結果）は、サーバにおいてクライアント・デバイスから受信され得る。
【００７２】
本明細書は、多くの特定の実施例の詳細を含むが、これらは、いかなる発明の範囲も、又は特許請求され得るものの範囲も限定するものとして解釈されるべきでなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態のコンテキストで本明細書において説明した所定の特徴は、組み合せて単一の実施形態において実施され得る。逆に、単一の実施形態のコンテキストで説明した様々な特徴も、複数の実施形態において別個に、又は任意の適切な下位組合せで実施され得る。さらに、特徴が、所定の組合せで機能するものとして上記で説明された場合があり、そのように最初に特許請求される場合さえあるが、特許請求される組合せからの１以上の特徴は、場合によっては、その組合せから削除され得、特許請求される組合せは、下位組合せ又は下位組合せの変形を対象とし得る。
【００７３】
以下の例は、本明細書に従った実施形態に関する。１以上の実施形態は、特定のプラットフォームのソフトウェア開発キットのセマンティック・モデルに対して特定のアプリケーションのコードを解析し、コードの解析に基づいて、特定のアプリケーションの挙動のセットを識別し、挙動のセットのうちの１以上の挙動が望ましくない挙動であると識別する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。セマンティック・モデルは、潜在的なアプリケーション挙動を、特定のプラットフォームのＡＰＩのうちの１以上のＡＰＩに関連付け得る。
【００７４】
一例において、挙動のセットのうちの１以上の挙動が望ましくない挙動であると識別することは、１以上の挙動が１以上のルールに違反すると判定することを含む。ルールは、特定のユーザに関連付けられ得る。
【００７５】
一例において、ユーザ入力は、挙動のセットのうちの１以上の挙動を望ましくないものとして識別する。ユーザ入力は、識別された挙動のセットの人間が読み取り可能な説明を表示するユーザ・インタフェースに関して受信され得る。
【００７６】
一例において、特定のアプリケーションのコードは、制御フローに逆アセンブルされ得、特定のアプリケーションに関するアプリケーション・ロジックのモデルが、セマンティック・モデルに少なくとも部分的に基づいて生成され得る。アプリケーション・ロジックのモデルは、さらに、アンビエント・アプリケーション・ナレッジに少なくとも部分的に基づき得る。
【００７７】
一例において、挙動のセットのうちの１以上の挙動が望ましくない挙動であるという識別に基づいて、修正アクションが実行され得る。
【００７８】
一例において、特定のアプリケーションのコードは、特定のアプリケーションを特定のユーザ・デバイス上で実施する試みに関して解析される。
【００７９】
１以上の実施形態は、特定のアプリケーションに含まれるとして検出された挙動のセットのうちの特定の挙動を識別し、特定の挙動に対応する特定のアプリケーションのコードのセクションを識別し、特定の挙動を修正し特定のアプリケーションの回復バージョンを生成するために、コードのセクションに対して修正アクションを実行する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。
【００８０】
一例において、修正アクションは、特定の挙動以外の特定のアプリケーションの他の挙動を維持する。
【００８１】
一例において、修正アクションは、コードのセクションを削除することを含む。
【００８２】
一例において、修正アクションは、コードのセクションを書き換えることを含む。
【００８３】
一例において、修正アクションは、特定の挙動を無効にするために、追加のコードをアプリケーションに追加することを含む。
【００８４】
一例において、修正アクションは、特定の挙動を修正することに適用可能であると判定された修正パターンを識別するポリシから識別される。
【００８５】
一例において、修正アクションは、ユーザ・デバイス上での回復されたアプリケーションの起動時にユーザが特定の挙動の回復バージョンを選択的に有効にすることを可能にするアプリケーション・ロジックを挿入することを含む。ユーザは、さらに、回復バージョンの代わりに特定の挙動の未回復バージョンを選択的に有効にすることを可能にされる。
【００８６】
一例において、特定のアプリケーションの挙動のセットは、特定のアプリケーションのコードの解析を介して検出され得る。
【００８７】
一例において、修正アクションは、ユーザ・リクエストによりトリガされる。
【００８８】
１以上の実施形態は、特定のユーザ・デバイスのために定義された複数のモードのうちの特定のモードをアクティブ化し、アクティブ化した特定のモードに従って、特定のユーザ・デバイスにインストールされた１以上のアプリケーションへのアクセスを制限する装置、システム、マシン読み取り可能媒体、及び方法を提供し得る。制限された１以上のアプリケーションは、複数のモードのうちの別のモードがアクティブ化されたとき、アクセス可能になる。
【００８９】
一例において、特定のモードは、特定のユーザ・デバイスのユーザにより入力された特定のパスコードに応答してアクティブ化され、複数のモードの各々は、対応するパスコードに関連付けられる。特定のモードのアクティブ化は、特定のパスコードの入力に基づいて、複数のモードから特定のモードを識別することと、特定のパスコードの入力に基づいて、特定のモードへのアクセスを認証することと、を含み得る。
【００９０】
一例において、複数のモードのうちの１以上のモードは、ユーザにより定義されたモードである。
【００９１】
一例において、代替デバイス構成が、特定のモードのアクティブ化に基づいて、特定のユーザ・デバイスに適用され得る。代替デバイス構成は、特定のユーザ・デバイスの１以上のサブシステムへのアクセスを制限し得る。
【００９２】
一例において、複数のモードのうちの１つのモードは、複数のモードの修正を可能にする管理者モードである。
【００９３】
一例において、複数のモードのうちの少なくとも１つのモードは、特定のユーザ・デバイスからリモートにあるモード共有サービスからダウンロード可能なモードのインスタンスである。
【００９４】
一例において、特定のモードは、特定のユーザ・デバイスの機能を用いた特定のコンテキストの検出に少なくとも部分的に基づいて、自動的にアクティブ化される。
【００９５】
一例において、アプリケーションのうちの少なくとも１つの特定のアプリケーションは、特定のモードのために定義されたルールに基づいて制限される。
【００９６】
一例において、定義されたルールは、特定のアプリケーションの検出された挙動に関連する。
【００９７】
一例において、複数のモードは、挙動解析又は修正を待っているアプリケーションのための隔離モードとして指定されたモードを含む。
【００９８】
一例において、特定のモードは、特定のユーザ・デバイスからリモートにあるデバイスにおいて受信されたユーザ・コマンドに応答してアクティブ化される。
【００９９】
同様に、オペレーションは、図面において特定の順序で示されるが、これは、所望の結果を達成するために、そのようなオペレーションが示される特定の順序又は連続した順序で実行されること、又は全ての示されるオペレーションが実行されることを要するものとして理解すべきではない。所定の環境では、マルチタスク化及び並行処理が有利である場合がある。さらに、上述した実施形態における様々なシステム・コンポーネントの分離は、そのような分離を全ての実施形態において必要とすると理解すべきでなく、説明したプログラム・コンポーネント及びシステムは、一般に、単一のソフトウェア製品に一緒に統合されてもよいし、複数のソフトウェア製品にパッケージ化されてもよいことを理解すべきである。
【０１００】
このように、主題の特定の実施形態が説明された。他の実施形態も添付の特許請求の範囲の範囲内にある。場合によっては、請求項において記載される動作は、異なる順序で実行されてもよく、それでも所望の結果を達成することができる。さらに、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも、示される特定の順序又は連続した順序を必要としない。
【図１】
0006013613.tif 000006
【図２】
0006013613.tif 000007
【図３】
0006013613.tif 000008
【図４】
0006013613.tif 000009
【図５Ａ】
0006013613.tif 000010
【図５Ｂ】
0006013613.tif 000011
【図６】
0006013613.tif 000012
【図７】
0006013613.tif 000013
【図８】
0006013613.tif 000014
【図９】
0006013613.tif 000015
【図１０】
0006013613.tif 000016
【図１１】
0006013613.tif 000017
【図１２Ａ】
0006013613.tif 000018
【図１２Ｂ】
0006013613.tif 000019
【図１２Ｃ】
0006013613.tif 000020
【図１２Ｄ】
0006013613.tif 000021
【図１２Ｅ】
0006013613.tif 000022
【図１３】
0006013613.tif 000023
【図１４Ａ】
0006013613.tif 000024
【図１４Ｂ】
0006013613.tif 000025
【図１５Ａ】
0006013613.tif 000026
【図１５Ｂ】
0006013613.tif 000027
【図１６】
0006013613.tif 000028
【図１７】
0006013613.tif 000029
【図１８】
0006013613.tif 000030
【図１９】
0006013613.tif 000031
【図２０Ａ】
0006013613.tif 000032
【図２０Ｂ】
0006013613.tif 000033
【図２０Ｃ】
0006013613.tif 000034
【図２０Ｄ】
0006013613.tif 000035
【図２１Ａ】
0006013613.tif 000036
【図２１Ｂ】
0006013613.tif 000037
【図２１Ｃ】
0006013613.tif 000038