(57)【特許請求の範囲】
【請求項１】
コンピュータにおいて潜在的な不要ソフトウェアアプリケーションを識別するための方法であって、前記コンピュータは、既存の自動開始拡張ポイント（ＡＳＥＰ）に関連付けられた情報を含むＡＳＥＰリストを有し、前記方法は、
前記コンピュータに第１のセットのソフトウェアアプリケーションがインストールされると、前記第１のセットのソフトウェアアプリケーションのインストールの前後における前記コンピュータの状態のトレースと前記コンピュータのファイルシステムにおけるファイルのトレースとに基づいて、前記第１のセットのソフトウェアアプリケーションの複数のＡＳＥＰを識別し、監視することであって、前記複数のＡＳＥＰは、前記第１のセットのソフトウェアアプリケーションの複数の自動開始実行可能ファイルの実行に応答して第２のセットのソフトウェアアプリケーションの複数の実行可能ファイルの自動実行をフックする構成ポイントであることと、
前記第１のセットのソフトウェアアプリケーションの前記複数の自動開始実行可能ファイルと前記第２のセットのソフトウェアアプリケーションの前記複数の実行可能ファイルとを含む複数のユーザ選択可能な項目のリストと、前記複数のユーザ選択可能な項目のうちの少なくとも１つの項目に対応する実行可能ファイルを無効にするためのユーザ選択可能なオプションとを含む、ユーザインターフェースを提供することと、
前記ユーザ選択可能なオプションが選択されると、前記複数のＡＳＥＰと前記少なくとも１つの項目に対応する実行可能ファイルとの間のフックを除去することと、 前記複数のＡＳＥＰと前記ＡＳＥＰリストとを比較することによって、前記第１のセットのソフトウェアアプリケーションの前記複数のＡＳＥＰによって自動実行がフックされる前記第２のセットのソフトウェアアプリケーションに、不要ソフトウェアアプリケーションが含まれるかどうかを検出することと
を備えることを特徴とする方法。
【請求項２】
前記第２のセットのソフトウェアアプリケーションにおいて前記不要なソフトウェアアプリケーションが検出されたとき、前記複数のＡＳＥＰと前記不要なソフトウェアアプリケーションの実行可能ファイルとの間のフックを除去することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記複数のＡＳＥＰを識別した後、前記複数のＡＳＥＰをユーザに通知することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記複数のＡＳＥＰは、１つまたは複数のバンドルとして構成されることを特徴とする請求項１に記載の方法。
【請求項５】
前記コンピュータは、前記第１のセットのソフトウェアアプリケーションをインストールするときにウェブブラウザがアクセスしたウェブページのユニフォームリソースロケータ（ＵＲＬ）情報と、前記ウェブページにアクセスした前記ウェブブラウザのインスタンスのプロセス識別情報とを記録したログを有し、前記方法は、前記第２のセットのソフトウェアアプリケーションにおいて前記不要なソフトウェアアプリケーションが検出されると、
前記ウェブブラウザのインスタンスについての前記ＵＲＬ情報を前記ログから取り出すこと、
前記ウェブブラウザのインスタンスによって生成された１つまたは複数のプロセスについての前記プロセス識別情報を前記ログから取り出すこと、および、
前記取り出されたプロセス識別情報に従って、前記取り出されたＵＲＬ情報を、前記ウェブブラウザのインスタンスによって生成された少なくとも１つのプロセスと関連付けることをさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記ユーザインターフェースは、前記複数のユーザ選択可能な項目のリスト内の前記複数の自動開始実行可能ファイルのいずれか１つの自動開始実行可能ファイルが、前記第２のセットのソフトウェアアプリケーションの前記複数の実行可能ファイルのバンドルの一部としてインストールされたことを示す情報をさらに表示することを特徴とする請求項１に記載の方法。
【請求項７】
前記ユーザインターフェースの前記ユーザ選択可能なオプションは、前記複数のユーザ選択可能な項目のうち前記少なくとも１つの項目に対応する前記実行可能ファイルを含むバンドルを無効にすることを特徴とする請求項１に記載の方法。
【請求項８】
前記ユーザインターフェースは、以前に記録されたチェックポイントまで前記コンピュータのシステムを復元するためのユーザ選択可能なオプションをさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータに、潜在的な不要ソフトウェアアプリケーションを識別するための処理を実行させるコンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体であって、前記コンピュータは、既存の自動開始拡張ポイント（ＡＳＥＰ）に関連付けられた情報を含むＡＳＥＰリストを有し、前記コンピュータ実行可能命令は、前記コンピュータに、
前記コンピュータに第１のセットのソフトウェアアプリケーションがインストールされると、前記第１のセットのソフトウェアアプリケーションのインストールの前後における前記コンピュータの状態のトレースと前記コンピュータのファイルシステムにおけるファイルのトレースとに基づいて、前記第１のセットのソフトウェアアプリケーションの複数のＡＳＥＰを識別し、監視するステップであって、前記複数のＡＳＥＰは、前記第１のセットのソフトウェアアプリケーションの複数の自動開始実行可能ファイルの実行に応答して第２のセットのソフトウェアアプリケーションの複数の実行可能ファイルの自動実行をフックする構成ポイントである、ステップと、
前記第１のセットのソフトウェアアプリケーションの前記複数の自動開始実行可能ファイルと前記第２のセットのソフトウェアアプリケーションの前記複数の実行可能ファイルとを含む複数のユーザ選択可能な項目のリストと、前記複数のユーザ選択可能な項目のうちの少なくとも１つの項目に対応する実行可能ファイルを無効にするためのユーザ選択可能なオプションとを含む、ユーザインターフェースを提供するステップと、
前記ユーザ選択可能なオプションが選択されると、前記複数のＡＳＥＰと前記少なくとも１つの項目に対応する実行可能ファイルとの間のフックを除去するステップと、 前記複数のＡＳＥＰと前記ＡＳＥＰリストとを比較することによって、前記第１のセットのソフトウェアアプリケーションの前記複数のＡＳＥＰによって自動実行がフックされる前記第２のセットのソフトウェアアプリケーションに、不要ソフトウェアアプリケーションが含まれるかどうかを検出するステップと
を含む処理を実行させることを特徴とするコンピュータ可読記憶媒体。
【請求項１０】
前記処理は、前記第２のセットのソフトウェアアプリケーションにおいて前記不要なソフトウェアアプリケーションが検出されたとき、前記複数のＡＳＥＰと前記不要なソフトウェアアプリケーションの実行ファイルとの間のフックを取り除くステップをさらに備えることを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記処理は、前記複数のＡＳＥＰを識別した後、前記複数のＡＳＥＰをユーザに通知するステップをさらに含むことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記複数のＡＳＥＰは、１つまたは複数のバンドルとして構成されることを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記コンピュータは、前記第１のセットのソフトウェアアプリケーションをインストールするときにウェブブラウザがアクセスしたウェブページのユニフォームリソースロケータ（ＵＲＬ）情報と、前記ウェブページにアクセスした前記ウェブブラウザのインスタンスのプロセス識別情報とを記録したログを有し、前記処理は、前記第２のセットのソフトウェアアプリケーションにおいて前記不要なソフトウェアアプリケーションが検出されると、
前記ウェブブラウザのインスタンスについての前記ＵＲＬ情報を前記ログから取り出すステップと、
前記ウェブブラウザのインスタンスによって生成された１つまたは複数のプロセスについての前記プロセス識別情報を前記ログから取り出すステップと、
前記取り出されたプロセス識別情報に従って、前記取り出されたＵＲＬ情報を、前記ウェブブラウザのインスタンスによって生成された少なくとも１つのプロセスと関連付けるステップとをさらに含むことを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記ユーザインターフェースは、前記複数のユーザ選択可能な項目のリスト内の前記複数の自動開始実行可能ファイルのいずれか１つの自動開始実行可能ファイルが、前記第２のセットのソフトウェアアプリケーションの前記複数の実行可能ファイルのバンドルの一部としてインストールされたことを示す情報をさらに表示することを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記ユーザインターフェースの前記ユーザ選択可能なオプションは、前記複数のユーザ選択可能な項目のうち前記少なくとも１つの項目に対応する前記実行可能ファイルを含むバンドルを無効にすることを特徴とする請求項９に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムおよびオペレーティングシステムの分野に関し、より詳細には、コンピュータシステム上の不要なソフトウェアの識別に関する。
【背景技術】
【０００２】
スパイウェアは、コンピュータのユーザの振舞いを、マーケティングまたは不法な目的のために追跡し報告するソフトウェアプログラムの種類の一般名称である。より一般的には、スパイウェアは、ユーザに分かることなく、かつ／またはユーザの同意を得ずに、ユーザのマシンにダウンロードされインストールされるタイプのソフトウェアである。このような不要なソフトウェアは、例えば、ウィンドウをポップアップさせる、ウェブブラウザの開始ページを変更する、ページを検索する、また、ブックマークの設定を変更することにより、ユーザに盛んに広告を押し付ける。スパイウェアは、しばしば、密かにインターネットを介してサーバと通信して、収集したユーザ情報を報告し、また、ユーザのマシンに追加のソフトウェアをインストールするためにコマンドを受け取ることもある。通常、スパイウェアに感染したマシンのユーザは、ブート時間の増大、動作速度の低下、および、アプリケーションの頻繁なクラッシュなど、信頼性および性能の大幅な低下を経験する。クラッシュレポート（ｃｒａｓｈ  ｒｅｐｏｒｔ）全体の５０パーセントについては、スパイウェアプログラムが原因となっていることが、信頼性データにより示されている。さらに、スパイウェアプログラムに対する脆弱性は、セキュリティの問題を引き起こすことが分かっている。１００万台を超えるマシンを調査した最近の研究では、憂慮すべきスパイウェアの感染率が明らかにされており、（ウェブブラウザのクッキーを含まずに）平均４から５つのスパイウェアプログラムが各コンピュータで実行されている。
【０００３】
既存のスパイウェアに対する解決策は、主として、ウィルス対策ソフトウェアに通常使用されるようなシグネチャ手法に基づいており、このシグネチャ手法では、各スパイウェアのインストレーションを、そのファイルおよびレジストリのシグネチャを決定するために調査し、それらのシグネチャは、後でスキャナソフトウェアによってスパイウェアのインスタンスを検出するために使用される。この手法には、いくつかの問題がある。
【０００４】
第１に、多数のスパイウェアプログラムは、スパイウェアの企業は、一般的なフリーウェアのスポンサとなって、それをスパイウェアのインストレーションのためのベースとして利用しているので、「合法」とみなせる場合がある。というのは、ユーザはフリーウェアをインストールするときソフトウェア使用許諾契約（ＥＵＬＡ）に承諾しているためであり、そのフリーウェアにバンドルされたスパイウェアを削除することはこの契約に違反する可能性がある。多くの場合、フリーウェアは、バンドルされているスパイウェアが削除された場合に、フリーウェア自体の実行を拒否することにより、ユーザシステム上でスパイウェアが稼動するのを保証する。
【０００５】
第２に、この手法の有効性は、既知のスパイウェアに対するシグネチャデータベースの完全性に依存している。この手法は、新しいスパイウェアを手作業で突き止めカタログに入れる難しさを越えて、さらに複雑なものである。というのは、一般に、スパイウェアは、通常のウィルスよりかなり強力な本格的なアプリケーションであり、検出および除去されるのを回避するために積極的な対抗策を取るためである。スパイウェアを作成する企業は、このアプリケーションの普及をベースにして収益を得るので、そのスパイウェアの検出および除去を難しいものにするための技術を作り出していく経済的動機を有する。このような企業は、洗練され変異する振舞いの開発に投資する必要性および資源を有している。
【０００６】
第３に、いくつかのスパイウェアのインストレーションでは、スパイウェア以外のアプリケーションが使用する通常のライブラリファイルを含むことができる。スパイウェアのシグネチャからこれらのファイル取り除くように措置が取られない場合、これらのシグネチャを使用しているスキャナにより、スパイウェアではないアプリケーションが中断する恐れがある。
【０００７】
最後に、一般的なスパイウェア除去プログラムは、通常、要求に応じまたは定期的に呼び出されるが、これはスパイウェアがインストールされてからかなり後になる。このため、スパイウェアが、個人情報を収集することが可能になり、また、それがいつインストールされどこから来たのかを決定することを難しくすることが可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
スパイウェアまたは他の不要なソフトウェアがインストールされたときに、それを検出し、かつ／または、スパイウェアの除去を可能にする、監視サービスを提供する。
【課題を解決するための手段】
【０００９】
スパイウェアまたは他の不要なソフトウェアがインストールされた時点で、スパイウェアまたは他の不要なソフトウェアの検出および／または除去を行う監視システムが提供される。このサービスは、スパイウェアのインストレーションを検出するために、「自動開始拡張ポイント（Ａｕｔｏ−Ｓｔａｒｔ  Ｅｘｔｅｎｓｉｂｉｌｉｔｙ  Ｐｏｉｎｔｓ）（「ＡＳＥＰ」）」を監視する。ＡＳＥＰは、ユーザの明示的な呼出しなしにプログラムの自動的開始を可能にするために「フック（ｈｏｏｋｅｄ）」することができる構成ポイントのことを指す。スパイウェアプログラムの圧倒的多数が、リブートが行われ通常使用される多くのアプリケーションが起動する際に、自動的に開始する方法でシステムに感染するため、このようなサービスは著しく有効である。したがって、この監視サービスは、スパイウェアのインストレーションの事後の完全な除去をもたらすことができ、頻繁なシグネチャベースのクリーニングを必要としない。シグネチャベースの手法とは異なり、この監視サービスは、既知のシグネチャをまだ有していない新規または未知のスパイウェアを検出する。
【００１０】
ある態様では、潜在的な不要ソフトウェアを識別するための方法が提供され、この方法は、ＡＳＥＰフックに関連するアクティビティについて複数の自動開始拡張ポイント（ＡＳＥＰ）を監視すること、および、ＡＳＥＰフックに関連するアクティビティを介して不要なソフトウェアアプリケーションを検出することを含む。
【００１１】
他の態様では、コンピューティングデバイスのユーザが、不要なソフトウェアを除去するのを支援するためのユーザインターフェースが提供され、このユーザインターフェースは、ユーザのコンピューティングデバイスにインストールされた自動開始実行可能ファイルが含まれる、ユーザに選択可能な項目のリストを備え、このリスト内の実行可能ファイルが、共通のインストレーションから派生した実行可能ファイルのバンドルの一部としてインストールされた場合、このリストは、そのバンドルに関する情報を表示する。
【００１２】
さらに他の態様では、コンピューティングデバイスのソフトウェアにおける自動開始拡張ポイント（ＡＳＥＰ）を発見するための方法が提供され、この方法は、自動開始トレースを実行すること、および、自動開始トレースにおける少なくとも１つの未知のＡＳＥＰを検出することを含む。
【００１３】
さらに別の態様では、潜在的に不要のソフトウェアの識別を容易にするためのコンピュータ実行可能命令を含むコンピュータ可読媒体が提供され、このコンピュータ実行可能命令は、ＡＳＥＰフックに関連するアクティビティについて複数の自動開始拡張ポイント（ＡＳＥＰ）を監視するステップと、ＡＳＥＰフックに関連するアクティビティを介して不要なソフトウェアアプリケーションを検出するステップとを実行する。
【００１４】
さらに別の態様では、コンピューティングデバイスのソフトウェア内の自動開始拡張ポイント（ＡＳＥＰ）の発見を容易にするためのコンピュータ実行可能命令を含むコンピュータ可読媒体が提供され、このコンピュータ実行可能命令は、第１のチェックポイントの作成時に、そのコンピューティングデバイス上に存在することが知られるＡＳＥＰフックのリストを第１のチェックポイントで格納するステップと、第２のチェックポイントの作成時に、そのコンピューティングデバイス上に存在することが知られるＡＳＥＰフックのリストを第２のチェックポイントで格納するステップと、第１のチェックポイントにはなく第２のチェックポイントにはある少なくとも１つのＡＳＥＰを検出するステップとを実行する。
【００１５】
添付の特許請求の範囲で本発明の特徴を詳細に説明するが、本発明およびその利点は、添付の図面と併せて以下の詳細な説明を読めば最も良く理解することができる。
【発明を実施するための最良の形態】
【００１６】
ここでは、好ましい実施形態に関して、自動開始拡張ポイント（ａｕｔｏ−ｓｔａｒｔ  ｅｘｔｅｎｓｉｂｉｌｉｔｙ）を介してスパイウェアを管理するための方法およびシステムを説明するが、本発明の方法およびシステムは、自動開始拡張ポイントを介してスパイウェアを管理することに限定されない。さらに、本明細書に記載の方法およびシステムは、単に例示的なものであり、本発明の精神および範囲から逸脱することなく変形がなされうることは当業者には容易に理解されよう。
【００１７】
本発明は、添付の図面と併せて読むべき以下の詳細な説明により、より完全に理解されよう。本説明では、本発明の様々な実施形態の同様の要素については同じ番号で参照する。本発明は、適切なコンピューティング環境で実装されるものとして説明される。必須ではないが、パーソナルコンピュータによって実行されるプロシージャなどのコンピュータ実行可能命令の一般的コンテキストにおいて本発明を説明する。一般に、プロシージャには、プログラムモジュール、ルーチン、関数、プログラムオブジェクト、コンポーネント、およびデータ構造体などが含まれ、プロシージャは、特定のタスクを実行し、または特定の抽象データ型を実装する。さらに、本発明は、携帯端末、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、およびメインフレームコンピュータなどを含めた、他のコンピュータシステム構成によって実施することができることは、当業者には理解されよう。本発明は、通信ネットワークを介して接続されたリモート処理装置によってタスクが実行される、分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方のメモリ記憶装置に配置することができる。コンピュータシステムという用語は、分散コンピューティング環境に見られるいくつかのコンピュータのシステムを指すのに使用することもできる。
【００１８】
図１は、本発明を実装することができる適切なコンピューティングシステム環境１００の例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関していかなる限定を示唆するものではない。コンピューティング環境１００は、例示的動作環境１００に示す任意のコンポーネントまたはその組合せに関係するどのような依存関係または要件も有するものとして解釈されるべきではない。本発明の一実施形態は、例示的動作環境１００に示す各コンポーネントを含むが、本発明のより典型的な他の実施形態では、不必要なコンポーネント、例えば、ネットワーク通信に必要な入出力装置以外の入出力装置が除外される。
【００１９】
図１を参照すると、本発明を実装するための例示的システムは、コンピュータ１１０の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントには、これらに限定されないが、処理装置１２０、システムメモリ１３０、および、システムメモリを含めて様々なシステムコンポーネントを処理装置１２０に結合するシステムバス１２１が含まれ得る。システムバス１２１は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（ビデオ電子規格協会）ローカルバス、および、メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（周辺コンポーネント相互接続）バスが含まれる。
【００２０】
コンピュータ１１０は、多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。コンピュータ可読媒体には、限定ではなく例として、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方の媒体、および、リムーバブルと非リムーバブルの両方の媒体が含まれる。コンピュータ記憶媒体には、これだけに限定しないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号中に、コンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータを具現化し、また任意の情報伝達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するようにセットまたは変更された１つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
【００２１】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（リードオンリメモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２などの揮発性および／または不揮発性のメモリの形態で含む。始動時などにコンピュータ１１０内の要素間で情報を転送する助けとなる基本的ルーチンを含むＢＩＯＳ（基本入出力システム）１３３は、通常、ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理装置１２０により、即座にアクセス可能および／または現在処理中である、データおよび／またはプログラムモジュールを含む。図１は、限定ではなく例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２２】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、および揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図１では、非リムーバブルで不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４１、リムーバブルで不揮発性の磁気ディスク１５２から読み取りまたはそれに書き込む磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体などリムーバブルで不揮発性の光ディスク１５６から読み取りまたはそれに書き込みを行う光ディスクドライブ１５５を示している。例示的動作環境において使用することができる他のリムーバブル／非リムーバブルで揮発性／不揮発性のコンピュータ記憶媒体には、これだけに限定しないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、および半導体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの非リムーバブルメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００２３】
前述の図１に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ１１０のための、コンピュータ可読命令、データ構造体、プログラムモジュール、および他のデータの記憶を提供する。たとえば、図１では、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じものにも異なるものにもすることができることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、これらが少なくとも異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、タブレットまたは電子デジタイザ１６４、マイク１６３、キーボード１６２、ならびにマウス、トラックボール、またはタッチパッドとして通常は示されるポインティングデバイス１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースおよびバス構造によって接続してもよい。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１は、タッチスクリーンパネルなどと一体化することもできる。タブレット型のパーソナルコンピュータなどでは、モニタおよび／またはタッチスクリーンパネルは、コンピューティングデバイス１１０を内蔵するハウジングに物理的に結合することができることに留意されたい。さらに、コンピューティングデバイス１１０などのコンピュータは、スピーカ１９７およびプリンタ１９６など他の出力周辺装置も含むことができ、これらは、出力周辺装置インターフェース１９５を介して接続することができる。
【００２４】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図１にはメモリ記憶装置１８１のみが示されているが、通常、コンピュータ１１０に関係する上述の要素の多くまたは全部を含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１、およびＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。例えば、本発明では、コンピュータ１１０は、発信元マシン（ｓｏｕｒｃｅ  ｍａｃｈｉｎｅ）を含み、データは発信元マシンから移行され、リモートコンピュータ１８０は、その送信先マシンを含むことができる。ただし、発信元と送信先のマシンを、ネットワークまたは他の任意の手段によって接続する必要はなく、代わりに、発信元プラットフォームによって書き込み、１つまたは複数の送信先プラットフォームによって読み取ることができる任意の媒体を介してデータを移行することもできることに留意されたい。
【００２５】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して接続を確立する他の手段を含む。モデム１７２は、内蔵モデムでも外部のモデムでもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関連して示したプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図１に、限定ではなく例として、メモリ装置１８１に常駐するリモートアプリケーションプログラム１８５が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で接続リンクを確立する他の手段を使用することもできることが理解されよう。
【００２６】
典型的なネットワーク環境では、コンピュータ１１０は、リモートコンピュータ１８０からインターネットなどの通信ネットワークを介して送信される、データファイルおよび実行可能ファイルを受信する。受信または「ダウンロード」は、コンピュータ１１０上で現在実行されているプログラムによって自動的に行われるか、または、例えばユーザが特定のＵＲＬ（ユニフォームリソースロケータ）をウェブブラウザに指示することにより手動で行われる。ユーザに知られずにコンピュータ１１０にダウンロードされたいくつかの実行可能ファイルが、コンピュータ１１０に関するユーザの振舞いを監視する場合がある。コンピュータ１１０にダウンロードされた他の実行可能ファイルが、やはりユーザに知られずに、このような監視プログラムのインストールおよび／または実行を引き起こす場合がある。このような監視プログラムは、一般に「スパイウェア」と呼ばれる。
【００２７】
本発明の実施形態では、スパイウェアのインストレーションを検出するためにＡＳＥＰの監視を行う。一般に、「自動開始」ソフトウェアプログラムは、ユーザの介入なしに自動的に実行が開始される（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるＷｉｎｄｏｗｓ（登録商標）エクスプローラのプログラム）か、もしくは、ユーザによって極めて一般的に実行される（例えば、インターネットウェブブラウザのプログラム）プログラムである。ＡＳＥＰについては２つの見方をすることができ、つまり、既存の自動開始ソフトウェアアプリケーションに「フック」（すなわち拡張）するものとして、あるいは、オペレーティングシステムの自動開始拡張機能（ａｕｔｏ−ｓｔａｒｔ  ｅｘｔｅｎｓｉｏｎｓ）として登録されたスタンドアロンのソフトウェアアプリケーション、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるＮＴサービス、またはＵＮＩＸ（登録商標）ＯＳにおけるデーモンなどとして捉えることができる。
【００２８】
図２では、本発明の実施形態による、コンピュータオペレーティングシステムを複数組のゲートとして示している。外側ゲート２０２は、プログラムファイルがインターネット２０４からユーザのマシンに入る入口点である。ユーザ同意２０６は、（例えばフリーウェアプログラムを）インストールすることに対する明示的な同意だけでなく、スパイウェアプログラムがフリーウェアにバンドルされているとき、そのスパイウェアプログラムのインストールを許可する暗黙的な同意を含む。不適切なセキュリティ設定２０８は、インターネットゾーンセキュリティに関する「低い」ユーザ設定、信頼済みサイトのリストにおける不適切なエントリ、および、信頼された発行元のリストの不適切なエントリを含み、そのため、「ドライブバイ（ｄｒｉｖｅ−ｂｙ）」ダウンロードが許容されることになる（すなわち、明示的同意なしに、コントロールがダウンロードされユーザのマシンにインストールされる）。中間ゲート２１０は、プログラムが、ユーザの視点から実質的に「システムの部分」になるためにシステムにフックすることが可能なＡＳＥＰである。中間ゲート２１０により、プログラムがリブートを乗り切り存続することが可能になり、したがって、そのプログラムがユーザのマシン上で常に実行されている機会が最大化される。周知の一般的なＡＳＥＰのタイプには、ブラウザヘルパーオブジェクト（Ｂｒｏｗｓｅｒ  Ｈｅｌｐｅｒ  Ｏｂｊｅｃｔ）（ＢＨＯ）２１２、およびレイヤードサービスプロバイダ（Ｌａｙｅｒｅｄ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）（ＬＳＰ）２１４が含まれる。内部ゲート２１６は、プログラムファイルを、アクティブな実行中のプログラムインスタンスにインスタンス化するのを制御する。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムでは、内部ゲートは、ＣｒｅａｔｅＰｒｏｃｅｓｓ２１８、ＬｏａｄＬｉｂｒａｒｙ２２０、および他のプログラム実行メカニズムを含み、有害の可能性がある任意のプログラムが「既知の良好な（ｋｎｏｗｎ  ｇｏｏｄ）」リストに載っていない場合、それを遮断するために使用される。本発明の実施形態で使用されるＡＳＥＰ監視サービスは、中間ゲート２１０の識別および監視を行い、すべてのＡＳＥＰフックを明らかにする。ＡＳＥＰは、スパイウェアの効率的な管理を可能にするユーザフレンドリな方法で明示される。
【００２９】
本発明の実施形態では、「Ｇａｔｅｋｅｅｐｅｒ」と呼ばれるソフトウェアツールが使用され、スパイウェアおよび潜在的なスパイウェアをシステムから識別し除去する助けとなる。このツールが動作を行うコンポーネントアーキテクチャを図３に示す。Ｇａｔｅｋｅｅｐｅｒソフトウェアエンジン３０２は、既知および未知のＡＳＥＰを介してスパイウェアおよび潜在的スパイウェアを検出するためのいくつかの機能を実行する。ユーザインターフェース３０４は、ユーザがＧａｔｅｋｅｅｐｅｒエンジン３０２と対話するのを可能にし、好ましくは、ＡＰＩ（アプリケーションプログラミングインターフェース）３０６に対する中継の呼出しによって行われる。ユーザインターフェース３０４は、スタンドアロンのアプリケーション、ウェブベースのコントロール、コマンドラインインターフェース、ならびに、システムコントロールパネルなどとすることができる。ＡＰＩ３０６は、さらに、他のアプリケーションがＧａｔｅｋｅｅｐｅｒエンジン３０２の機能にアクセスすることを可能にする。Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、オペレーティングシステム３０８から情報を収集し、また、ファイルシステム３１０を介してアクセスしデータファイルから情報を収集する。Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、いくつかの公開ＯＳ  ＡＰＩ３１２を介して、または、非公開ＯＳレジスタ３１４に直接アクセスすることにより、オペレーティングシステム３０８と交信する。Ｇａｔｅｋｅｅｐｅｒエンジン３０２とオペレーティングシステム３０８の間の対話は、さらに、Ｓｔｒｉｄｅｒ／ＡｓｋＳｔｒｉｄｅｒエンジン３１６などの他のアプリケーションを介して間接的なものとすることができる。Ｓｔｒｉｄｅｒ／Ａｓｋｓｔｒｉｄｅｒエンジン３１６は、いくつかのトラブルシューティングツールの基盤となるが、これに関して、より完全にはWangらによる"STRIDER A Black-box State-based Approach to Change and Configuration Management and Support", Proceedings of Usenix Large Installation Systems Administration Conference, pp.159-171, October 2003や、"AskStrider What Has Changed on My Machine Lately?", Microsoft Research Technical Report MSR-TR-2004-03, January 2004に記載されており、これらの文献のどの部分も除外することなくその教示のすべてについて、参照により本明細書に援用する。
【００３０】
より詳細には、Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、ＡＳＥＰのアクティビティをフックするためにオペレーティングシステム３０８を監視する。Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、リスト３１８にある既知のＡＳＥＰを監視する。Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのプログラムの追加／削除（ＡＲＰ）サービス３２０など、登録されたソフトウェアアプリケーションのインベントリと連携して動作する。Ｇａｔｅｋｅｅｐｅｒエンジン３０２はまた、災害からリカバリする場合またはその必要があるときにシステム状態を元に戻すために使用することができる、ファイル／構成チェックポイントアプリケーションと連携して動作する。チェックポイントアプリケーションの一例は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのシステム復元サービス３２２である。Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、ＡＳＥＰと、識別されたスパイウェアとの間のフックを除去することにより、コンピュータから識別されたスパイウェアを、ユーザが選択して無効にすることを可能にし、これにより、スパイウェアの自動的な実行が防止される。さらに、Ｇａｔｅｋｅｅｐｅｒエンジン３０２は、既知のスパイウェアのシグネチャと公開レジスタ３２４内のシグネチャを比較することにより、スパイウェアを識別することができる。さらにＧａｔｅｋｅｅｐｅｒエンジン３０２は、レジストリのスナップショットによってマシンの現在の状態と前の状態を比較し、ファイルシステムの差分についてのファイル変更ログ３２５を使用することにより、スパイウェアを識別することができる。このような状態比較およびファイル変更ログを、自動開始トレースログ３２６と交差させる（ｉｎｔｅｒｓｅｃｔ）ことによってスパイウェアプログラムが識別される。
【００３１】
ウェブブラウザアプリケーション３２７によりインターネットを閲覧する間に、多くのスパイウェアプログラムがインストールされるため、Ｇａｔｅｋｅｅｐｅｒブラウザヘルパーオブジェクト（ＢＨＯ）３２８がウェブブラウザ３２７のアクティビティを監視するために提供される。ＢＨＯ３２８は、その結果をＵＲＬ（ユニフォームリソースロケータ）トレースログ３３０に記録し、このログには、ブラウザ３２７により訪問したウェブページのＵＲＬおよびタイムスタンプが、ブラウザ３２７のインスタンス化についてのプロセス識別番号と一緒に記録される。イベントログ３３２もまた、インストールプロセスについてのタイムスタンプおよびプロセス識別番号を含めたソフトウェアのインストレーションの詳細を記録するために維持される。
【００３２】
図４は、本発明の実施形態による、ＧａｔｅｋｅｅｐｅｒなどのＡＳＥＰ監視サービスによって実施されるスパイウェア管理の方法を「ライフサイクル」として示す。ステップ４０２では、スパイウェアに感染したマシンが与えられると、既存スパイウェアを除去するために、既知の不正シグネチャのデータベース、および、シグネチャに基づくスキャン／除去ツールが使用される。例示的スキャン／除去ツールは、ＬａｖａＳｏｆｔによるＡｄ−Ａｗａｒｅ、およびＳｐｙｂｏｔを含む。ステップ４０４では、望ましくない可能性があるＡＳＥＰのフック動作を記録し、それについて警告を出し、その動作を遮断することによって、すべてのＡＳＥＰを継続的に監視する。シグネチャデータベース４０６は、好ましくは、ユーザに処理可能情報を提示することを可能にするための、既知の良好なＡＳＥＰフックおよび既知の不正なＡＳＥＰフックのユーザフレンドリな記述を含む。
【００３３】
ユーザが、（例えばフリーウェアのソフトウェア使用許諾契約に明記されている）バンドルされているスパイウェアプログラムのリスクを判断した後、フリーウェアアプリケーションをインストールすると決定した場合、ステップ４０８のバンドル追跡により、フリーウェアによってインストールされたすべてのコンポーネントが捕捉され、それらは１つのグループとして表示される。ユーザがグループを単位として管理することを可能にするために、このようなグループは、ユーザフレンドリな名前と共に表示されることが好ましい。ステップ４１０では、バンドルがインストールされてからのシステムの性能および信頼性が監視され、どの問題も、それを担うコンポーネントと関連付けられる。これらの「信用レポート」により、フリーウェアの機能の「値札」がユーザに提供され、ユーザが、フリーウェアについて費用対価値の判断をすることが可能になる。
【００３４】
スパイウェアの管理方法の有効性は、ＡＳＥＰリストの完全性に関係する。ステップ４１２で、監視サービスは、ファイルおよびレジストリのトレース、または他の持続的状態のトレースにおける間接的パターンを解析することにより、オペレーティングシステムのＡＳＥＰ、および頻繁に実行される一般的なソフトウェアのＡＳＥＰを発見する。あるいは、ステップ４１４で、監視サービスは、既知の感染済みマシンの揮発的な状態をスキャンして、スパイウェアに関連する実行可能ファイルを識別し、次いで、これを、マシン構成の逆引き参照スキャンの索引として使用して、新しいＡＳＥＰを識別する。ＡＳＥＰリストは、ユーザのコンピューティングデバイスにデータベースとして格納され、それによりＧａｔｅｋｅｅｐｅｒなどのツールによる参照が可能になることが好ましい。あるいは、ＡＳＥＰリストは、リモートのコンピューティングデバイスに安全に格納され、ローカルでスキャンするときに、セキュア接続を介してアクセスされる。一実施形態では、ユーザのコンピューティングデバイス上のＡＳＥＰリストは、例えば、インターネットなどのネットワークを介して、信頼されるＡＳＥＰデータベース保守ソースから更新情報をダウンロードすることによって、定期的に更新される。あるいは、ユーザのコンピューティングデバイスは、潜在的に有害なプログラムによってフックされ得る未知のＡＳＥＰを発見したとき、そのデータベースにＡＳＥＰを追加する。いくつかの実施形態では、ユーザのコンピューティングデバイスは、発見した新しい潜在的ＡＳＥＰを、信頼されるＡＳＥＰデータベース保守ソースにアップロードし、したがって、信頼されるソースは、この新しい潜在的ＡＳＥＰを調べ、これを他のユーザがダウンロードするための更新情報に追加する。さらに他の実施形態では、ユーザのコンピューティングデバイスは、既知のＡＳＥＰに対する新しいフックを検出し、このフックを、信頼されるＡＳＥＰデータベース保守ソースにアップロードする。
【００３５】
ステップ４１６で、ユーザは、バンドルのインストレーションを管理するためのインターフェースと対話する。前述のように、いくつかのインストレーションプログラムは、２つ以上のソフトウェアアプリケーションの「バンドル」をインストールし、それぞれのアプリケーションが、１つまたは複数のＡＳＥＰフックをインストールする。ユーザは、個別のソフトウェアアプリケーションを無効にするために、バンドルされたソフトウェアから個別のＡＳＥＰフックを除去するか、または、全部のバンドルを無効にするために、すべてのＡＳＥＰフックを除去することができる。どちらの場合でも、ユーザは、ソフトウェアコンポーネントが実際には除去されるようにはせず、単にコンポーネントからそれぞれのＡＳＥＰの「フックを外す」。それによって、これらのコンポーネントが自動的にロードされるのを防止し、ユーザがアプリケーションまたはバンドルを再び有効にすることを決定した場合には、除去されたＡＳＥＰフックを簡単に復元することができるようになる。
【００３６】
図５を参照すると、ＡＳＥＰが５つの異なるカテゴリに分類されている。この分類により、ＡＳＥＰフックを介したスパイウェアの検出および除去を論じるために有用な枠組みが与えられる。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）プラットフォーム上では、ハードウェア、ソフトウェア、ユーザ、およびコンピューティングデバイスのプリファレンス（ｐｒｅｆｅｒｅｎｃｅ）の情報および設定を格納するために使用するデータベースであるレジストリに、ほとんどのＡＳＥＰが存在している。わずかに少数のＡＳＥＰについては、通常、ファイルシステムに存在している。第１のカテゴリ５０１は、新しいプロセスを開始するＡＳＥＰであり、例えば、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｗｉｎｄｏｗｓ／ＣｕｒｒｅｎｔＶｅｒｓｉｏｎ／Ｒｕｎ  Ｒｅｇｉｓｔｒｙ  ｋｅｙ、および、％ＵＳＥＲＰＲＯＦＩＬＥ％／Ｓｔａｒｔ  Ｍｅｎｕ／Ｐｒｏｇｒａｍｓ／Ｓｔａｒｔｕｐ  ｆｉｌｅ  ｆｏｌｄｅｒなどである。これらは、追加のプロセスの自動開始のための特に知られているＡＳＥＰである。第２のカテゴリ５０２は、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｗｉｎｄｏｗｓ  ＮＴ／ＣｕｒｒｅｎｔＶｅｒｓｉｏｎ／Ｗｉｎｌｏｇｏｎ／Ｎｏｔｉｆｙ／などの、システムプロセスをフックするＡＳＥＰであり、これによりＤＬＬをｗｉｎｌｏｇｏｎ．ｅｘｅに読み込むことが可能になる。第３のカテゴリ５０３は、ドライバのロードを可能にするＡＳＥＰであり、例えば、ＨＫＬＭ／Ｓｙｓｔｅｍ／ＣｕｒｒｅｎｔＣｏｎｔｒｏｌＳｅｔ／Ｃｏｎｔｒｏｌ／Ｃｌａｓｓ／｛４Ｄ３６Ｅ９６Ｂ−Ｅ３２５−１１ＣＥ−ＢＦＣ１−０８００２ＢＥ１０３１８｝／Ｕｐｐｅｒ  Ｆｉｌｔｅｒは、キーロガ（ｋｅｙｌｏｇｇｅｒ）ドライバのロードを可能にし、ＨＫＬＭ／Ｓｙｓｔｅｍ／ＣｕｒｒｅｎｔＣｏｎｔｒｏｌＳｅｔ／Ｓｅｒｖｉｃｅｓは、汎用ドライバのロードを可能にする。第４のカテゴリ５０４は、例えばＷｉｎｓｏｃｋなど、複数のプロセスをフックするＡＳＥＰである。Ｗｉｎｓｏｃｋにより、レイヤードサービスプロバイダ（ＬＳＰ）ＤＬＬ、または名前空間プロバイダ（ＮＳＰ）ＤＬＬを、Ｗｉｎｓｏｃｋソケットを使用するすべてのプロセス内にロードすることが可能になる。第４のカテゴリ５０４におけるもう１つのＡＳＥＰは、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｗｉｎｄｏｗｓ  ＮＴ／ＣｕｒｒｅｎｔＶｅｒｓｉｏｎ／Ｗｉｎｄｏｗｓ／ＡｐｐＩｎｉｔ  ＿Ｄｌｌｓであり、Ｕｓｅｒ３２．ｄｌｌにリンクするすべてのプロセス内へのＤＬＬのロードを可能にする。第５のカテゴリ５０５は、アプリケーション固有のＡＳＥＰである。例えばＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ／Ｔｏｏｌｂａｒは、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒウェブブラウザ内へのツールバーのロードを可能にする。同様に、ＨＫＣＲ／ＰＲＯＴＯＣＯＬＳ／Ｎａｍｅ−Ｓｐａｃｅ  ＨａｎｄｌｅｒおよびＨＫＣＲ／ＰＲＯＴＯＣＯＬＳ／Ｆｉｌｔｅｒにより、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒが他の種類のＤＬＬをロードすることが可能になる。
【００３７】
本発明の実施形態では、ＡＳＥＰの監視は、３つのタイプの変更、すなわち、（１）新しいＡＳＥＰフックの追加、（２）既存のＡＳＥＰフックの修正、および（３）既存のＡＳＥＰフックによりポイントされる実行可能ファイルの修正のいずれについても、すべての既知のＡＳＥＰを監視する。上記の変更のそれぞれは、オプションの通知を生成し、処理のために、それをユーザに送るかまたは企業管理システムに転送する。信頼された発行元によって署名されたＡＳＥＰプログラムについての通知に関しては、偽陽性を減らすために、任意選択で抑止することができる。図６は、本発明の実施形態で使用されるユーザ通知警告のスクリーンショットを示す。フリーウェアのスクリーンセーバをインストレーションの間に、５つの新しいＡＳＥＰフック６０１〜６０５がユーザに通知される。「スクリーンセーバ」フックの警告６０５は予想されている。他の４つの警告６０１〜６０４からの情報により（警告をクリックすることによって）ＡＳＥＰのシグネチャおよび記述データベースを検索することにより、これらの警告が、「ｅＸａｃｔ  Ｓｅａｒｃｈ  Ｂａｒ」および「Ｂａｒｇａｉｎ  Ｂｕｄｄｙ」に属することが明らかになる。次いで、ユーザは、これら２つのソフトウェアについて提供された情報、およびスクリーンセーバによって得られる利益に基づいて、このバンドルを維持するかどうかを、情報を得た上で決定することができる。
【００３８】
同じインストレーションプロセスの間に出現する複数のＡＳＥＰ警告は、通常、それらのＡＳＥＰが同じバンドルに属するが、この時間ベースのグループ化は、並行するインストレーションに対して頑強でないことがある。例えば、図７は、（ＡＳＥＰフック７０３および７０４を有する）ＤｉｖＸバンドル７０２と（ＡＳＥＰフック７１１〜７１５を有する）Ｄｅｓｋｔｏｐ  Ｄｅｓｔｒｏｙｅｒ（ＤＤ）バンドル７１０の２つの並行したインストレーションを示す。時間ベースのグループ化は、７つすべてのＡＳＥＰフックを単一のバンドルに誤ってグループ化する。しかし、本発明の実施形態では、常時オンとなっているＳｔｒｉｄｅｒレジストリおよびファイル追跡の上にさらに構築されたバンドル追跡技術を用いる。同じプロセスツリーに属するプロセスによって作られたＡＳＥＰフックは、同じバンドルに割り当てられる。追加／除去プログラム（ＡＲＰ）の入口は、同じプロセスツリーによって作られ、それらのＡＲＰ表示名の連結が、バンドル名として使用される。上側のプロセスツリーは、２つのＡＰＲ名７２０および７２１を有するＤｉｖＸバンドル７０２を定義し、下側のツリーは、３つのＡＰＲ名７２２〜７２４を有するＤＤバンドルを定義する。
【００３９】
除去のためのＡＲＰのエントリを提供していない不正なソフトウェアは、名前を持たないバンドルとして現れる。例えば、あるソフトウェアは、インストレーション時に、ＡＲＰのエントリを伴わずに密かに１つのＡＳＥＰフックを作成する。したがって、このようなソフトウェアについては、潜在的な不要のインストレーションとしてフラグが立てられる。
【００４０】
いくつかの悪質なソフトウェアでは、最初に部分的にインストールを行い、後でユーザが、どのウェブサイトが、不要なソフトウェアのインストールについて実際に責任があるか識別することがより困難になるまで、完全なインストレーションを遅延させる。例えば、あるＡＳＥＰフックを伴う部分的なインストレーションのあと、あるソフトウェアはその後の何回かのリブートを経たある時点を非確定的に選択し、７つの追加のＡＳＥＰフックを有するインストレーションを完了する。本発明の実施形態は、このような巧妙な振舞いを捕捉するために、図８に示す以下のようなバンドル追跡を用いる。まず、各ウェブベースのインストレーションを、そのソースＵＲＬと相互に関連付けるために、ステップ８０２で、ＵＲＬの追跡が実行される。ウェブブラウザの履歴には、訪問したすべてのウェブサイトについてＵＲＬおよびタイムスタンプが既に記録されているが、それは、一般的に、ブラウザのすべてのインスタンスについての大域的な履歴であり、数週間後にガーベジ（ｇａｒｂａｇｅ）として収集されるものであるため、より古いインストレーションに関する情報は除去されることになる。各ＵＲＬにナビゲートしたウェブブラウザのインスタンスのプロセスＩＤを記録するために、本発明の実施形態では、カスタマイズされたブラウザヘルパーオブジェクト（「ＢＨＯ」）を使用し、したがって、ステップ８０４で、ＵＲＬトレースをＡＳＥＰフックトレースと相互に関連付けることができる。ＢＨＯは、アクセスされたＵＲＬを、いつそのＵＲＬがアクセスされたかを示すタイムスタンプと共に、ＵＲＬトレースログに記録する。ＵＲＬトレースログのエントリをバンドルトレースログのエントリと相互に関連付けることにより、ウェブベースのインストレーションのソースＵＲＬが識別される。潜在的なインストレーションを取り扱うために、バンドル追跡は、各バンドルによって作成されたすべてのファイルを追跡する。後でこれらのファイルのいずれかがインスタンス化され、ＡＳＥＰフックがさらに作成された場合、ステップ８０６で、これらの追加のフックは元のバンドルに追加される。アプリケーションをインストールするプロセスまたはコンポーネントを、識別し、次いで、このルートイメージ名をトレースバックして、そのファイルをシステムに追加したバンドルを突き止めることにより、元のバンドルを決定する。
【００４１】
本発明の実施形態では、例えば図９に示すＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの「追加／削除プログラム」インターフェースなどの改良型のソフトウェアインベントリ管理アプリケーションが提供される。このアプリケーションは、すべてのＡＳＥＰをスキャンし、バンドルによる現在のフックを表示する。ユーザは、新しくインストールされたバンドルを強調表示するために、バンドルをインストールの時間によってソートすることができる。このアプリケーションにより、バンドルの除去／無効化のための３つの選択肢が提供される。例えば、バンドル名９０２は、「ｅＸａｃｔ  Ｓｅａｒｃｈ  Ｂａｒ」および「Ｂａｒｇａｉｎ  Ｂｕｄｄｙ」が、「Ｄｅｓｋｔｏｐ  Ｄｅｓｔｒｏｙｅｒ」バンドルの一部分としてインストールされたことを、はっきりと示している。例えば、「ＤｉｖＸ  Ｐｒｏ  Ｃｏｄｅｄ  Ａｄｗａｒｅ｜ＤｉｖＸ  Ｐｌａｙｅｒ」バンドル９０４は、共通するインストレーションからもたらされた２つのＡＳＥＰフック、すなわち、ＧＭＴ．ｅｘｅ９０６、およびＣＭＥＳｙｓ．ｅｘｅ９０８を含む。「Ｄｅｓｋｔｏｐ  Ｄｅｓｔｒｏｙｅｒ  ＦＲＥＥ｜ｅＸａｃｔ  Ｓｅａｒｃｈ  Ｂａｒ｜Ｂａｒｇａｉｎ  Ｂｕｄｄｙ」バンドル９０２は、５つのＡＳＥＰフック９１０〜９１４を含む。ユーザがＤｅｓｋｔｏｐ  Ｄｅｓｔｒｏｙｅｒを除去したい場合、ユーザは、バンドル無効化９１５ボタンをクリックし、マシンをリブートすることができる。これにより、５つのＡＳＥＰフック９１０〜９１４のすべてが除去され、その結果、これらのファイルはマシン上に残存するにもかかわらず、３つのバンドルされているプログラムの自動開始が差し止められる。
【００４２】
あるいは、ユーザは、従来のＡＲＰページにある３つのＡＲＰの名前を探し、そこで除去されたそれぞれのプログラムを呼び出すことができる。スパイウェアが信頼できないＡＰＲ除去プログラムを提供することは珍しくないので、ユーザは、ＡＰＲによる除去のあと、どのＡＳＥＰフックも残っていないことを確かめるために、改良型のＡＲＰインターフェースで二重の確認をすることができる。改良型インターフェースはまた、既存のシステム復元機能と統合されることが好ましい。除去のオプションが両方とも失敗した場合、ユーザは「復元（Ｒｅｓｔｏｒｅ）」ボタン９１７をクリックして、バンドルがインストールされる前に設定されたチェックポイントにまでマシン構成を戻すことができる。
【００４３】
周知のＡＳＥＰおよび文書に記載されているＡＳＥＰに加えて、本発明の実施形態により、別の２つの経路を介して新しいＡＳＥＰが発見される。第１の経路は、スパイウェアプログラムが未知のＡＳＥＰを使用しているため、ロードされている現在のＧａｔｅｋｅｅｐｅｒのバージョンではクリーンアップすることができない実際の感染を有するマシンを、トラブルシューティングすることに関する。この目的のために、Ｓｔｒｉｄｅｒ  ＴｒｏｕｂｌｅｓｈｏｏｔｅｒとＡｓｋＳｔｒｉｄｅｒの２つのツールが提供される。この２つのツールについては、Ｗａｎｇらによる前述の参照文献に記載されている。第２の経路は、将来のスパイウェアによってフックされる可能性のある新しいＡＳＥＰを発見するために、レジストリおよび任意のマシンから収集されたファイルトレースを解析することに関する。新しいＡＳＥＰが発見されると、スパイウェアの除去の範囲を広げるために、それらは既知のＡＳＥＰのリストに追加される。同様のＡＳＥＰ発見手順は、システム管理者により、指定のＡＳＥＰのリストには無いサードパーティまたは内製のアプリケーションにおけるＡＳＥＰを発見するために利用することもできる。
【００４４】
ＡｓｋＳｔｒｉｄｅｒは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のタスクマネージャやＵＮＩＸ（登録商標）のｐｓコマンドなどの、プロセスをリスト表示するツールに対する拡張機能である。実行中のプロセスのリストを表示するのに加えて、ＡｓｋＳｔｒｉｄｅｒは、各プロセスによってロードされたモジュールのリスト、およびシステムによってロードされたドライバのリストを表示する。さらに重要なことに、ＡｓｋＳｔｒｉｄｅｒは、ローカルマシンからコンテキスト情報の収集を行って、ユーザが、大量のコンテキスト情報を解析し、その最も興味深い部分を識別するのを支援する。このようなコンテキスト情報は、システム復元ファイル変更ログ、パッチ（ｐａｔｃｈ）インストレーションのためのメタデータ、および、ドライバとデバイスの関連付けを含む。
【００４５】
ＡｓｋＳｔｒｉｄｅｒのスクリーンショットの２つの実例を示す図１０で、本発明の実施形態で用いられる、ＡＳＥＰを見つけるためのＡｓｋＳｔｒｉｄｅｒの使用の例を示す。上方のペイン（ｐａｎｅ）１００２は、システム復元によるファイルのほぼ最終更新のタイムスタンプでソートされたプロセスのリストを表示する。過去１週間以内に更新されたファイル１００４は、強調表示されている。上方のペイン１００２内のユーザが選択したファイル１００５も、異なる色で強調表示されている。下方のペイン１００６は、上方のペインで選択されたプロセスによってロードされたモジュールのリストを、同様の時間ソートおよび強調表示で表示する。さらに、ファイルがパッチによりもたらされた場合は、そのファイルが、スパイウェアのインストレーションによりもたらされた可能性がかなり低いことを示すものとして、そのパッチＩＤが表示される。
【００４６】
図１０および１１はまた、本発明の実施形態に従って、ＡｓｋＳｔｒｉｄｅｒが、新しいＡＳＥＰを見つけるためにどのように使用されるかを例示している。図１０は、プログラムのインストレーションのあと、新しいプロセスＤＡＰ．ｅｘｅ１００８が開始され、ブラウザのプロセスｅｘｐｌｏｒｅｒ．ｅｘｅ１０１０により、同じインストレーションから、４つの新しく更新されたＤＬＬファイルがロードされた様子を示している。すべての新しいＡＳＥＰフックを（例えば図９の改良型のＡＲＰインターフェースを使用して）無効にし、リブートを行ったのちも、ｅｘｐｌｏｒｅｒ．ｅｘｅ１１０２は、２つの新しいＤＬＬ１１０４を依然としてロードしている。そのレジストリを、ファイル名ＤＡＰＩＥ．ｄｌｌを使用して検索すると、アプリケーションが、ＨＫＣＲ／ＰＲＯＴＯＣＯＬＳ／Ｎａｍｅ−Ｓｐａｃｅ  Ｈａｎｄｌｅｒで追加のＡＳＥＰをフックしていることが明らかになる。このような手順を、例えば、ＡｓｋＳｔｒｉｄｅｒの表示において、各プロセス／モジュールごとのボタンを提供し、ユーザがボタンをクリックすると、逆引き参照が行われＡＳＥＰが表示されるようにすることにより、自動化できる可能性がある。次いで、この新しいＡＳＥＰは、監視すべき既知のＡＳＥＰのリストに追加される。
【００４７】
ＡｓｋＳｔｒｉｄｅｒは、完全に自動であり、たいていは実行するのにかかる時間はわずか１分のみだが、実行プロセス、およびロードされたモジュールを捕捉するのは、スキャンを行うときだけである。スパイウェアプログラムが、未知のＡＳＥＰを介してインスタンスを作成し、ＡｓｋＳｔｒｉｄｅｒが呼び出されるのに先立ち存在する場合、ＡｓｋＳｔｒｉｄｅｒは、未知のＡＳＥＰを明らかにするいかなる情報も捕捉することができないおそれがある。したがって、本発明の実施形態では、このようなシナリオにおいて、ＡＳＥＰの発見のためにＳｔｒｉｄｅｒトラブルシュータが使用される。このツールは、感染したマシンのユーザに、感染前に設定された（ファイルおよびレジストリの）システム復元チェックポイントを選択するよう求める。ツールは、チェックポイントでの状態と感染している現在の状態を比較することにより、スパイウェアのインストレーションによるすべての変更を含む差集合を計算する。次いで、この差集合を、（自動開始プロセス中のすべての各ファイルおよびレジストリの読取り／書込みを記録する）「自動開始トレースログ」と交差させることによって、スパイウェアにより行われたすべてのＡＳＥＰフックを必然的に含むレポートを作成する。
【００４８】
一般に、ＡＳＥＰプログラムは、（１）ブートプロセスの開始から、マシンがすべての初期化を完了しユーザと対話することができる状態になる時点までの実行ウィンドウを対象とする自動開始トレースにおいて現れ、（２）他の自動開始プログラムに対して固定したファイル名を持つのではなく、拡張ポイント参照によってインスタンス化が行われる。したがって、本発明の実施形態では、任意のマシンからの自動開始トレースを解析して、間接的パターンを識別する、つまり、ファイルまたはレジストリ照会動作の部分として実行可能ファイル名が返され、続いて、その実行可能ファイルのインスタンス化が行われるパターンを識別することによって、新しいＡＳＥＰを発見する。一般に、検出されるこのような間接化は、３つの特徴的パターンのうちの１つに分類される。第１は、複数のフックを収容することができるＡＳＥＰである。例えば、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／ＩｎｅｔＳｔｐ／Ｅｘｔｅｎｓｉｏｎｓは、ＩＩＳサーバに対する複数の管理拡張機能を可能にし、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｃｒｙｐｔｏｇｒａｐｈｙ／Ｄｅｆａｕｌｔｓ／Ｐｒｏｖｉｄｅｒは、複数プロバイダを可能にし、ＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｗｉｎｄｏｗｓ  ＮＴ／Ｃｕｒｒｅｎｔ  Ｖｅｒｓｉｏｎ／Ｗｉｎｌｏｇｏｎ／Ｕｓｅｒｉｎｉｔは、コンマで区切られた文字列で指定された複数の初期化プログラムを可能にする。第２の間接的パターンでは、単一のフックを有するＡＳＥＰを示す。例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）エクスプローラのＡＳＥＰの  ＨＫＣＲ／Ｎｅｔｗｏｒｋ／ＳｈａｒｉｎｇＨａｎｄｌｅｒは、１つのハンドラのみを可能にすると考えられる。第３の間接的パターンでは、ファイル名を取り寄せるために追加のクラスＩＤ参照を必要とするＡＳＥＰを示す。例えば、ＡＳＥＰのＨＫＬＭ／ＳＯＦＴＷＡＲＥ／Ｍｉｃｒｏｓｏｆｔ／Ｗｉｎｄｏｗｓ／ＣｕｒｒｅｎｔＶｅｒｓｉｏｎ／ＳｈｅｌｌＳｅｒｖｉｃｅＯｂｊｅｃｔＤｅｌａｙＬｏａｄに対するすべてのフックは、クラスＩＤを含み、クラスＩＤは、ＨＫＣＲ／ＣＬＳＩＤ／＜Ｃｌａｓｓ  ＩＤ＞／ＩｎＰｒｏｃＳｅｒｖｅｒ３２から実行可能ファイル名を取り寄せるために追加のレジストリ参照で使用される。
【００４９】
いくつかの事例では、監視するリストに含めるべきかどうか議論の余地があるという意味で「偽陽性」のＡＳＥＰが作られる可能性がある。本発明の実施形態では、このような事例を監視するかしないかの選択が可能になる。まず、いくつかのＤＬＬファイルは、どの関数もエクスポートせず、データを提供するためのリソースファイルとしてのみ使用され、したがって、これは、ＡＳＥＰと見なされない場合がある。しかし、コードを実行させるための特定のルーチン（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるＤｌｌＭａｉｎなど）が追加される場合、これらのファイルもＡＳＥＰと見なすことができる。もう１つの事例は、組織に特有のＡＳＥＰである。例えば、同じ組織内のすべてのマシンが、その組織のＩＴ部門によって導入された自動開始プログラムを実行する場合、その自動開始プログラムに固有のＡＳＥＰが提示される。明らかに、このようなＡＳＥＰは、監視のための大域的なリストに追加されるはずがないが、この組織のシステム管理者は、これらのＡＳＥＰがフックされるのを懸念する場合、これらのＡＳＥＰを組織のローカルリストに追加したいと考える。
【００５０】
本発明の実施形態により、さらに、ＡＳＥＰチェックポイントおよび差分比較が提供される。すべての既知のＡＳＥＰフック、および、チェックポイントを形成するＡＲＰレジストリキーを記録するツールが提供される。チェックポイントは、要求時に、または定期的間隔で自動的に記録される。ＡＳＥＰチェックポイントは、３秒から１０秒しか時間を取らずに効率的に作成される。新しいチェックポイントが作られるたびに、ＡＳＥＰフックおよびＡＰＲキーについての変更を検出するために、新しいチェックポイントとその前のチェックポイントが比較される。これによって、押し付けがましくないやり方で、処理オーバヘッドのない任意の２つの連続したチェックポイントの間の、おおよその時間ベースのバンドル情報が与えられる。
【００５１】
不要なソフトウェアのインストレーションを含めた恣意的なコードの実行をするために不当に利用することが可能なブラウザの脆弱性が、Ｎｅｔｓｃａｐｅ  Ｎａｖｉｇａｔｏｒ、およびＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘを含めて様々なウェブブラウザに存在する。ホームページおよび検索ページに関連する、いくつかのブラウザのＡＳＥＰは、通常、Ｗｉｎｄｏｗｓ（登録商標）のレジストリではなく設定ファイルに格納される。例えば、Ｎｅｔｓｃａｐｅ／Ｍｏｚｉｌｌａのプロファイルディレクトリには、２つのユーザプリファレンスファイル、すなわち、（自動生成された既定のプリファレンスを含む）ｐｒｅｆｓ．ｊｓと、（既定のプリファレンスを指定変更するためにユーザが作成することができるオプションのファイルである）ｕｓｅｒ．ｊｓが存在する。スパイウェアは、ｐｒｅｆｓ．ｊｓ内のｕｓｅｒ＿ｐｒｅｆ（“ｂｒｏｗｓｅｒ．ｓｔａｒｔｕｐ．ｈｏｍｅｐａｇｅ”，  “＜ｈｏｍｅｐａｇｅ＞”）およびｕｓｅｒ＿ｐｒｅｆ（“ｂｒｏｗｓｅｒ．ｓｅａｒｃｈ．ｄｅｆａｕｌｔｅｎｇｉｎｅ”，  ＜ｓｅａｒｃｈ  ｐａｇｅ＞）の値を変更することによって、ブラウザのホームページおよび既定の検索ページを乗っ取ることができる。例えば、Ｌｏｐ．ｃｏｍソフトウェアがＮｅｔｓｃａｐｅ／Ｍｏｚｉｌｌａのホームページを乗っ取ることが知られている。
【００５２】
ＡＳＥＰは、Ｌｉｎｕｘ、ＡＩＸ、およびＳｏｌａｒｉｓなどのＵＮＩＸ（登録商標）オペレーティングシステム上でも見つかり、したがって、本発明の実施形態では、これらのオペレーティングシステム上のスパイウェアの検出を行い、また、ＵＮＩＸ（登録商標）システム上のＡＳＥＰは、４つのカテゴリに大雑把に分類することができる。第１のカテゴリは、ｉｎｉｔｔａｂおよびｒｃファイルであり、例えば／ｅｔｃ／ｉｎｉｔｔａｂファイルなどがある。システムが起動し初期化するとき、この／ｅｔｃ／ｉｎｉｔｔａｂファイルにより、ｉｎｉｔプロセスが行うことが指示される。一般に、このようなファイルによって、ｉｎｉｔプロセスは、ユーザのログオン（ｇｅｔｔｙ）を可能にし、また、／ｅｔｃ／ｒｃ．ｄ／ｒｃファイル、および／ｅｔｃ／ｒｃ．ｄ／ｒｃ．ｌｏｃａｌなどの他のｒｃファイルで指定されたディレクトリのすべてのプロセスを開始するように求められる。／ｅｔｃ／ｒｃ．ｄ／ｒｃ．ｌｏｃａｌは、ユーザ（通常は「ルート」レベルのアクセス権を有するユーザ）が、追加のデーモンをロードすることを含めシステムに対する変更をカスタマイズする場所である。第２のカテゴリには、ｃｒｏｎｔａｂツールが含まれる。ｃｒｏｎデーモンは、ｒｃまたはｒｃ．ｌｏｃａｌファイルにより開始し、特定の時間にまたは定期的にプロセスを実行するためのタスクスケジューリングサービスを提供する。Ｃｒｏｎは、常に、／ｅｔｃ／ｐａｓｓｗｄファイル内のユーザと合致するエントリを求めてｖａｒ／ｓｐｏｏｌ／ｃｒｏｎを検索し、また、システムエントリを求めて／ｅｔｃ／ｃｒｏｎｔａｂを検索する。次いで、Ｃｒｏｎは、実行するようにスケジュールされたコマンドを実行する。第３のカテゴリは、ＡＳＥＰとなる可能性があるユーザ環境の設定プロファイル（例えば、ｂａｓｈシェルでのｂａｓｈ、Ｘ環境でのｘｉｎｉｔｒｃまたはＸｄｅｆａｕｌｔｓ、および、／ｅｔｃ／における他のプロファイル）である。通常、ユーザは、Ｘ  Ｗｉｎｄｏｗにログオンするまたはそれを始動させたときに何がロードされるかについて気付いていない。ＡＳＥＰをフックして、ＡＳＥＰの位置に応じてシステム全体または特定のユーザアカウントについての端末のアクティビティを記録するために、コマンド「ｓｃｒｉｐｔ  −ｆｑ／ｔｍｐ／ｓｙｓｌｏｇ」を含む単純なスクリプトファイルを使用することができる。このような記録は、通常、ｗｏｒｌｄ−ｗｒｉｔａｂｌｅである／ｔｍｐディレクトリ下にある（ファイル名が「．」で始まる）隠しファイルに記憶される。第４のカテゴリは、ローダブル（ｌｏａｄａｂｌｅ）カーネルモジュール（ＬＫＭ）を含み、ＬＫＭは、いくつかのオブジェクトコードであり、新しい機能を提供するために、動的にカーネルにロードすることができる。ほとんどのＬＫＭオブジェクトファイルは、／ｌｉｂ／ｍｏｄｕｌｅｓディレクトリ内にデフォルトで置かれる。ただし、いくつかのカスタマイズされたＬＫＭファイルは、システム上のどこにでも存在することができる。ｉｎｓｍｏｄおよびｒｍｍｏｄのプログラムはそれぞれ、ＬＫＭの挿入および除去を担当する。
【００５３】
本発明の原理を適用することができる多数の可能な実施形態に照らし、図面に関連して本明細書に記載した実施形態は、説明を目的にしたものにすぎず、本発明の範囲を限定するものとして解釈すべきでないことは理解されよう。例えば、例示の実施形態は、本発明の趣旨から逸脱することなく、その構成および細部を修正することができることは当業者には理解されよう。ソフトウェアモジュールまたはソフトウェアコンポーネントの用語で本発明を記述したが、これをハードウェアコンポーネントで等価に置き換えることができることは当業者には理解されよう。したがって、本明細書に記載の本発明では、すべてのこのような実施形態が、添付の特許請求の範囲およびその均等物の範囲にあるものとして企図されている。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施形態による、スパイウェアおよび不要ソフトウェアの検出および管理を実行するためのコンピューティングデバイスの例示的アーキテクチャを示す簡潔な概略図である。
【図２】本発明の実施形態による、コンピュータオペレーティングシステムを一連のゲートとして示す図である。
【図３】本発明の実施形態による、スパイウェアの検出および除去に使用するコンポーネントアーキテクチャを示す図である。
【図４】本発明の実施形態による、スパイウェアの管理方法を示す図である。
【図５】本発明の実施形態による、自動開始拡張ポイントのいくつかのカテゴリを示す図である。
【図６】本発明の実施形態による、スパイウェアの管理のためのユーザ通知警告を示す図である。
【図７】本発明の実施形態による、ソフトウェアバンドルおよびＡＳＥＰフックの実装の例を示す図である。
【図８】本発明の実施形態による、バンドルの管理方法を示す概略的流れ図である。
【図９】本発明の実施形態による、バンドルされたスパイウェアの除去および管理のためのユーザインターフェースを示す図である。
【図１０】本発明の実施形態による、スパイウェアを管理するために使用されるトラブルシューティングツールを示す図である。
【図１１】本発明の実施形態による、スパイウェアを管理するために使用されるトラブルシューティングツールを示す図である。
【符号の説明】
【００５５】
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  非リムーバブル不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバブル不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９５  出力周辺装置インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
0004807970.tif 000002
【図２】
0004807970.tif 000003
【図３】
0004807970.tif 000004
【図４】
0004807970.tif 000005
【図５】
0004807970.tif 000006
【図６】
0004807970.tif 000007
【図７】
0004807970.tif 000008
【図８】
0004807970.tif 000009
【図９】
0004807970.tif 000010
【図１０】
0004807970.tif 000011
【図１１】
0004807970.tif 000012