(57)【特許請求の範囲】
【請求項１】
非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するためのコンピュータによって実装される方法であって、前記方法の少なくとも一部分が、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実施され、
セキュリティソフトウェア提供者から少なくとも１つのマルウェアシグネチャを取得することであって、前記マルウェアシグネチャが、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する、取得することと、
前記コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、
各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、前記コンピューティングデバイスのプロパティテーブルにアクセスすることと、
前記マルウェアシグネチャ内に識別される各プロパティ値を前記プロパティテーブルと比較することによって、各アプリケーションパッケージの前記個々のプロパティ値を反復的に適用することを必要とせずに、前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定することと、を含む、方法。
【請求項２】
前記プロパティテーブルにアクセスする前に、前記プロパティテーブルを作成することを更に含む、請求項１に記載の方法。
【請求項３】
前記コンピューティングデバイスへの少なくとも１つのアプリケーションパッケージのインストールを検出し、
前記アプリケーションパッケージの少なくとも１つのプロパティ値を識別し、
前記アプリケーションパッケージが問題のプロパティ値を保有することを示すように、前記プロパティテーブルを更新する、ことによって、前記プロパティテーブルを更新することを更に含む、請求項１に記載の方法。
【請求項４】
前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定することが、前記マルウェアシグネチャ内に識別される各プロパティ値について、
前記プロパティテーブルの前記プロパティ値を検索することと、
前記プロパティテーブルから、前記プロパティ値を共有する各アプリケーションパッケージのリストを取り出すことと、含む、請求項１に記載の方法。
【請求項５】
前記マルウェアシグネチャが、複数のプロパティ値を識別し、前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定することが、各取り出されたリストに載っているいずれのアプリケーションパッケージも識別することを更に含む、請求項４に記載の方法。
【請求項６】
前記プロパティテーブルが、少なくとも１つの一意のプロパティ値が前記コンピューティングデバイスにインストールされる複数のアプリケーションパッケージによって共有されることを示す、請求項１に記載の方法。
【請求項７】
前記プロパティテーブルが、リレーショナルデータベース内にテーブルを備える、請求項１に記載の方法。
【請求項８】
前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定するのに必要な時間の長さが、前記コンピューティングデバイスにインストールされるアプリケーションパッケージの数に比例しない、請求項１に記載の方法。
【請求項９】
前記マルウェアシグネチャに合致する、前記コンピューティングデバイスにインストールされる少なくとも１つのアプリケーションパッケージを識別することと、
前記マルウェアシグネチャに合致する前記アプリケーションパッケージにセキュリティ行為を実施することと、を更に含む、請求項１に記載の方法。
【請求項１０】
非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するためのシステムであって、
セキュリティソフトウェア提供者から少なくとも１つのマルウェアシグネチャを取得するようにプログラムされる、シグネチャ取り出しモジュールであって、前記マルウェアシグネチャが、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する、シグネチャ取り出しモジュールと、
前記コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、コンピューティングデバイスのプロパティテーブルにアクセスし、
前記マルウェアシグネチャ内に識別される各プロパティ値を前記プロパティテーブルと比較することによって、各アプリケーションパッケージの前記個々のプロパティ値を反復的に適用することを必要とせずに、前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定する、ようにプログラムされる、マルウェア検出モジュールと、
前記シグネチャ取り出しモジュール及び前記マルウェア検出モジュールを実行するように構成される、少なくとも１つのプロセッサと、を備える、システム。
【請求項１１】
前記プロパティテーブルを作成するようにプログラムされる、テーブル維持モジュールを更に備える、請求項１０に記載のシステム。
【請求項１２】
前記コンピューティングデバイスへの少なくとも１つのアプリケーションパッケージのインストールを検出し、
前記アプリケーションパッケージの少なくとも１つのプロパティ値を識別し、
前記アプリケーションパッケージが問題のプロパティ値を保有することを示すように、前記プロパティテーブルを更新する、ことによって、前記プロパティテーブルを更新するようにプログラムされる、テーブル維持モジュールを更に備える、請求項１０に記載のシステム。
【請求項１３】
前記マルウェア検出モジュールが、前記マルウェアシグネチャ内に識別される各プロパティ値について、
前記プロパティテーブルの前記プロパティ値を検索し、
前記プロパティテーブルから、前記プロパティ値を共有する各アプリケーションパッケージのリストを取り出す、ことによって、前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するかを判定する、請求項１０に記載のシステム。
【請求項１４】
前記マルウェアシグネチャが、複数のプロパティ値を識別し、前記マルウェア検出モジュールが、更に各取り出されたリストに載っているいずれのアプリケーションパッケージも識別することによって、前記アプリケーションパッケージのいずれかが前記マルウェアシグネチャに合致するか否かを判定する、請求項１３に記載のシステム。
【請求項１５】
前記プロパティテーブルが、少なくとも１つの一意のプロパティ値が前記コンピューティングデバイスにインストールされる複数のアプリケーションパッケージによって共有されることを示す、請求項１０に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
消費者及び企業は、彼らのコンピュータの安定性及び性能、並びに彼らのデータのセキュリティを脅かす、悪意のあるソフトウェアの増加の流れに直面している。例えば、悪意のあるコンピュータプログラマは、コンピュータシステムを侵害することを狙い、ウイルス、トロイ、スパイウェア、ワーム、及び他のプログラム（まとめて「マルウェア」として知られる）を意図的に作り出した、そしてそれらを継続的に作り出し、増殖させている。
【０００２】
多くのセキュリティソフトウェア提供者は、マルウェアシグネチャ（即ち、既知のマルウェアのアイテムの１つ以上の特性又は特徴を識別するデータ構造）を作成し、それらを定期的に顧客に配備することによって、マルウェアに対処することを試みる。各顧客のコンピューティングデバイス上にインストールされたセキュリティソフトウェアは、次いで、顧客のデバイスにインストールされた各アプリケーションパッケージの個々の特性又は特徴を反復的に適用することによって、顧客のデバイスがマルウェアを含有するか否かを判定するために、これらの配備されたシグネチャを使用し得る。例えば、セキュリティソフトウェアは、（１）顧客のデバイスにインストールされた各アプリケーションパッケージを識別し、次いで、各インストールされたアプリケーションパッケージについて、（２）インストールされたアプリケーションパッケージの関連特性又は特徴を識別し、（３）インストールされたアプリケーションパッケージの識別された特性又は特徴が、配備されたシグネチャの各々に含有される特性又は特徴のセットのいずれかに合致するか否かを判定することによって、顧客のデバイスのマルウェアをスキャンしてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
あいにく、上で説明されるマルウェアスキャンを完了するのに必要な時間の長さは、コンピューティングデバイスにインストールされるアプリケーションパッケージの数に正比例し得、そのため、多くのアプリケーションパッケージがインストールされているデバイスのマルウェアスキャンは、完了するのに、わずかなアプリケーションパッケージがインストールされているデバイスのスキャンよりずっと長くかかる場合がある。そのように、本開示は、マルウェアスキャンを実施するための改善されたシステム及び方法の必要性を識別する。
【課題を解決するための手段】
【０００４】
以下により詳細に説明されるように、本開示は、概して、コンピューティングデバイスにインストールされる各アプリケーションパッケージの個々のプロパティ値を反復的に適用しなければならないということを回避するために、コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有される一意のプロパティ値を識別する、コンピューティングデバイスのためのプロパティテーブルを作成及び更新するためのシステム並びに方法に関する。一実施例において、そのようなタスクを実施するためのコンピュータによって実装される方法は、（１）セキュリティソフトウェア提供者から、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する少なくとも１つのマルウェアシグネチャを取得することと、（２）コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、コンピューティングデバイスのプロパティテーブルにアクセスすることと、次いで、（３）マルウェアシグネチャ内に識別される各プロパティ値をプロパティテーブルと比較することによって、各アプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定することと、を含んでもよい。
【０００５】
一部の実施形態において、上述の方法は、プロパティテーブルにアクセスする前に、プロパティテーブルを作成することを含んでもよい。本方法はまた、（１）コンピューティングデバイスへの少なくとも１つのアプリケーションパッケージのインストールを検出し、（２）アプリケーションパッケージの少なくとも１つのプロパティ値を識別し、次いで、（３）アプリケーションパッケージが問題のプロパティ値を保有することを示すように、プロパティテーブルを更新することによって、プロパティテーブルを更新することも含んでもよい。
【０００６】
一実施例において、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定することは、マルウェアシグネチャ内に識別される各プロパティ値について、（１）プロパティテーブルの該プロパティ値を検索することと、次いで、（２）プロパティテーブルから、該プロパティ値を共有する各アプリケーションパッケージのリストを取り出すことと、を含んでもよい。別の実施例において、マルウェアシグネチャが複数のプロパティ値を識別する場合、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定することはまた、各取り出されたリストに載っているいずれのアプリケーションパッケージも識別することも含んでもよい。
【０００７】
プロパティテーブルは、リレーショナルデータベース内のテーブル等を含む、様々な形態で構築されてもよい。一部の実施例において、プロパティテーブルは、少なくとも１つの一意のプロパティ値が、コンピューティングデバイスにインストールされる複数のアプリケーションパッケージによって共有されることを示してもよい。
【０００８】
一部の実施形態において、本方法はまた、（１）マルウェアシグネチャに合致する、コンピューティングデバイスにインストールされる少なくとも１つのアプリケーションパッケージを識別することと、次いで、（２）マルウェアシグネチャに合致するアプリケーションパッケージにセキュリティ行為を実施することと、を含んでもよい。一実施例において、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定するのに必要な時間の長さは、コンピューティングデバイスにインストールされるアプリケーションパッケージの数に比例しない場合がある。
【０００９】
一実施形態において、上で説明される方法を実装するためのシステムは、セキュリティソフトウェア提供者から、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する少なくとも１つのマルウェアシグネチャを取得するようにプログラムされる、シグネチャ取り出しモジュールを含んでもよい。システムはまた、（１）コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、コンピューティングデバイスのプロパティテーブルにアクセスし、次いで、（２）マルウェアシグネチャ内に識別される各プロパティ値をプロパティテーブルと比較することによって、各アプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定するようにプログラムされる、マルウェア検出モジュールも含んでもよい。
【００１０】
一部の実施例において、上で説明される方法は、コンピュータで読み取り可能な記憶媒体上でコンピュータで読み取り可能な命令としてコード化され得る。例えば、コンピュータで読み取り可能な媒体は、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイスに、（１）セキュリティソフトウェア提供者から、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する少なくとも１つのマルウェアシグネチャを取得させ、（２）コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、コンピューティングデバイスのプロパティテーブルにアクセスさせ、次いで、（３）マルウェアシグネチャ内に識別される各プロパティ値をプロパティテーブルと比較することによって、各アプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定させ得る、１つ以上のコンピュータで実行可能な命令を含んでもよい。
【００１１】
以下により詳細に説明されるように、コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有される一意のプロパティ値を識別するプロパティテーブルを作成し、更新することによって、本明細書に説明されるシステム及び方法は、セキュリティソフトウェアが、コンピューティングデバイスにインストールされるありとあらゆるアプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、マルウェアシグネチャとの合致を迅速に識別することを可能にし得る。更に、このプロパティテーブルは、複数のインストールされたアプリケーションパッケージが同一のプロパティ値を共有又は保有することを示すエントリを含有し得るため、そのようなスキャンを実施するのに必要な時間の長さは、もはやインストールされたアプリケーションパッケージの数に比例せず、潜在的に、これらのスキャンを実施するのに必要な時間量の大幅な減少をもたらし得る。最後に、この速度利点のため、及びこれらのプロパティテーブルのサイズが従来のプロパティ値キャッシュよりずっと小さくてもよいため、本明細書に説明されるシステム及び方法は、携帯型コンピューティングデバイス等の限られたコンピューティング資源を有するコンピューティングシステムに特に有用であり得る、又は適用可能であり得る。
【００１２】
上に言及される実施形態のうちのいずれかからの特長は、本明細書に説明される一般原理に従って、互いに組み合わせて使用されてもよい。これら及び他の実施形態、特長、及び利点は、添付の図面及び特許請求の範囲と共に以下の詳細な説明を一読することでより完全に理解されるであろう。
【図面の簡単な説明】
【００１３】
添付の図面は、多数の例示的な実施形態を例解し、かつ本明細書の一部である。以下の説明と共に、これらの図面は、本開示の多様な原理を例証及び説明する。
【図１】非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的なシステムのブロック図である。
【図２】非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的なシステムのブロック図である。
【図３】非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的な方法の流れ図である。
【図４】例示的なプロパティテーブルの例解である。
【図５】本明細書に説明及び／又は例解される実施形態のうちの１つ以上を実装することが可能な例示的なコンピューティングシステムのブロック図である。
【図６】本明細書に説明及び／又は例解される実施形態のうちの１つ以上を実装することが可能な例示的なコンピューティングネットワークのブロック図である。
【００１４】
図面を通して、同一の参照文字及び説明は、類似しているが必ずしも同一ではない要素を示す。本明細書に説明される例示的な実施形態は多様な修正及び代替形態が可能であるが、具体的な実施形態が、図面において例として示されており、本明細書に詳細に説明されるであろう。しかしながら、本明細書に説明される例示的な実施形態は、開示される特定の形態に限定されることを意図するものではない。むしろ、本開示は、添付の特許請求の範囲内にある全ての修正、同等物、及び代替物を網羅する。
【発明を実施するための形態】
【００１５】
以下は、図１〜図２を参照して、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的なシステムの詳細な説明を提供する。図３〜図４に関連して、対応するコンピュータによって実装される方法の詳細な説明もまた提供される。更に、本明細書に説明される実施形態のうちの１つ以上を実装することが可能な例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明は、それぞれ、図５及び図６と併せて提供される。
【００１６】
図１は、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的なシステム１００のブロック図である。この図に例解されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含んでもよい。例えば、及び以下により詳細に説明されるように、例示的なシステム１００は、セキュリティソフトウェア提供者から、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する少なくとも１つのマルウェアシグネチャを取得するようにプログラムされる、シグネチャ取り出しモジュール１０４を含んでもよい。例示的なシステム１００はまた、（１）コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、プロパティテーブルにアクセスし、次いで、（２）マルウェアシグネチャ内に識別される各プロパティ値をプロパティテーブルと比較することによって、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定するようにプログラムされる、マルウェア検出モジュール１０６も含んでもよい。
【００１７】
加えて、及び以下により詳細に説明されるように、例示的なシステム１００は、プロパティテーブルを作成又は更新するようにプログラムされる、テーブル維持モジュール１０８を含んでもよい。例示的なシステム１００はまた、マルウェアシグネチャに合致するアプリケーションパッケージを識別し、それにセキュリティ行為を実施するようにプログラムされる、セキュリティモジュール１１０も含んでもよい。別個の要素として例解されているが、図１のモジュール１０２のうちの１つ以上が、単一のモジュール又はアプリケーションの部分を表してもよい。
【００１８】
ある実施形態において、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイスにより実行されるとき、コンピューティングデバイスに１つ以上のタスクを実施させ得る、１つ以上のソフトウェアアプリケーション又はプログラムを表し得る。例えば、かつ以下により詳細に説明されるように、モジュール１０２のうちの１つ以上は、図２に例解されるデバイス（例えば、コンピューティングデバイス２０２及び／若しくはサーバ２０６）、図５のコンピューティングシステム５１０、並びに／又は図６の例示的なネットワークアーキテクチャ６００の部分等、１つ以上のコンピューティングデバイスに記憶され、そこで作動するように構成される、ソフトウェアモジュールを表し得る。図１のモジュール１０２のうちの１つ以上はまた、１つ以上のタスクを実施するように構成される、１つ以上の特殊目的のコンピュータの全て又は部分を表し得る。
【００１９】
図１に例解されるように、例示的なシステム１００はまた、データベース１２０等の１つ以上のデータベースも含んでもよい。一実施例において、データベース１２０（例えば、リレーショナルデータベースを表してもよい）は、プロパティテーブル１２２を記憶するように構成されてもよい。データベース１２０は、単一のデータベース若しくはコンピューティングデバイス、又は複数のデータベース若しくはコンピューティングデバイスの部分を表してもよい。例えば、データベース１２０は、図２のコンピューティングデバイス２０２及び／若しくはサーバ２０６の一部分、図５のコンピューティングシステム５１０、並びに／又は図６の例示的なネットワークアーキテクチャ６００の部分を表してもよい。あるいは、図１のデータベース１２０は、図２のコンピューティングデバイス２０２及び／若しくはサーバ２０６、図５のコンピューティングシステム５１０、並びに／又は図６の例示的なネットワークアーキテクチャ６００の部分等のコンピューティングデバイスがアクセスすることができる、１つ以上の物理的に別個のデバイスを表してもよい。
【００２０】
図１の例示的なシステム１００は、多様な方法で実装されてもよい。例えば、例示的なシステム１００の全て又は一部分は、図２の例示的なシステム２００の部分を表し得る。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信する、コンピューティングデバイス２０２を含み得る。
【００２１】
一実施形態において、図１のモジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２の少なくとも１つのプロセッサによって実行されるとき、コンピューティングデバイス２０２が、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用することを可能にし得る。例えば、以下により詳細に説明されるように、モジュール１０２のうちの１つ以上は、コンピューティングデバイス２０２に、（１）セキュリティソフトウェア提供者から、マルウェアのアイテムの少なくとも１つのプロパティ値を識別する少なくとも１つのマルウェアシグネチャ（例えば、マルウェアシグネチャ２１２）を取得させ、（２）コンピューティングデバイス２０２にインストールされる１つ以上のアプリケーションパッケージ（例えば、インストールされたアプリケーションパッケージ２１４）によって共有されるプロパティ値と、各プロパティ値について、問題のプロパティ値を共有する各アプリケーションパッケージとを識別する、プロパティテーブル（例えば、プロパティテーブル１２２）にアクセスさせ、次いで、（３）マルウェアシグネチャ内に識別される各プロパティ値をプロパティテーブルと比較することによって、各アプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、アプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定させてもよい。
【００２２】
コンピューティングデバイス２０２は、概して、コンピュータで実行可能な命令を読み取ることが可能な任意のタイプ又は形態のコンピューティングデバイスを表す。コンピューティングデバイス２０２の例としては、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、個人用デジタル補助装置（ＰＤＡ）、マルチメディアプレーヤ、組み込みシステム、これらの１つ以上の組み合わせ、図５の例示的なコンピューティングシステム５１０、又は任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【００２３】
サーバ２０６は、概して、マルウェアシグネチャを提供することが可能な任意のタイプ又は形態のコンピューティングデバイスを表す。サーバ２０６の例としては、多様なデータベースサービスを提供する及び／又はあるソフトウェアアプリケーションを作動させるように構成されるアプリケーションサーバ及びデータベースサーバが挙げられるが、これらに限定されない。
【００２４】
ネットワーク２０４は、概して、通信又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを表す。ネットワーク２０４の例としては、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラーネットワーク（例えば、ＧＳＭネットワーク（「ＧＳＭ」は登録商標））、図６の例示的なネットワークアーキテクチャ６００等が挙げられるが、これらに限定されない。ネットワーク２０４は、無線又は有線接続を使用して通信又はデータ転送を容易にし得る。一実施形態において、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にし得る。
【００２５】
図３は、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的なコンピュータによって実装される方法３００の流れ図である。図３に示される工程は、任意の好適なコンピュータで実行可能なコード及び／又はコンピューティングシステムによって実施されてもよい。一部の実施形態において、図３に示される工程は、図１のシステム１００の構成要素のうちの１つ以上、図２のシステム２００、図５のコンピューティングシステム５１０、及び／又は図６の例示的なネットワークアーキテクチャ６００の部分により実施されてもよい。
【００２６】
図３に例解されるように、工程３０２で、本明細書に説明されるシステムは、セキュリティソフトウェア提供者から少なくとも１つのマルウェアシグネチャを取得してもよい。例えば、図２のコンピューティングデバイス２０２の一部としてのシグネチャ取り出しモジュール１０４が、セキュリティソフトウェア提供者からマルウェアシグネチャ２１２を取得してもよい。
【００２７】
本明細書で使用される場合、「マルウェアシグネチャ」という用語は、概して、マルウェアのアイテムの１つ以上の特徴又は特性に基づき、マルウェアのアイテムを識別するために使用され得る、任意のタイプ又は形態のデータ構造を指す。一部の実施例において、マルウェアシグネチャは、既知のマルウェアのアイテムの１つ以上の特性又は特徴を識別してもよい。マルウェアシグネチャが識別し得るマルウェアのアイテム（悪意のあるファイル等）の特性又は特徴のタイプの例としては、ファイルを一意に識別するハッシュ、ファイル名、ファイルのインストール経路、ファイルのサイズ、ファイルによって生成若しくは参照されるデータオブジェクト（例えば、文字列定数、クラス名、変数名等）、あるいはファイルの静的に観察可能なプロパティ若しくは特徴の任意の他のタイプ又は形態が挙げられるが、これらに限定されない。
【００２８】
本明細書に説明されるシステムは、様々な方法で工程３０２を実施してもよい。一実施例において、シグネチャ取り出しモジュール１０４は、マルウェアシグネチャ２１２を、セキュリティソフトウェア提供者によって運営されるサーバ（例えば、サーバ２０６）からそれらをダウンロードすることによって取得してもよい。別の実施例において、シグネチャ取り出しモジュール１０４は、コンピューティングデバイス２０２に接続された物理媒体（例えば、ＤＶＤ又はフラッシュドライブ）からマルウェアシグネチャ２１２を取り出してもよい。一部の実施例において、マルウェアシグネチャ２１２は、セキュリティソフトウェア提供者によって提供される、複数のマルウェアシグネチャを含む、新しい、又は更新されたマルウェア定義セット内に含まれてもよい。
【００２９】
工程３０４で、本明細書に説明されるシステムは、問題のコンピューティングデバイスのプロパティテーブルにアクセスしてもよい。例えば、図２のコンピューティングデバイス２０２の一部としてのマルウェア検出モジュール１０６は、コンピューティングデバイス２０２のプロパティテーブル１２２にアクセスしてもよい。
【００３０】
一部の実施例において、工程３０４でアクセスされるプロパティテーブルは、コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有されるプロパティ値と、各プロパティ値について、このプロパティ値を共有する各アプリケーションパッケージとを識別し得る。図４は、例示的なプロパティテーブル４００の例解を提供する。この図に例解されるように、プロパティテーブル４００内の列４０２は、コンピューティングデバイス２０２にインストールされるアプリケーションパッケージ（例えば、インストールされたアプリケーションパッケージ２１４）の多様なプロパティ値（例えば、「値＿１」、「値＿２」等）のリストを表し得る。一実施例において、プロパティテーブル４００内の列４０２は、各一意のプロパティ値に単一のエントリのみを含有してもよい。換言すれば、コンピューティングデバイス２０２にインストールされる２つ以上のアプリケーションパッケージが同一のプロパティ値を保有又は共有する場合でさえ、プロパティテーブル４００内の列４０２は、このプロパティ値に単一のエントリのみを含有してもよい。
【００３１】
図４に例解される実施例において、プロパティテーブル４００はまた、列４０２に識別されるプロパティ値を共有又は保有する、コンピューティングデバイス２０２にインストールされるアプリケーションパッケージを識別する、列４０４も含んでもよい。例えば、列４０４は、アプリケーションパッケージ「ＡＰＫ＿３」、「ＡＰＫ＿５」、及び「ＡＰＫ＿６」が各々、プロパティ値「値＿１」を共有又は保有することを示してもよい。
【００３２】
一部の実施例において、工程３０４でアクセスされるプロパティテーブルは、問題のコンピューティングデバイスにインストールされるありとあらゆるアプリケーションパッケージのプロパティ値を含有してもよい。他の実施例において、このプロパティテーブルは、コンピューティングデバイスにインストールされるアプリケーションパッケージの特定のサブセットのプロパティ値のみを含有してもよい。そのようなサブセットの例としては、ユーザーがインストールしたアプリケーションパッケージ、特定のソースからのアプリケーションパッケージ（例えば、インターネットブラウザを介してダウンロードされた、電子メール通信で受信した、物理媒体から取り出された、特定のＵＲＬからの、アプリケーションパッケージ等）、特定の日又は時刻に、その前に、若しくはその後にインストールされたアプリケーションパッケージ、及び／あるいはアプリケーションパッケージの任意の他の潜在的に興味深い、若しくは有用なグループ又はサブセットが挙げられるが、これらに限定されない。
【００３３】
本明細書に説明されるシステムは、工程３０４でアクセスされるプロパティテーブルを、様々な方法で作成又は更新してもよい。一実施例において、本明細書に説明されるシステムは、（１）コンピューティングデバイスへの少なくとも１つのアプリケーションパッケージのインストールを検出し、（２）アプリケーションパッケージの少なくとも１つのプロパティ値を識別し、次いで、（３）アプリケーションパッケージが問題のプロパティ値を保有することを記述する、若しくは示す、プロパティテーブルを作成又は更新することによって、コンピューティングデバイスのプロパティテーブルを更新又は作成してもよい。例えば、テーブル維持モジュール１０８は、コンピューティングデバイス２０２の新しいアプリケーションパッケージのインストールを監視してもよい。テーブル維持モジュール１０８がアプリケーションパッケージのインストールを検出する場合、テーブル維持モジュール１０８は、（例えば、インストールされたアプリケーションパッケージのコードの静的解析を実施することによって）インストールされたアプリケーションパッケージの１つ以上の特性又は特徴を識別してもよい。テーブル維持モジュール１０８が次いで、インストールされたアプリケーションパッケージのプロパティ値（例えば、「値＿１」）がプロパティテーブル４００の列４０２内に既に識別されていると判定する場合、テーブル維持モジュール１０８は、インストールされたアプリケーションパッケージが問題のプロパティ値を保有又は共有することを示すように、（例えば、問題のプロパティ値の列４０２内のエントリに隣接する列４０４内のエントリに、インストールされたアプリケーションパッケージの一意の識別子を追加することによって）列４０４を単に更新してもよい。
【００３４】
対照的に、テーブル維持モジュール１０８が、プロパティテーブル４００がインストールされたアプリケーションパッケージの識別されるプロパティ値のエントリを依然として含有していないと判定する場合、テーブル維持モジュール１０８は、プロパティテーブル４００の列４０２内に、問題のプロパティ値を一意に識別するエントリを作成してもよい。また、テーブル維持モジュール１０８は次いで、列４０２内の新しく作成されたエントリに隣接する列４０４内に、インストールされたアプリケーションパッケージを一意に識別するエントリも作成してもよい。
【００３５】
工程３０４でアクセスされるプロパティテーブルは、プロパティ値とそのようなプロパティ値を保有又は共有するインストールされたアプリケーションパッケージとの間の関係を識別するのに十分な任意のタイプ又は形態のデータ構造を表してもよい。一実施例において、このプロパティテーブルは、ＳＱＬデータベース等のローカル又はリモートリレーショナルデータベース内のプロパティテーブルを表してもよい。本実施例において、本明細書に説明されるシステムは、プロパティテーブル上で実施されるデータ取り出し動作の速度を改善するために、プロパティテーブルに１つ以上のデータベースインデックスを作成してもよい。
【００３６】
図３に戻り、工程３０６で、本明細書に説明されるシステムは、工程３０２で取得されるマルウェアシグネチャ内に識別される各プロパティ値を、工程３０４でアクセスされるプロパティテーブルと比較することによって、コンピューティングデバイスにインストールされるアプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定してもよい。例えば、図２のコンピューティングデバイス２０２の一部としてのマルウェア検出モジュール１０６は、インストールされたアプリケーションパッケージ２１４のいずれかがマルウェアシグネチャ２１２に合致するか否かを判定するために、プロパティテーブル１２２を使用してもよい。
【００３７】
本明細書に説明されるシステムは、様々な方法で工程３０６を実施してもよい。一実施例において、本明細書に説明されるシステムは、マルウェアシグネチャ内に識別される各プロパティ値について、（１）プロパティテーブルのプロパティ値を検索し、次いで、（２）プロパティテーブルから、プロパティ値を共有する各アプリケーションパッケージのリストを取り出すことによって、コンピューティングデバイスにインストールされるアプリケーションパッケージのいずれかが、工程３０２で取得されるマルウェアシグネチャに合致するか否かを判定してもよい。例えば、マルウェア検出モジュール１０６は、問題のプロパティ値に合致するプロパティテーブル４００の列４０２内のエントリを問い合わせる、又は検索することによって、マルウェアシグネチャ２１２内に識別される各プロパティ値について、インストールされたアプリケーションパッケージ２１４のいずれかが、この特定のプロパティ値を保有するか否かを判定してもよい。プロパティテーブル４００内の列４０２内に問題のプロパティ値のエントリが存在する場合、マルウェア検出モジュール１０６は、プロパティテーブル４００内の列４０４から、このプロパティ値を共有又は保有する各アプリケーションパッケージのリストを取り出してもよい。例えば、マルウェアシグネチャ２１２がプロパティ値「値＿１」を識別する場合、マルウェア検出モジュール１０６は、プロパティテーブル４００から、コンピューティングデバイス２０２にインストールされるアプリケーションパッケージ「ＡＰＫ＿３」、「ＡＰＫ＿５」、及び「ＡＰＫ＿６」がプロパティ値「値＿１」を保有又は共有することを示す、リストを取得してもよい。
【００３８】
工程３０２で取得されるマルウェアシグネチャが、単一のプロパティ値のみを識別する場合（例えば、マルウェアシグネチャが、ブラックリストに載っている、又は既知の悪意のあるファイルのハッシュを単に表す場合）、本明細書に説明されるシステムは、問題のプロパティ値を保有するインストールされたアプリケーションパッケージ（例えば、ブラックリストに載っているファイルのハッシュに合致する、インストールされたアプリケーションパッケージ）を単に識別することによって、このマルウェアシグネチャとの合致を識別してもよい。
【００３９】
しかしながら、工程３０２で取得されるマルウェアシグネチャが、マルウェアのアイテムの複数のプロパティ値を識別する場合、本明細書に説明されるシステムは、（１）プロパティテーブルから、マルウェアシグネチャ内に識別される各プロパティ値を共有又は保有する各アプリケーションパッケージのリストを取り出し、次いで、（２）これらの取り出されたリストの各々に載っているいずれのアプリケーションパッケージも識別することによって、インストールされたアプリケーションパッケージのいずれかがマルウェアシグネチャに合致するか否かを判定してもよい。例えば、マルウェアシグネチャ２１２が、プロパティ値「値＿３」及び「値＿５」を識別する情報を含有する場合、マルウェア検出モジュール１０６は、プロパティテーブル４００から、問題のプロパティ値を共有又は保有する、コンピューティングデバイス２０２にインストールされる各アプリケーションパッケージを識別する、これらのプロパティ値の各々に対するリストを取り出してもよい。例えば、マルウェア検出モジュール１０６は、プロパティテーブル４００から、（１）アプリケーションパッケージ「ＡＰＫ＿２」及び「ＡＰＫ＿３」がプロパティ値「値＿３」を保有又は共有することを示すリスト、並びに（２）アプリケーションパッケージ「ＡＰＫ＿２」がプロパティ値「値＿５」を保有することを示すリストを取り出してもよい。本実施例において、マルウェア検出モジュール１０６は、取り出されたリスト間の交差するデータ点を識別することによって、マルウェアシグネチャ２１２とのいずれの合致も識別し得る。例えば、マルウェア検出モジュール１０６は、このアプリケーションパッケージがマルウェアシグネチャ２１２内に識別されるプロパティ値の各々を保有するため、アプリケーションパッケージ「ＡＰＫ＿２」がマルウェアシグネチャ２１２に合致する（及びしたがって、マルウェアを表す）と判定してもよい。
【００４０】
一部の実施例において、本明細書に説明されるシステムは、工程３０２で取得されるマルウェアシグネチャに合致する、コンピューティングデバイスにインストールされる各アプリケーションパッケージに、セキュリティ行為を実施してもよい。例えば、マルウェア検出モジュール１０６が、アプリケーションパッケージ「ＡＰＫ＿２」がマルウェアシグネチャ２１２に合致すると判定する場合、図２のコンピューティングデバイス２０２の一部としてのセキュリティモジュール１１０は、アプリケーションパッケージ「ＡＰＫ＿２」にセキュリティ行為を実施してもよい。そのようなセキュリティ行為の例としては、インストールされたアプリケーションパッケージをアンインストールする、削除する、除去する、及び／若しくは検疫すること、セキュリティソフトウェア提供者に、インストールされたアプリケーションパッケージがマルウェアシグネチャに合致することを通知すること、コンピューティングデバイスのユーザーに、インストールされたアプリケーションパッケージがマルウェアシグネチャに合致することを通知すること、並びに／又はインストールされたアプリケーションパッケージによってもたらされる潜在的セキュリティ課題を改善し得る任意の他の潜在的行為が挙げられるが、これらに限定されない。
【００４１】
上述されるように、コンピューティングデバイスにインストールされる１つ以上のアプリケーションパッケージによって共有される一意のプロパティ値を識別するプロパティテーブルを作成し、更新することによって、本明細書に説明されるシステム及び方法は、セキュリティソフトウェアが、コンピューティングデバイスにインストールされるありとあらゆるアプリケーションパッケージの個々のプロパティ値を反復的に適用することを必要とせずに、マルウェアシグネチャとの合致を迅速に識別することを可能にし得る。更に、このプロパティテーブルは、複数のインストールされたアプリケーションパッケージが同一のプロパティ値を共有又は保有することを示すエントリを含有し得るため、そのようなスキャンを実施するのに必要な時間の長さは、もはやインストールされたアプリケーションパッケージの数に比例せず、潜在的に、これらのスキャンを実施するのに必要な時間量の大幅な減少をもたらし得る。最後に、この速度利点のため、及びこれらのプロパティテーブルのサイズが従来のプロパティ値キャッシュよりずっと小さくてもよいため、本明細書に説明されるシステム及び方法は、携帯型コンピューティングデバイス等の限られたコンピューティング資源を有するコンピューティングシステムに特に有用であり得る、又は適用可能であり得る。
【００４２】
図５は、本明細書に説明及び／又は例解される実施形態のうちの１つ以上を実装することが可能な例示的なコンピューティングシステム５１０のブロック図である。例えば、コンピューティングシステム５１０の全て又は一部分は、単独で、若しくは他の要素と組み合わせて、本明細書に説明される取得する工程、アクセスする工程、判定する工程、比較する工程、作成する工程、更新する工程、検出する工程、識別する工程、検索する工程、取り出す工程、及び実施する工程のうちの１つ以上を実施し得る、並びに／又は実施するための手段であり得る。コンピューティングシステム５１０の全て又は一部分はまた、本明細書に説明及び／又は例解される任意の他の工程、方法、又はプロセスを実施し得る、及び／又は実施するための手段であり得る。
【００４３】
コンピューティングシステム５１０は、コンピュータで読み取り可能な命令を実行することが可能な任意の単一又はマルチプロセッサコンピューティングデバイス又はシステムを広範に表す。コンピューティングシステム５１０の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は任意の他のコンピューティングシステム又はデバイスが挙げられるが、これらに限定されない。コンピューティングシステム５１０の最も基本的な構成において、コンピューティングシステム５１０は、少なくとも１つのプロセッサ５１４及びシステムメモリ５１６を含み得る。
【００４４】
プロセッサ５１４は、概して、データ処理又は命令の解釈及び実行が可能な任意のタイプ又は形態の処理ユニットを表す。ある実施形態において、プロセッサ５１４は、ソフトウェアアプリケーション又はモジュールから命令を受信し得る。これらの命令は、プロセッサ５１４に、本明細書に説明及び／又は例解される例示的な実施形態のうちの１つ以上の機能を実施させ得る。
【００４５】
システムメモリ５１６は、概して、データ及び／又は他のコンピュータで読み取り可能な命令を記憶することが可能な任意のタイプ又は形態の揮発性又は非揮発性の記憶デバイス又は媒体を表す。システムメモリ５１６の例としては、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられるが、これらに限定されない。必ずしも必要ではないが、ある実施形態において、コンピューティングシステム５１０は、揮発性メモリユニット（例えば、システムメモリ５１６等）及び非揮発性記憶デバイス（例えば、以下に詳細に説明されるように、一次記憶デバイス５３２等）を含み得る。一実施例において、図１からのモジュール１０２のうちの１つ以上は、システムメモリ５１６にロードされ得る。
【００４６】
ある実施形態において、例示的なコンピューティングシステム５１０はまた、プロセッサ５１４及びシステムメモリ５１６に加えて、１つ以上の構成要素又は要素を含んでもよい。例えば、図５に例解されるように、コンピューティングシステム５１０は、通信基盤５１２を介して各々が相互接続され得る、メモリコントローラ５１８、入力／出力（Ｉ／Ｏ）コントローラ５２０、及び通信インターフェース５２２を含んでもよい。通信基盤５１２は、概して、コンピューティングデバイスの１つ以上の構成要素の間の通信を容易にすることが可能な任意のタイプ又は形態の基盤を表し得る。通信基盤５１２の例としては、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、類似のバス等）及びネットワークが挙げられるが、これらに限定されない。
【００４７】
メモリコントローラ５１８は、概して、コンピューティングシステム５１０の１つ以上の構成要素間でメモリ若しくはデータを扱う、又は通信を制御することが可能な任意のタイプ又は形態のデバイスを表し得る。例えば、ある実施形態において、メモリコントローラ５１８は、通信基盤５１２を介して、プロセッサ５１４、システムメモリ５１６、及びＩ／Ｏコントローラ５２０との間で通信を制御し得る。
【００４８】
Ｉ／Ｏコントローラ５２０は、概して、コンピューティングデバイスの入力及び出力機能を調整及び／又は制御することが可能な任意のタイプ又は形態のモジュールを表し得る。例えば、ある実施形態において、Ｉ／Ｏコントローラ５２０は、プロセッサ５１４、システムメモリ５１６、通信インターフェース５２２、ディスプレイアダプタ５２６、入力インターフェース５３０、及び記憶インターフェース５３４のような、コンピューティングシステム５１０の１つ以上の要素間のデータの転送を制御又は容易にし得る。
【００４９】
通信インターフェース５２２は、例示的なコンピューティングシステム５１０と１つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形態の通信デバイス又はアダプタを広範に表し得る。例えば、ある実施形態において、通信インターフェース５２２は、コンピューティングシステム５１０と、追加のコンピューティングシステムを含む私的又は公的なネットワークとの間の通信を容易にし得る。通信インターフェース５２２の例としては、有線ネットワークインターフェース（ネットワークインターフェースカード等）、無線ネットワークインターフェース（無線ネットワークインターフェースカード等）、モデム、及び任意の他の好適なインターフェースが挙げられるが、これらに限定されない。少なくとも１つの実施形態において、通信インターフェース５２２は、インターネット等の、ネットワークへの直接的なリンクを介して、リモートサーバへ直接的な接続を提供し得る。通信インターフェース５２２はまた、例えば、ローカルエリアネットワーク（イーサネットネットワーク（「イーサネット」は登録商標、以下同じ）等）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、間接的にそのような接続を提供してもよい。
【００５０】
ある実施形態において、通信インターフェース５２２はまた、外部バス又は通信チャンネルを介して、コンピューティングシステム５１０と、１つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されるホストアダプタを表し得る。ホストアダプタの例としては、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ  １３９４ホストアダプタ、ＳＡＴＡ及びｅＳＡＴＡホストアダプタ、ＡＴＡ及びＰＡＴＡホストアダプタ、ファイバーチャンネルインターフェースアダプタ、イーサネットアダプタ等が挙げられるが、これらに限定されない。通信インターフェース５２２はまた、コンピューティングシステム５１０が、分散型又はリモートコンピューティングに関与することを可能にし得る。例えば、通信インターフェース５２２は、実行のためにリモートデバイスから命令を受信するか、又はリモートデバイスへ命令を送信することができる。
【００５１】
図５に例解されるように、コンピューティングシステム５１０はまた、ディスプレイアダプタ５２６を介して通信基盤５１２に連結される少なくとも１つのディスプレイデバイス５２４を含んでもよい。ディスプレイデバイス５２４は、概して、ディスプレイアダプタ５２６によって転送される情報を視覚的に表示することが可能な任意のタイプ又は形態のデバイスを表し得る。同様に、ディスプレイアダプタ５２６は、概して、ディスプレイデバイス５２４上での表示のために、通信基盤５１２から（又は、当該分野で既知の、フレームバッファから）グラフィック、テキスト、及び他のデータを転送するように構成される任意のタイプ又は形態のデバイスを表す。
【００５２】
図５に例解されるように、例示的なコンピューティングシステム５１０はまた、入力インターフェース５３０を介して通信基盤５１２に連結される少なくとも１つの入力デバイス５２８を含んでもよい。入力デバイス５２８は、概して、例示的なコンピューティングシステム５１０に、コンピュータ又は人間のいずれかが生成した入力を提供することが可能な任意のタイプ又は形態の入力デバイスを表し得る。入力デバイス５２８の例としては、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられるが、これらに限定されない。
【００５３】
図５に例解されるように、例示的なコンピューティングシステム５１０はまた、記憶インターフェース５３４を介して通信基盤５１２に連結される一次記憶デバイス５３２及びバックアップ記憶デバイス５３３を含んでもよい。記憶デバイス５３２及び５３３は、概して、データ及び／又は他のコンピュータで読み取り可能な命令を記憶することが可能な任意のタイプ又は形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス５３２及び５３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ（「フロッピー」は登録商標、以下同じ）、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であり得る。記憶インターフェース５３４は、概して、記憶デバイス５３２及び５３３とコンピューティングシステム５１０の他の構成要素との間でデータを転送するための任意のタイプ又は形態のインターフェース又はデバイスを表す。一実施例において、図１のデータベース１２０は、一次記憶デバイス５３２に記憶されてもよい。
【００５４】
ある実施形態において、記憶デバイス５３２及び５３３は、コンピュータソフトウェア、データ、又は他のコンピュータで読み取り可能な情報を記憶するように構成される取り外し可能な記憶ユニットから読み取る、及び／又は取り外し可能な記憶ユニットに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイス等が挙げられるが、これらに限定されない。記憶デバイス５３２及び５３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータで読み取り可能な命令がコンピューティングシステム５１０にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス５３２及び５３３は、ソフトウェア、データ、又は他のコンピュータで読み取り可能な情報を読み取る及び書き込むように構成され得る。記憶デバイス５３２及び５３３はまた、コンピューティングシステム５１０の一部であってもよく、又は他のインターフェースシステムを通じてアクセスされる別個のデバイスであってもよい。
【００５５】
多くの他のデバイス又はサブシステムが、コンピューティングシステム５１０に接続され得る。反対に、本明細書に説明及び／又は例解される実施形態を実践するために、図５に例解される構成要素及びデバイスの全てが存在する必要はない。上で言及されるデバイス及びサブシステムはまた、図５に示されるものとは異なる方法で相互接続されてもよい。コンピューティングシステム５１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェア構成を用いてもよい。例えば、本明細書に開示される例示的な実施形態のうちの１つ以上は、コンピュータで読み取り可能な記憶媒体上で、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータで読み取り可能な命令、又はコンピュータ制御論理とも称される）としてコード化され得る。「コンピュータで読み取り可能な記憶媒体」という句は、概して、コンピュータで読み取り可能な命令を記憶又は担持することが可能な任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータで読み取り可能な記憶媒体の例としては、搬送波等の伝送媒体、及び磁気記憶媒体（例えば、ハードディスクドライブ及びフロッピーディスク）等の非一過性媒体、光学記憶媒体（例えば、ＣＤ又はＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュ媒体）、並びに他の配布システムが挙げられるが、これらに限定されない。
【００５６】
コンピュータプログラムを含むコンピュータで読み取り可能な記憶媒体は、コンピューティングシステム５１０にロードされ得る。次いで、コンピュータで読み取り可能な記憶媒体上に記憶されるコンピュータプログラムの全ての又は一部分は、システムメモリ５１６、並びに／又は記憶デバイス５３２及び５３３の多様な部分に記憶され得る。プロセッサ５１４により実行されるとき、コンピューティングシステム５１０にロードされるコンピュータプログラムは、プロセッサ５１４に、本明細書に説明及び／又は例解される例示的な実施形態のうちの１つ以上の機能を実施させ得る、及び／又は実施するための手段であり得る。更に又は代替的に、本明細書に説明及び／又は例解される例示的な実施形態のうちの１つ以上は、ファームウェア及び／又はハードウェアに実装され得る。例えば、コンピューティングシステム５１０は、本明細書に開示される例示的な実施形態のうちの１つ以上を実装するように適合される、特定用途向け集積回路（ＡＳＩＣ）として構成されてもよい。
【００５７】
図６は、クライアントシステム６１０、６２０、及び６３０、並びにサーバ６４０及び６４５がネットワーク６５０に連結され得る、例示的なネットワークアーキテクチャ６００のブロック図である。上で詳述されるように、ネットワークアーキテクチャ６００の全て又は一部分は、単独で、若しくは他の要素と組み合わせて、本明細書に開示される取得する工程、アクセスする工程、判定する工程、比較する工程、作成する工程、更新する工程、検出する工程、識別する工程、検索する工程、取り出す工程、及び実施する工程のうちの１つ以上を実施し得る、並びに／又は実施するための手段であり得る。ネットワークアーキテクチャ６００の全て又は一部分はまた、本開示に記載される他の工程及び特長を実施するために使用され得る、及び／又は実施するための手段であり得る。
【００５８】
クライアントシステム６１０、６２０、及び６３０は、概して、図５の例示的なコンピューティングシステム５１０等、任意のタイプ又は形態のコンピューティングデバイス又はシステムを表し得る。同様に、サーバ６４０及び６４５は、概して、多様なデータベースサービスを提供する及び／又はあるソフトウェアアプリケーションを作動させるように構成される、アプリケーションサーバ又はデータベースサーバ等のコンピューティングデバイス又はシステムを表す。ネットワーク６５０は、概して、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを表す。一実施例において、クライアントシステム６１０、６２０、及び／若しくは６３０、並びに／又はサーバ６４０及び／若しくは６４５は、図１からのシステム１００の全ての又は一部分を含んでもよい。
【００５９】
図６に例解されるように、１つ以上の記憶デバイス６６０（１）〜（Ｎ）は、サーバ６４０に直接的に接続され得る。同様に、１つ以上の記憶デバイス６７０（１）〜（Ｎ）は、サーバ６４５に直接的に接続され得る。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、概して、データ及び／又は他のコンピュータで読み取り可能な命令を記憶することが可能な任意のタイプ又は形態の記憶デバイス又は媒体を表す。ある実施形態において、記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢ、又はＣＩＦＳ等の、多様なプロトコルを使用してサーバ６４０及び６４５と通信するように構成されるネットワーク接続記憶（ＮＡＳ）デバイスを表し得る。
【００６０】
サーバ６４０及び６４５はまた、記憶エリアネットワーク（ＳＡＮ）ファブリック６８０に接続され得る。ＳＡＮファブリック６８０は、概して、複数の記憶デバイス間の通信を容易にすることが可能な任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表す。ＳＡＮファブリック６８０は、サーバ６４０及び６４５と複数の記憶デバイス６９０（１）〜（Ｎ）及び／又は知的記憶アレイ６９５との間の通信を容易にし得る。ＳＡＮファブリック６８０はまた、デバイス６９０（１）〜（Ｎ）及びアレイ６９５が、クライアントシステム６１０、６２０、及び６３０にローカルで接続されたデバイスとして現れるような様式で、ネットワーク６５０並びにサーバ６４０及び６４５を介して、クライアントシステム６１０、６２０、及び６３０と記憶デバイス６９０（１）〜（Ｎ）及び／又は知的記憶アレイ６９５との間の通信を容易にし得る。記憶デバイス６６０（１）〜（Ｎ）及び記憶デバイス６７０（１）〜（Ｎ）と同様に、記憶デバイス６９０（１）〜（Ｎ）及び知的記憶アレイ６９５は、概して、データ及び／又は他のコンピュータで読み取り可能な命令を記憶することが可能な任意のタイプ又は形態の記憶デバイス又は媒体を表す。
【００６１】
ある実施形態において、及び図５の例示的なコンピューティングシステム５１０を参照して、図５の通信インターフェース５２２等の通信インターフェースは、各クライアントシステム６１０、６２０、及び６３０とネットワーク６５０との間の接続性を提供するために使用されてもよい。クライアントシステム６１０、６２０、及び６３０は、例えば、ウェブブラウザ又はその他のクライアントソフトウェアを使用して、サーバ６４０又は６４５上の情報にアクセスすることが可能であり得る。そのようなソフトウェアは、クライアントシステム６１０、６２０、及び６３０が、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、又は知的記憶アレイ６９５によりホストされるデータにアクセスすることを可能にし得る。図６は、データを交換するためのネットワーク（インターネット等）の使用を描写するが、本明細書に説明及び／又は例解される実施形態は、インターネット又はいかなる特定のネットワークに基づく環境にも限定されない。
【００６２】
少なくとも１つの実施形態において、本明細書に開示される例示的な実施形態のうちの１つ以上の全て又は一部分は、コンピュータプログラムとしてコード化され、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、知的記憶アレイ６９５、又はそれらの任意の組み合わせ上にロードされ、それによって実行され得る。本明細書に開示される少なくとも１つの例示的な実施形態の全て又は一部分は、コンピュータプログラムとしてコード化され、サーバ６４０に記憶され、サーバ６４５により作動され、ネットワーク６５０を通じてクライアントシステム６１０、６２０、及び６３０に分散され得る。
【００６３】
上で詳述されるように、コンピューティングシステム５１０及び／又はネットワークアーキテクチャ６００の１つ以上の構成要素は、単独で、若しくは他の要素と組み合わせて、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用するための例示的な方法の１つ以上の工程を実施し得る、及び／又は実施するための手段であり得る。
【００６４】
先述の開示は、特定のブロック図、流れ図、及び実施例を使用して多様な実施形態を説明するが、本明細書に説明及び／又は例解される各ブロック図の構成要素、流れ図の工程、動作、及び／又は構成要素は、個別に及び／又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア（又はそれらの任意の組み合わせ）構成を使用して、実装されてもよい。更に、他の構成要素内に含まれる構成要素のいずれの開示も、多くの他のアーキテクチャが同じ機能性を達成するために実装することができるため、事実上例示的なものと見なされるべきである。
【００６５】
一部の実施例において、図１の例示的なシステム１００の全ての又は一部分は、クラウド−コンピューティング又はネットワークに基づく環境の部分を表し得る。クラウド−コンピューティング環境は、インターネットを介して多様なサービス及びアプリケーションを提供することができる。これらのクラウドに基づくサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤等）は、ウェブブラウザ又は他のリモートインターフェースを通じてアクセス可能であり得る。本明細書に説明される多様な機能は、リモートデスクトップ環境又は任意の他のクラウドに基づくコンピューティング環境を通じて提供され得る。
【００６６】
本明細書に説明及び／又は例解されるプロセスパラメータ及び工程の順序は、ほんの一例として提供され、所望に応じて変更することができる。例えば、本明細書に例解及び／又は説明される工程が特定の順序で示される又は論議されるが、これらの工程は、必ずしも例解又は論議される順序で実施される必要はない。本明細書に説明及び／又は例解される多様な例示的な方法はまた、本明細書に説明及び／又は例解される工程のうちの１つ以上を省略してもよく、又は開示されるものに加えて追加の工程を含んでもよい。
【００６７】
種々の実施形態が、完全に機能的なコンピューティングシステムの文脈において、本明細書に説明及び／又は例解されているが、これらの例示的な実施形態のうちの１つ以上は、実際に分散を行うために使用されるコンピュータで読み取り可能な記憶媒体の特定のタイプにかかわらず、多様な形態のプログラム製品として分散され得る。本明細書に開示される実施形態はまた、あるタスクを実施するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、スクリプト、バッチ、又はコンピュータで読み取り可能な記憶媒体上又はコンピューティングシステムに記憶され得る、他の実行可能なファイルを含んでもよい。一部の実施例において、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態のうちの１つ以上を実施するように、コンピューティングシステムを構成し得る。
【００６８】
更に、本明細書に説明されるモジュールのうちの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を１つの形態から別の形態へ変換し得る。例えば、本明細書に言及されるモジュールのうちの１つ以上は、コンピューティングデバイスを、非反復的マルウェアスキャンを実施するためにプロパティテーブルを使用することができるデバイスに変換し得る。
【００６９】
先行の説明は、他の当業者が、本明細書に開示される例示的な実施形態の多様な態様を最大限に利用することを可能にするように提供されている。この例示的な説明は、包括的であること、又は開示されるいずれの正確な形態に限定されることも意図するものではない。多くの修正及び変形が、本開示の趣旨及び範囲から逸脱することなく可能である。本明細書に開示される実施形態は、あらゆる点で具体例であり、制限するものではないと見なされるべきである。本開示の範囲を決定する際、添付の特許請求の範囲及びその均等物への参照がなされるべきである。
【００７０】
特に記されない限り、本明細書及び特許請求の範囲に使用される用語「ａ」又は「ａｎ」は、「少なくとも１つの」を意味すると解釈される。更に、使用の容易さのために、本明細書及び特許請求の範囲に使用される際、単語「含む」及び「有する」は、単語「備える」と同義であり、かつ同じ意味を有する。
【図１】
0005978383.tif 000002
【図２】
0005978383.tif 000003
【図３】
0005978383.tif 000004
【図４】
0005978383.tif 000005
【図５】
0005978383.tif 000006
【図６】
0005978383.tif 000007