各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされるコンピュータを分析する方法であって、1つまたは複数の前記アプリケーションそれぞれのローカル依存関係ネットワークを識別するステップであって、前記ローカル依存関係ネットワークは少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える、ステップと、前記ローカル依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較するステップと、マルウェアおよび/またはオーファンオブジェクトを識別するために前記比較の結果を使用するステップとを備える方法。前記相互関連オブジェクトは、実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、および起動ポイントのうちの1つまたは複数である請求項1に記載の方法。前記ローカルアプリケーション依存関係ネットワークの前記オブジェクトのパスを識別するステップと、前記パスをシステム非依存にするために正規化するステップとを備える請求項1または2に記載の方法。前記ローカルアプリケーション依存関係ネットワークの前記オブジェクトパスは、アプリケーションのインストールプログラムが起動されたときに活動を追跡することにより識別される請求項1~3のいずれか1項に記載の方法。前記ローカルアプリケーション依存関係ネットワークの前記オブジェクトパスは、前記アプリケーションのインストール前後にシステムのスナップショットを取得し、前記2つのスナップショット間の違いを識別することにより識別される請求項1~3のいずれか1項に記載の方法。前記ローカルアプリケーション依存関係ネットワークは、1特定の入力オブジェクトに対して、前記入力オブジェクトに依存する他のすべてのオブジェクトの検索を行うステップと、2前記入力オブジェクトの前記パスおよび前記検索で見つかった他のすべてのオブジェクト、およびそれらのオブジェクト間の関係を結果ファイルに格納するステップと、3それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対して再帰的に前記ステップ1および前記ステップ2を繰り返すステップと、4前記結果ファイル内の前記オブジェクトパスを正規化するステップとにより識別される請求項1~5のいずれか1項に記載の方法。前記既知のアプリケーション依存関係ネットワークのデータベースは、これら依存関係ネットワークをキャプチャするために、既知のアプリケーションのインストールを監視することにより事前設定される請求項1~6のいずれか1項に記載の方法。前記既知のアプリケーション依存関係ネットワークのデータベースは、分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを収集することにより事前設定される請求項1~6のいずれか1項に記載の方法。クライアントコンピュータで前記アプリケーションの1つまたは複数のそれぞれのローカル依存関係ネットワークを識別する前記ステップを実行することと、中央サーバーで前記または各ローカルアプリケーション依存関係ネットワークを前記既知のアプリケーション依存関係ネットワークのデータベースと比較する前記ステップを実行することとを含む請求項1~8のいずれか1項に記載の方法。未知のアプリケーション依存関係ネットワークに対して、前記未知のアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアのスキャンを行うステップを含む請求項1~9のいずれか1項に記載の方法。前記さらなるマルウェアのスキャンは、アプリケーションバイナリ証明書のチェックを行うステップ、および前記未知のローカルアプリケーション依存関係ネットワークで識別されたオブジェクトに対してヒューリスティック分析を実行するステップのいずれかまたは両方のステップと、前記アプリケーションが悪意のあることが判明した場合、前記未知のローカルアプリケーション依存関係ネットワークで識別された前記オブジェクトを前記クライアントコンピュータから除去する、または別な方法で安全にするステップとを含む請求項10に記載の方法。前記さらなるマルウェアのスキャンの後に正規品であることが判明した未知のローカルアプリケーションの前記アプリケーション依存関係ネットワークは、前記既知のアプリケーション依存関係ネットワークのデータベースに入力される請求項10または11に記載の方法。前記さらなるマルウェアのスキャンは、アプリケーションバイナリ証明書のチェックを行うステップ、および前記未知のローカルアプリケーション依存関係ネットワークで識別されたオブジェクトに対してヒューリスティック分析を実行するステップのいずれかまたは両方のステップと、他の既知のアプリケーション依存関係ネットワークと共有されたオブジェクトを除いて、前記アプリケーションが悪意のあることが判明した場合、前記未知のローカルアプリケーション依存関係ネットワークで識別された前記オブジェクトを前記クライアントコンピュータから除去する、または別な方法で安全にするステップとを備える請求項10に記載の方法。請求項1~13のいずれか1項に記載の方法をコンピュータに実行させるためのコンピュータプログラム。クライアントコンピュータであって、前記クライアントコンピュータにインストールされた1つまたは複数のアプリケーションごとにローカル依存関係ネットワークを識別するためのシステムスキャナであって、前記ローカルアプリケーション依存関係ネットワークは少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える、システムスキャナと、前記ローカルアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラと、マルウェアおよび/またはオーファンオブジェクトを識別するために前記比較の前記結果を使用するためのポリシングユニットとを備えるクライアントコンピュータ。多数のクライアントコンピュータにサービスを提供するためのサーバーコンピュータシステムであって、既知のアプリケーション依存関係ネットワークのデータベースであって、各アプリケーション依存関係ネットワークがオブジェクトパスおよびオブジェクト間の関係を含む、データベースと、前記クライアントコンピュータの1つまたは複数からローカルアプリケーション依存関係ネットワークを受信するための受信機と、関連するローカルアプリケーションが既知であるかどうかを判断するために、前記データベース内の前記既知のアプリケーション依存関係ネットワークに対して、前記受信したローカルアプリケーション依存関係ネットワークを比較するための依存関係ネットワークコンパレータと、前記クライアントコンピュータそれぞれに前記比較の結果を送信するための送信機とを備えるサーバーコンピュータシステム。本発明の一目的は、コンピュータシステム上のマルウェアを検出するためのメカニズムを提供することであり、システム上でのオブジェクトのネットワークの検出に依存し、オブジェクトのネットワークはプログラム、アプリケーション、ファイル等に関連付けられている、または関連付けられていてもよい。これらのプログラム、アプリケーション、ファイル等のいくつかは、既知で信頼できる場合があり、いくつかは既知で信頼できない場合があり、いくつかは不明の場合がある。本発明の第1の態様によれば、相互関連オブジェクトのセットをそれぞれが備える複数のアプリケーションがインストールされているコンピュータを分析する方法が提供される。この方法は、最初に前記アプリケーションの1つまたは複数ごとのローカル依存関係ネットワークを識別することを備え、ローカル依存関係ネットワークは少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。次いで、当該または各ローカルアプリケーション依存関係ネットワークは、ローカル依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために既知のアプリケーション依存関係ネットワークのデータベースと比較される。次いで、比較の結果は、マルウェアおよび/またはオーファンオブジェクトを識別するために使用される。本発明の実施形態は、マルウェアのためにコンピュータをスキャンするより高速な方法を提供してもよく、従来のスキャン方法よりも大幅に少ない処理能力を必要としてもよい。加えて、本発明の実施形態は、コンピュータからマルウェアを除去するための改善された方法を提供してもよい。マルウェアアプリケーションのために依存関係ネットワーク全体が識別され、したがって、削除中に悪意のあるアプリケーションのコンポーネントのすべてが除去されることを確保することができる。相互関連オブジェクトは、1つまたは複数の実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、または起動ポイントであってもよい。この方法は、ローカルアプリケーション依存関係ネットワークのオブジェクトのパスを識別すること、およびパスをシステムから非依存にするために正規化することをさらに備えていてもよい。ローカルアプリケーション依存関係ネットワークのオブジェクトパスは、アプリケーションのインストールプログラムが起動されたときに活動を追跡することにより、またはアプリケーションのインストール前後にシステムスナップショットを取り、2つのスナップショット間の違いを識別することにより識別してもよい。あるいは、ローカルアプリケーション依存関係ネットワークは:特定の入力オブジェクトに対して、この入力オブジェクトに依存する他のオブジェクトのすべての検索を行うこと、入力オブジェクトのパスおよび検索で見つかった他のオブジェクトのすべて、およびそれらのオブジェクト間の関係を結果ファイルに格納すること、それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対してこれらのステップを再帰的に繰り返すこと、および、結果ファイル内のオブジェクトパスを正規化すること、により識別されてもよい。既知のアプリケーション依存関係ネットワークのデータベースは、それらの依存関係ネットワークをキャプチャするために既知のアプリケーションのインストールを監視することにより、または代わりに分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを収集することにより事前設定されてもよい。この方法は、クライアントコンピュータで1つまたは複数の前記アプリケーションごとのローカル依存関係ネットワークを識別する前記ステップを実行すること、および中央サーバーで当該または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較する前記ステップを実行することを備えていてもよい。この方法は、不明であるアプリケーション依存関係ネットワークに対して、未知のアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアスキャンを行うことをさらに備えてもよい。このさらなるマルウェアスキャンは、従来のアンチウイルススキャン技術、例えば:アプリケーションバイナリ証明書のチェックを行うこと、および未知のローカルアプリケーション依存関係ネットワークで識別されたオブジェクトに対してヒューリスティック分析を実行することのいずれか、または両方をさらに備えていてもよい。未知のローカルアプリケーション依存関係ネットワークで識別されたオブジェクトは、多分他の既知のアプリケーション依存関係ネットワークと共有されるオブジェクトを除いて、アプリケーションが悪意のあることが判明した場合、クライアントコンピュータから除去されるか、または別の方法で安全にされてもよい。前記さらなるマルウェアスキャンの後に正規品であることが判明した未知のローカルアプリケーションのアプリケーション依存関係ネットワークは、既知のアプリケーション依存関係ネットワークのデータベースに入力されてもよい。本発明の第2の態様によれば、本発明の第1の態様の方法をコンピュータに行わせるためのコンピュータプログラムが提供される。本発明の第3の態様によれば、クライアントコンピュータが提供される。クライアントコンピュータは、クライアントコンピュータにインストールされた1つまたは複数のアプリケーションごとにローカル依存関係ネットワークを識別するためのシステムスキャナを備え、ローカルアプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。クライアントコンピュータはまた、ローカルアプリケーション依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために、当該または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラを備える。クライアントコンピュータは、マルウェアおよび/またはオーファンオブジェクトを識別するために比較の結果を使用するためのポリシングユニットをさらに備える。本発明の第4の態様によれば、多数のクライアントコンピュータにサービスを提供するためのサーバーコンピュータシステムが提供される。サーバーコンピュータシステムは、既知のアプリケーション依存関係ネットワークのデータベースを備え、各アプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。サーバーコンピュータはまた、前記クライアントコンピュータの1つまたは複数からローカルアプリケーション依存関係ネットワークを受信するための受信機を備える。関連付けられているローカルアプリケーションが既知であるかどうかを判定するために、受信したローカルアプリケーション依存関係ネットワークをデータベース内の既知のアプリケーション依存関係ネットワークと比較するように依存関係ネットワークコンパレータが提供される。サーバーコンピュータはまた、それぞれのクライアントコンピュータに比較の結果を送信するための送信機を備える。本明細書で説明するマルウェアスキャンのアプローチは、1つまたは複数の中央サーバーおよび多数のクライアントコンピュータを備えたコンピュータシステムの文脈で提示される。クライアントコンピュータは、インターネットを介して中央サーバー複数可と通信する。アプローチを採用され得る他のコンピュータシステムアーキテクチャは、当業者に容易に明らかであろう。クライアントコンピュータ上のアプリケーションは、少なくともデータファイル、ディレクトリおよびレジストリ情報後者はアプリケーションの構成や設定を含むを含む関連するオブジェクトのセットから通常成る-アプリケーションの実行可能ファイルへのデスクトップショートカットポイント;アプリケーションの実行可能ファイルは他のアプリケーションファイルおよびライブラリが置かれているディレクトリに格納される;アプリケーションを実行するのに必要なデータファイルおよび他の実行可能ファイルの場所へのアプリケーションレジストリポイント。関連するオブジェクトおよびその関係のセットは、アプリケーションのための依存関係ネットワークと考えることができる。オブジェクト名、絶対パス等に関係なく、特定のアプリケーションが、インストール時に、それがインストールされるクライアントコンピュータの構成に関係なく、特定のアプリケーション依存関係ネットワークを構築することが理解されるであろう様々なクライアントコンピュータ上で同じオペレーティングシステムが使用されていると仮定して。換言すれば、アプリケーションのためのアプリケーション依存関係ネットワークは、コンピュータに依存しない。したがって、アプリケーション依存関係ネットワークは、アンチウイルススキャンエンジンでマルウェアを識別するのに有用であり得る。特定のアプリケーションのための依存関係ネットワークを識別するためのいくつもの方法がある。アプリケーションのインストール中に使用することができるこのような2つの方法が最初に提示される。第1の方法は、クライアントコンピュータ上でインストーラの活動を追跡することである。これを行うために、インストールプログラムは、フィルタドライバが任意の活動を監視し、インストーラまたはその子プロセスにより作成されたファイル、ディレクトリ、レジストリ情報など、オブジェクトのすべてを追跡できるように、管理対象環境内で起動される。フィルタドライバは、例えばファイルシステムドライバなどの低レベルコンポーネントであり、ファイルまたはディレクトリの作成およびファイルの修正または名称変更などのファイル操作をキャプチャおよび記録することができる。第2の方法は、システムスナップショットの差分抽出diffingを使用することである。この第2の方法では、システムスナップショットはアプリケーションのインストール前後にクライアントコンピュータ上で取得される。スナップショットは、ファイル、ディレクトリ、およびレジストリ情報を含むであろう。2つのスナップショット間の差分を識別することにより、インストールプロセス中にインストーラにより作成されたオブジェクトを識別することができる。新しくインストールされたオブジェクトが一旦識別されると、これを行うために採用される方法に関係なく、オブジェクト間の関係、例えばオブジェクトAがオブジェクトBを指し示すなどを判断することが必要である。オブジェクトパスは、オブジェクト間の関係と共に、アプリケーション依存関係ネットワークを定義する。アプリケーション依存関係ネットワークを識別するためのすべての方法は、少なくとも、インストーラにより作成されるオブジェクトパスのリストを返す。パスをコンピュータに不明確にするために、他のコンピュータが異なる構成を有していてもよいように、それらがまず正規化されなければならない。正規化プロセスは、アプリケーションインストールフォルダ、tempディレクトリ、ユーザープロファイルディレクトリ、システムディレクタ等に対するディレクトリを固定キーワードと置換する。例えば:INSTALL_DIR-は、アプリケーションがインストールされている正規化されたパスである。特定のコンピュータ上では、実際のインストールディレクトリ、例えばc:\ProgramFiles\MozillaFirefoxに変換することができる。正規化後、アプリケーション依存関係ネットワークは次のようなオブジェクトパスを含む:INSTALL_DIR\firefox.exeINSTALL_DIR\xul.dllINSTALL_DIR\AccessibleMarshal.dllINSTALL_DIR\application.iniUSER_PROFILE\ApplicationData\Mozilla\Firefox\さらに、以下のような、レジストリキー、起動ポイント、および値に関連する正規化されたオブジェクトパスを備えることができる:HKEY_CLASSES_ROOT\.htm\OpenWithList\firefox.exeHKEY_CLASSES_ROOT\.xhtHKEY_CLASSES_ROOT\Applications\firefox.exe\shell\open\commandデフォルト値、REG_SZ、INSTALL_DIR\firefox.exe-requestPending-osint-url1上記に示したように、オブジェクトはアプリケーション依存関係ネットワークを定義するのにも寄与する、それらの間の関係を有する。これらの関係を識別するために、オブジェクト依存関係情報が使用される。例えば、上記のオブジェクトの例を使用して、拡張子.xhtを持つファイルをユーザーがクリックするといつでもfirefox.exeが起動される。これはファイルがfirefox.exeに依存しているためである。したがってオブジェクト間の関係は、オブジェクトINSTALL_DIR\firefox.exeおよびレジストリキーオブジェクトHKEY_CLASSES_ROOT\.xhtとの間で識別することができる。INSTALL_DIR\firefox.exeを含むがHKEY_CLASSES_ROOT\.xhtと対応関係のないコンピュータ上のアプリケーション依存関係ネットワークがある場合、アプリケーションが正規のFirefoxアプリケーションを模倣しようとしていることを、または正規のFirefoxアプリケーションが正しくインストールまたはアンインストールされていないことを意味する場合がある。アプリケーション依存関係ネットワークを識別するための上記の方法は、新しいアプリケーションがインストールされているときに、クライアントコンピュータ上でアンチウイルススキャンエンジンがインストールされ実行される場合には、もちろん使用されることができる。以前にインストールしたアプリケーションをスキャンするためには、すなわち、スキャンエンジンをインストールする前にインストールした場合、またはアンチウイルススキャンを起動することなく巧く自分自身をインストールしたマルウェアを識別するためには、別のアプローチが必要であり、これは以前に作成されたアプリケーション依存関係ネットワークを判断することができる。また、この別のアプローチは、現在クライアントコンピュータ上でのオブジェクトのすべておよび関係を判断するために、クライアントコンピュータ上でシステムの完全スキャンを実行するようにアンチウイルススキャンエンジンを有効にするenableことができる。このシステムの完全スキャンは、完全なアプリケーション依存関係ネットワークの一部ではない、残りのオブジェクトおよびオブジェクト間の関係だけでなく、クライアントコンピュータに既にインストールされているすべてのアプリケーションのためのアプリケーション依存関係ネットワークローカルアプリケーション依存関係ネットワークを返す。図1は、この別の方法を示すフロー図である。この方法の主なステップは次のとおりである:A1.クライアントコンピュータは、オブジェクトパスにより定義されている入力オブジェクトで始まる。これはシステム上の任意のオブジェクト、または知的な方法で選択されたオブジェクト、例えば、a.exeファイルである場合がある。A2.クライアントコンピュータは、入力オブジェクトに依存する他のオブジェクトのすべての検索を実行する。例えば、上記の特定の例を使用して、Firefoxアプリケーションパス上で実行される検索は、.xht拡張子レジストリキーがFirefoxアプリケーションに依存していることがわかるであろう。A3.クライアントコンピュータは検索から結果があるかどうかを判定する。A4.結果が得られた場合、クライアントコンピュータは、これら他のオブジェクトのパスおよびそれらのオブジェクト間の関係を結果ファイルに格納する。次いで、それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対するA1からA4のステップが、再帰的に繰り返される。したがって、依存関係ネットワーク内のオブジェクトのすべてが見つかるまで検索は、分岐する。依存オブジェクトの検索は、通常一連の規則に従う、例えば:A5.ステップA3でそれ以上の結果が返されない場合、クライアントコンピュータは結果ファイル内のオブジェクトパスを正規化する前述のとおり。この結果ファイルの内容は、アプリケーション依存関係ネットワークである。この内容は、完全なアプリケーション依存関係ネットワークの一部ではない正規化されたオブジェクトパスおよびオブジェクト間の関係であってもよいが、この段階ではローカルアプリケーション依存関係ネットワークとして識別されることになる。システム全体のスキャン中、関心となるオブジェクトのすべてが少なくとも1つの依存関係ネットワークに追加されるまで、この方法のステップは繰り返される図1の破線の矢印で示されるとおり。もちろん、いくつかのアプリケーション依存関係ネットワークは1つだけまたは少数のオブジェクトパスを含んでいてもよく、例えば、これらのオブジェクトは不完全なアンインストール操作後に残っているフラグメントである。図2は、アンチウイルススキャン方法の第2段階を示すフロー図である。行われるステップは次のとおりであり、図2の左側のステップはクライアントコンピュータで実行され、図2の右側のものは中央サーバーで実行される:B1.第2段階は、クライアントコンピュータが中央サーバーに送信する、段階1で識別されたローカルアプリケーション依存関係ネットワークの最初を選択することにより開始する。B2.中央サーバーは、ローカルアプリケーション依存関係ネットワークに一致するエントリを既知の信頼できるアプリケーション依存関係ネットワークのデータベースで検索し、それに応じてローカルアプリケーション依存関係ネットワークが既知の信頼できる、または不明であるかどうかの通知をクライアントコンピュータに返信する。B3.クライアントコンピュータが既知の信頼できる通知を受信した場合、段階1で規定されるように、アンチウイルススキャンエンジンは、さらに選択したローカルアプリケーション依存関係ネットワークのための方法をステップB1で再び開始することができる図2の破線の矢印で示される。B4.クライアントコンピュータが未知の通知を受信した場合、アンチウイルススキャンエンジンはステップB5に進む。B5.次いで、アンチウイルススキャンエンジンは、従来のアンチウイルススキャン例えば、アプリケーションバイナリチェックおよび/またはヒューリスティック分析を採用するをローカルアプリケーション依存関係ネットワークが対応しているアプリケーション上で開始する。B6.アンチウイルススキャンエンジンは、アプリケーションが正規品であるかどうかをステップB5における従来のアンチウイルススキャンから判定する。B7.次いで、アプリケーションが正規品であると判断された場合、クライアントコンピュータは、既知の信頼できるアプリケーション依存関係ネットワークのデータベースのエントリとして未知のアプリケーション依存関係ネットワークが順番に追加されるまたは、中央サーバーでのさらなる分析に基づいて、および/またはすべてのユーザーから集められたレスポンスに基づいて、それが含まれると考慮するメッセージを中央サーバーに送信する。B8.アプリケーションがステップB5において正規品と判断されない場合、アンチウイルススキャンエンジンは、ローカルアプリケーション依存関係ネットワーク内のオブジェクトパスのいずれかが他のローカルアプリケーション依存関係ネットワークで共有されているかどうかを判定する。B9.共有オブジェクトのパスが存在しない場合、アンチウイルススキャンエンジンは、アプリケーション依存関係ネットワーク内のパスにより識別されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にする。B10.共有オブジェクトのパスが存在する場合、アンチウイルススキャンエンジンは、共有されていないアプリケーション依存関係ネットワーク内のパスにより識別されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にし、共有されるオブジェクトを残す。上記のように第2段階でアンチウイルススキャンエンジンにより使用される方法は、かなり多くの従来のアプリケーションバイナリチェックを実行するために、およびヒューリスティック分析技術を実行するために要する時間を顕著に削減する。ここで、アンチウイルススキャンエンジンはアプリケーション上で完全な従来のアンチウイルススキャンが必要かどうかを最初に迅速に判断することができ、それが既知の信頼できるアプリケーションが原因でない場合、その後、速やかに別のアプリケーションに移動することができる。この方法はまた、その依存関係ネットワークにより識別される悪意のあるアプリケーション全体がシステムから除去される高品質な除去プロセスを提供すし、悪意のあるアプリケーションのすべてのコンポーネントが削除されていることを確実にする。方法の第2段階図2では、中央サーバーが、クライアントコンピュータから送信されたローカルアプリケーション依存関係ネットワークと一致するエントリを既知の信頼できないアプリケーション依存関係ネットワークのデータベースで検索を開始するステップを含んでいてもよい。一致するエントリが見つかった場合、その後、サーバーはローカルアプリケーション依存関係ネットワークを既知の信頼できないものとして識別する通知をクライアントコンピュータに送信する。次いで、アンチウイルススキャンエンジンは、上記のようにステップB8からB10に従ってアプリケーションを除去することができる。一致するエントリが既知の信頼できないアプリケーション依存関係ネットワークのデータベースで見つからない場合、その後サーバーはローカルアプリケーション依存関係ネットワークを不明として識別する通知をクライアントコンピュータに送信する。次いで、アンチウイルススキャンエンジンは、ローカルアプリケーション依存関係ネットワークが対応しているアプリケーション上で従来のアンチウイルススキャン例えば、アプリケーションのバイナリチェックおよび/またはヒューリスティック分析を使用するを開始する。アンチウイルススキャンエンジンが、アプリケーションが正規品でないことを従来のアンチウイルススキャンから判断した場合、クライアントコンピュータは、既知の信頼できないアプリケーション依存関係ネットワークのデータベースにエントリとして未知のアプリケーション依存関係ネットワークを順番に追加することを考慮するメッセージを中央サーバーに送信する。次いで、アンチウイルスエンジンは、ステップB8からB10に従って上記のようにアプリケーションを除去することができる。このさらなる実施形態は、ステップB1からB10で説明した第2段階の方法の代替として、またはそれと合せて使用することができる。これはアプリケーションのバイナリ証明書をチェックし、ヒューリスティック分析技術を実行するより多くの従来の方法を実行するのに要する時間をさらに削減するようにB1からB10の方法と合せて使用することが好ましいであろう。悪意のあるソフトウェアと同様に、コンピュータシステムに影響を与える別の問題は、失われたフラグメントである。時にはオーファンファイルとして知られている失われたフラグメントは、データファイル、ダウンロードされたアップデート、およびアプリケーションがコンピュータシステムからアンインストールされた後、またはアプリケーションが正しくインストールされていない場合に後に残ることがあるアプリケーションの他のフラグメントである。これらの失われたフラグメントは時間をかけて増大することがあり、大量のディスク領域を占有することがあり、ユーザーが利用できる有用なストレージ容量を削減することがある。失われたフラグメントは、しばしばどのアプリケーションに属しているかが明確ではないので、常に検出することが容易ではない。さらに、最初は1つのアンインストールされたアプリケーションからの失われたフラグメントであると見えるかもしれないものが、実際にはまだコンピュータシステムにインストールされている1つまたは複数の他のアプリケーションと共有されているオブジェクトである場合がある。このことは、ユーザーが、別のアプリケーションが動作を停止する可能性がある何かを除去するのを恐れてフラグメントを削除したくない場合があるので、失われたフラグメントを削除することを困難にする。クライアントコンピュータ上での失われたフラグメントは、上記のように第1段階でアンチウイルススキャンエンジンにより拾い上げられた完全なアプリケーション依存関係ネットワークの一部ではない残りのオブジェクトのパスおよびオブジェクト間の関係に対応する。第1段階の終わりに、それらは通常のローカルアプリケーション依存関係ネットワークとして識別される。図3は、失われたフラグメントをも検出し除去する、悪意のあるソフトウェアの検出と除去を行う強化されたプロセスを示すフロー図である。行われるステップは上述したB1からB10と同じであるが、ステップB3はC2により置換され、追加のステップC1およびC3が、ステップB2の後に導入される。追加のステップは以下のように行われる:C1.サーバーが一致するエントリをステップB2で見つけた後に、サーバーは、データベース内の既知のアプリケーション依存関係ネットワーク内で識別されるすべての予測されるアプリケーションの実行可能ファイルおよびモジュールがローカルアプリケーション依存関係ネットワークに存在するかどうかを判断するために検証チェックを行う。次いで、サーバーは、ローカルアプリケーション依存関係ネットワークが既知の信頼できる、および完全な、または既知の信頼できる、しかし不完全なかどうかの通知をクライアントコンピュータに返信する。C2.クライアントコンピュータが既知の信頼できる、および完全な通知を受信した場合、段階1で規定されるようにアンチウイルススキャンエンジンは、さらに選択したローカルアプリケーション依存関係ネットワークのための方法をステップB1で再び開始することができる図3の破線の矢印で示されるように。C3.クライアントコンピュータが既知の信頼できる、しかし不完全な通知を受信した場合、上述したようにアンチウイルススキャンエンジンは、ステップB8からB10に従って失われたフラグメントを除去することができる。あるいは、ステップC3の後、ユーザーはステップB8からB10に進む前に、失われたフラグメントが削除される、またはされないかどうかの最終判断を下すことを求められる場合がある。図4は、本発明の実施形態によるコンピュータシステムを概略的に示す。コンピュータシステムは、インターネットまたはLANなどのネットワーク3を介して中央サーバー2に接続される少なくとも1つのクライアントコンピュータ1を備える。このクライアントコンピュータ1は、コンピュータのハードウェアおよびソフトウェアの組み合わせとして実装することができる。クライアントコンピュータ1は、メモリ4、プロセッサ5、およびトランシーバ6を備える。メモリ4は、プロセッサ5により実行される各種プログラム/実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット7を提供する。メモリ4に格納されるとともにプロセッサ5により実行されるプログラム/実行可能ファイルは、システムスキャナ8、結果ハンドラ9、およびポリシングユニット10を含み、それらすべてがアンチウイルススキャンエンジン11のサブユニットであり得る。トランシーバ6は、ネットワーク3を介して中央のアンチウィルスサーバー2と通信するのに使用される。一般に、クライアントコンピュータ1は、デスクトップパーソナルコンピュータPC、ラップトップ、パーソナルデータアシスタントPDAまたはモバイル電話、または任意の他の適切なデバイスのいずれであってもよい。中央サーバー2は、典型的にはクライアントコンピュータ1上で走るアンチウイルススキャンエンジン11のプロバイダーにより運営される。あるいは、中央サーバー2は、ネットワーク管理者またはスーパーバイザーのそれであってもよく、クライアントコンピュータ1は、スーパーバイザーが担当するネットワークの一部である。中央サーバー2は、コンピュータのハードウェアおよびソフトウェアとの組み合わせとして実装することができる。中央サーバー2は、メモリ19、プロセッサ12、トランシーバ13およびデータベース14を備える。メモリ19は、プロセッサ12により実行される各種プログラム/実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット18を提供する。メモリ19に格納されるとともに、プロセッサ12により実行されるプログラム/実行可能ファイルは、システムスキャナ16および依存関係ネットワークコンパレータ17を含み、それらのどちらもアンチウイルスユニット15のサブユニットであり得る。これらのプログラム/ユニットは、クライアントコンピュータ1で実装されるそれらのプログラムと同じであってもよく、またはクライアントコンピュータ1で実装されるプログラムとインターフェースおよび協働することのできる異なるプログラムであってもよい。トランシーバ13は、ネットワーク3を介してクライアントコンピュータ1との通信に使用される。データベース14は、既知のアプリケーション依存関係ネットワークを格納し、さらにマルウェア定義データ、ヒューリスティック分析ルール、ホワイトリスト、ブラックリストなどを格納してもよい。データベース14は、クライアントコンピュータ上の第1段階で上記のようにアプリケーション依存関係ネットワークを識別する方法を使用しているサーバーにより既知のアプリケーション依存関係ネットワークを事前設定することができる。これらの方法は非常に正確であるが、実用的なサイズにまでデータベースを構築するために必要なインストーラの数を見つけるだけでなく、対応するアプリケーションの依存関係ネットワークをキャプチャするために、それぞれのインストーラを介して実行する大量の労力を必要とするであろう。あるいは、データベース14は、情報をクラウドソーシングすることにより既知のアプリケーション依存関係ネットワークを事前設定できる。多数の分散クライアントがクライアントコンピュータからローカルアプリケーション依存関係ネットワークを提示する場合は、クラウドソーシングを使用することができる。サーバー2は、トランシーバ13を介してローカルアプリケーション依存関係ネットワークを受信し、メモリ11にそれを格納して多数の分散クライアントから提示された複数の同一ネットワークをグループ化する。いずれかの特定のアプリケーションの提示の数があらかじめ定義された数に達すると、サーバー2は、ローカルアプリケーション依存関係ネットワークが有効であることを示し、それを既知のアプリケーション依存関係ネットワークのデータベース14に入力する。データベース14はこれらの方法の組み合わせを使用して事前設定されることが所期される。様々な修正が、本発明の範囲から逸脱することなく、上述した実施形態になされ得ることが当業者には理解されるであろう。