(57)【要約】      （修正有）【課題】プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法を提供する。【解決手段】方法は、コンピュータ上で実行中の実行可能ファイルからプロセスが起動されたことを検出し、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、メモリ領域の中のアドレスがアクセスされたことを検出し、アドレス空間の近傍の範囲内のメモリ領域を解析して、他の１つの実行可能イメージがメモリ領域内に存在するか否かを判定し、当該他の１つの実行可能イメージが悪意あるコードを含んでいるか否かを判定し、当該他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが信頼できるプロセスのアドレス空間内に含まれていると結論づけ、アドレス空間内の悪意あるコードの、除去、停止、および隔離のうち、１つを実行する。【選択図】図２
2019067372.tif 000002
【特許請求の範囲】
【請求項１】
プロセスのアドレス空間内の悪意あるコードを検出するための方法であって、
コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、
前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出することと、
前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の１つ以上のメモリ領域を解析して、他の１つの実行可能ファイルを表現する他の１つの実行可能イメージが前記１つ以上のメモリ領域内に存在するか否かを判定することと、
前記他の１つの実行可能イメージを解析して、前記他の１つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、
前記他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記信頼できるプロセスの前記アドレス空間内に含まれていると結論づけることと、
前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、１つを実行することと、を含むことを特徴とする、方法。
【請求項２】
前記起動を検出することは、
前記プロセスを起動する関数をインターセプトすることと、
前記プロセスの識別情報を判定することと、
前記識別情報に基づいて、疑わしいアクティビティに関連する前記アドレス空間を判定して、アクセスすることと、を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記１つ以上のメモリ領域が信頼できる領域を含まない場合、前記１つ以上のメモリ領域が疑わしいと結論づけることをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項４】
前記信頼できる領域は、
前記アドレス空間内の前記実行可能イメージの近傍と、
既知の実行可能ファイルのイメージの近傍と、
前記アドレス空間内の既知のアドレスの近傍とのうちの１つ以上を含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記近傍は、前記実行可能イメージの先頭アドレスから第１所定数バイト以内であり、前記実行可能イメージの最終アドレスから第２所定数バイト以内であることを特徴とする、請求項４に記載の方法。
【請求項６】
前記メモリ領域に関するページ情報の問い合わせを行うことによって、前記実行可能イメージの近傍の境界を判定することをさらに含むことを特徴とする、請求項４に記載の方法。
【請求項７】
前記アドレス空間へのアクセスを検出することは、
前記アドレス空間内のメモリアドレスが前記信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することを含むことを特徴とする、請求項１に記載の方法。
【請求項８】
前記プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使って、前記スタック上のアドレスを検索することをさらに含むことを特徴とする、請求項７に記載の方法。
【請求項９】
前記アドレス空間にアクセスすることは、CreateThread関数、CreateProcess関数、および、WriteFile関数のうちの１つ以上を呼び出すことを含むことを特徴とする、請求項１に記載の方法。
【請求項１０】
前記アクセスを検出することは、前記１つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することを含むことを特徴とする、請求項９に記載の方法。
【請求項１１】
悪意あるコードのシグネチャを収容する悪性コードシグネチャデータベースと、
コンピュータシステムと、
を備える悪意あるコードを検出するためのシステムであって、
前記コンピュータシステムは、
コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出し、
前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出し、
前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の１つ以上のメモリ領域を解析して、他の１つの実行可能ファイルを表現する他の１つの実行可能イメージが前記１つ以上のメモリ領域内に存在するか否かを判定する、
インターセプトモジュールと、
前記他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記プロセスの前記アドレス空間内に含まれていると判定し、
前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、１つを実行する、
セキュリティモジュールと、
を備えることを特徴とする、システム。
【請求項１２】
前記インターセプトモジュールは、
前記プロセスを起動する関数をインターセプトすることと、
前記プロセスの識別情報を判定することと、
前記識別情報に基づいて、疑わしいアクティビティに関連する前記アドレス空間を判定して、アクセスすることと、によって、
前記起動を検出することを特徴とする、請求項１１に記載のシステム。
【請求項１３】
前記セキュリティモジュールは、さらに、前記１つ以上のメモリ領域が信頼できる領域を含まない場合、前記１つ以上のメモリ領域が疑わしいと結論づけることを特徴とする、請求項１１に記載のシステム。
【請求項１４】
前記信頼できる領域は、
前記アドレス空間内の前記実行可能イメージの近傍と、
既知の実行可能ファイルのイメージの近傍と、
前記アドレス空間内の既知のアドレスの近傍とのうちの１つ以上を含むことを特徴とする、請求項１３に記載のシステム。
【請求項１５】
前記近傍は、前記実行可能イメージの先頭アドレスから第１所定数バイト以内であり、前記実行可能イメージの最終アドレスから第２所定数バイト以内であることを特徴とする、請求項１４に記載のシステム。
【請求項１６】
前記インターセプトモジュールは、さらに、前記メモリ領域に関するページ情報の問い合わせを行うことによって、前記実行可能イメージの近傍の境界を判定することを特徴とする、請求項１４に記載のシステム。
【請求項１７】
前記インターセプトモジュールは、前記アドレス空間内のメモリアドレスが前記信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することによって、前記アドレス空間へのアクセスを検出することを特徴とする、請求項１１に記載のシステム。
【請求項１８】
前記インターセプトモジュールは、さらに、前記プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使うことによって、前記スタック上のアドレスを検索することを特徴とする、請求項１７に記載のシステム。
【請求項１９】
前記アドレス空間にアクセスすることは、CreateThread関数、CreateProcess関数、および、WriteFile関数のうちの１つ以上を呼び出すことを含むことを特徴とする、請求項１１に記載のシステム。
【請求項２０】
ドライバを使用することと、
前記１つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することのうち、
いずれか一方によって、前記アドレス空間への前記アクセスを検出することをさらに含むことを特徴とする、請求項１９に記載のシステム。
【請求項２１】
プロセッサによって実行されたときに、悪意あるコードを検出するための方法を実行する命令を記憶したコンピュータ読み取り可能な媒体であって、前記方法は、
コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、
前記信頼できるプロセスのアドレス空間内にあり、前記信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレス空間がアクセスされたことを検出することと、
前記コンピュータシステム内の前記疑わしいアドレス空間の近傍の範囲内の１つ以上のメモリ領域を解析して、他の１つの実行可能ファイルを表現する他の１つの実行可能イメージが前記１つ以上のメモリ領域内に存在するか否かを判定することと、
前記他の１つの実行可能イメージを解析して、前記他の１つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、
前記他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが前記信頼できるプロセスの前記アドレス空間内に含まれていると結論づけることと、
前記信頼できるプロセスの前記アドレス空間内の前記悪意あるコードの、除去、停止、および隔離のうち、１つを実行することと、を含むことを特徴とする、コンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にコンピュータセキュリティ分野に関し、より具体的には、プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法に関する。
【背景技術】
【０００２】
悪意あるコードや悪意あるファイルを検出するための、ウィルス対策アプリケーションなどのソフトウェアは絶えず改良されている。そのようなソフトウェアは、例えば、信頼できないアプリケーションが実行されることを防止することによって、コンピュータシステムに付与されるセキュリティの品質を向上させるために、アプリケーションコントロール用のモジュールと協調する（または、そのようなモジュールを内蔵している）ことが多い。アプリケーションコントロールモジュールは、一般に、アプリケーションのホワイトリストとブラックリストを使用して、許可されたアプリケーションと禁止されたアプリケーションとを識別する。ウィルス対策アプリケーションは、ブラックリスト上のファイルまたはアプリケーションを、悪意あるものと認識し、一方、ウィルス対策アプリケーションは、ホワイトリスト上のファイルを、コンピュータシステムにとって「信頼できる」ものとみなし、それ以上検査しない。このようなリストを使用すると、ウィルス対策アプリケーションは、シグネチャ解析、ヒューリスティック分析、挙動解析などの活用を含む、入手可能なあらゆる方法を用いて１つ１つのファイルを検査する必要がないため、ウィルス対策アプリケーションによってセキュリティを付与する際のコンピュータシステムの負荷が大幅に軽減される。
【０００３】
しかし、ホワイトリストに含まれている信頼できるファイルから起動される動作やプロセスのすべてがコンピュータシステムに対して無害であるとは限らない。最新の悪意あるプログラムは、信頼できるプロセスのアドレス空間内に自分自身を埋め込み、信頼できるプロセスのアドレス空間から、悪意あるコードを実行する可能性がある。信頼できるプロセスのアドレス空間からのコードに関しては、ウィルス対策アプリケーションは解析（例えば、シグネチャ解析やヒューリスティック分析）を実行しないため、そのような悪意あるコードの実行は、ウィルス対策アプリケーションによって検出されない（したがって、ブロックされない）。
【０００４】
一方、悪意あるコードに対応するプロセスのアドレス空間内のメモリリージョンを検出する方法は、コンピュータシステムのメモリの走査を伴うため、大量の計算リソースを必要とする。本開示は、プロセスのアドレス空間内の悪意あるコードの検出の課題に、より効果的に対処する態様を提供する。
【発明の概要】
【０００５】
そこで、本出願は、コンピュータセキュリティを向上させるためのシステムおよび方法、特に、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法を開示する。
【０００６】
本開示の一態様によれば、プロセスのアドレス空間内の悪意あるコードを検出するための方法は、コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出することと、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出することと、コンピュータシステム内の疑わしいアドレス空間の近傍の範囲内の１つ以上のメモリ領域を解析して、他の１つの実行可能ファイルを表現する他の１つの実行可能イメージが１つ以上のメモリ領域内に存在するか否かを判定することと、当該他の１つの実行可能イメージを解析して、当該他の１つの実行可能イメージが悪意あるコードを含んでいるか否かを判定することと、当該他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードが信頼できるプロセスのアドレス空間内に含まれていると結論づけることと、信頼できるプロセスのアドレス空間内の悪意あるコードの、除去、停止、および隔離のうち１つを実行することと、を含む。
【０００７】
態様のその他の例によれば、本方法において、起動を検出することは、プロセスを起動する関数をインターセプトすることと、プロセスの識別情報を判定することと、識別情報に基づいて、疑わしいアクティビティに関連するアドレス空間を判定して、アクセスすることと、を含む。
【０００８】
態様のその他の例によれば、本方法は、１つ以上のメモリ領域が信頼できる領域を含まない場合、１つ以上のメモリ領域が疑わしいと結論づけることを含む。
【０００９】
態様のその他の例によれば、本方法において、信頼できる領域は、アドレス空間内の実行可能イメージの近傍と、既知の実行可能ファイルのイメージの近傍と、アドレス空間内の既知のアドレスの近傍とのうちの１つ以上を含む。
【００１０】
態様のその他の例によれば、本方法において、近傍は、実行可能イメージの先頭アドレスから第１所定数バイト以内であり、実行可能イメージの最終アドレスから第２所定数バイト以内である。
【００１１】
態様のその他の例によれば、本方法は、メモリ領域に関するページ情報の問い合わせを行うことによって、実行可能イメージの近傍の境界を判定することを含む。
【００１２】
態様のその他の例によれば、本方法は、アドレス空間内のメモリアドレスが信頼できるプロセスのスタックのために予約されたメモリ領域内に存在するか否かを検出することを含む。
【００１３】
態様のその他の例によれば、本方法は、プロセスが実行されているスレッドに関する情報にアクセスするための関数呼び出しを使って、スタック上のアドレスを検索することを含む。
【００１４】
態様のその他の例によれば、本方法は、１つ以上の関数のそれぞれを呼び出すためのコールバックプロシージャを設定することを含む。
【００１５】
態様のその他の例によれば、悪意あるコードを検出するためのシステムは、悪意あるコードのシグネチャを収容する悪性コードシグネチャデータベース、および、コンピュータシステムを備える。コンピュータシステムは、コンピュータシステム上で実行中の信頼できる実行可能ファイルから、信頼できるプロセスが起動されたことを検出し、信頼できるプロセスのアドレス空間内にあり、信頼できる実行可能ファイルを表現する信頼できる実行可能イメージの境界外に位置するメモリ領域であり、かつ、実行可能メモリ領域である、疑わしいメモリ領域の中の疑わしいアドレスがアクセスされたことを検出し、コンピュータシステム内の疑わしいアドレス空間の近傍の範囲内の１つ以上のメモリ領域を解析して、他の１つの実行可能ファイルを表現する他の１つの実行可能イメージが１つ以上のメモリ領域内に存在するか否かを判定する、インターセプトモジュール、および、他の１つの実行可能イメージが悪意あるコードを含んでいる場合、悪意あるコードがプロセスのアドレス空間内に含まれていると判定して、信頼できるプロセスのアドレス空間内の悪意あるコードの、除去、停止、および隔離のうち、１つを実行する、セキュリティモジュールを備える。
【００１６】
態様のその他の例によれば、コンピュータ読み取り可能な媒体は、本明細書に開示する方法のうち任意のいずれかを実行するための、コンピュータが実行可能な命令を含む命令を格納する。
【００１７】
上記の、態様例の簡単な概要は、本開示の基本的な理解を提供するものである。この概要は、すべての熟考された態様の広範な概説ではなく、すべての態様の鍵となる要素や重要な要素を特定したり、本開示の任意またはすべての態様の範囲を規定したりすることを意図するものではない。その唯一の目的は、１つ以上の態様を、後述する本開示のより詳細な説明への前置きとして、簡易な形で提示することである。上述のことを達成するために、本開示の１つ以上の態様は、特許請求の範囲で説明され、かつ例示的に示される特徴を含んでいる。
【図面の簡単な説明】
【００１８】
本明細書に組み込まれ、その一部を構成する添付図面は、本開示の１つ以上の態様例を図示し、それらの原理および実施例を説明するために、詳細説明とともに供される。
【００１９】
【図１】図１は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出するシステムのブロック図である。
【００２０】
【図２】図２は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出する方法を示すフローチャートである。
【００２１】
【図３】図３は、本開示の態様の一例に係る汎用コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【００２２】
プロセスのアドレス空間内の悪意あるコードを検出するためのシステム、方法、および、システムおよび方法のためのコンピュータプログラム製品に関する態様の例について以下に説明する。以下の説明は、単に例示の目的のためであって、いかなる制限を加えることも意図されていないことは、当業者には理解されるであろう。その他の態様は、本開示から利益を得る当業者には、容易に想起できるであろう。添付図面に示すように、態様例の実施態様が詳細に参照される。同一あるいは類似する項目には、図面および以下の説明を通して、可能な範囲で、同一の参照符号を用いる。
【００２３】
以下の用語は、本開示、図面、および請求の範囲を通して用いられる。
【００２４】
悪意あるアプリケーションは、コンピュータ、または、コンピュータ上に記憶されたデータに害を及ぼす可能性のあるアプリケーションである。悪意あるアプリケーションの例としては、インターネットワーム、キーボードトレーサ、コンピュータウィルスなどがある。及ぼされる害は、コンピュータ上に保存されているデータ等のコンピュータリソースを盗む目的や、データの不正保存、不正な動作や計算の実行等のリソースの不正使用の目的のための、コンピュータリソースに対する不正アクセスでありうる。
【００２５】
信頼できるアプリケーションは、コンピュータやそのユーザに害を及ぼさないアプリケーションである。信頼できるアプリケーションとは、信頼できるソフトウェア製造業者によって開発され、信頼できるソース（例えば、信頼できるサイトに関するデータベースに記載されているサイト）からダウンロードされたアプリケーション、または、信頼できるアプリケーションに関するデータベースに保存されている識別子を持つアプリケーションであるとみなすことができる。信頼できるアプリケーションに関するデータベースには、デジタル証明書等の、製造業者の識別子（例えば、アプリケーションファイルのＭＤ５）が保存されていることもある。
【００２６】
信頼できないアプリケーションは、信頼はできないが、例えば、ウィルス対策アプリケーションを用いても、有害とは認識されないアプリケーションである。信頼できないアプリケーションは、後で、例えば、ウィルス対策スキャンを用いると、有害と認識されることもある。
【００２７】
悪意あるファイルは、悪意あるアプリケーションの構成要素を成し、プログラムコード（実行可能または解釈可能なコード）を収容しているファイルである。
【００２８】
信頼できないファイルは、信頼できないアプリケーションの構成要素を成し、プログラムコード（実行可能または解釈可能なコード）を収容しているファイルである。
【００２９】
信頼できるファイルは、信頼できるアプリケーションの構成要素を成すファイルである。
【００３０】
シグネチャ解析は、悪意あるプログラムの検出を目的として、プログラムコードの特定のセグメントと既知のコード（シグネチャ）の対応関係を、悪意あるプログラムのシグネチャに関するデータベースから発見する技術である。この技術は、悪意あるプログラムのファイルの検出と、コンピューティングデバイス（または、コンピュータシステムと呼ばれる）のランダムアクセスメモリ（ＲＡＭ）内の悪意あるコードの検出の、両方に利用できることに注意すべきである。
【００３１】
ウィルス対策レコードは、ウィルス対策アプリケーションが悪意あるコード、特に、悪意あるファイルを検出するために必要とする情報である。ウィルス対策レコードは、例えば、シグネチャ、ヒューリスティックルール（例えば、ヒューリスティック／プロアクティブ分析で用いることが可能）、ファイルのチェックサムまたはハッシュ（ファイルのわずかな変化に対して不変なファイルハッシュであるフレキシブルあるいは局所性鋭敏型ハッシュを含む）等の形態であってもよい。
【００３２】
スクリプトは、一連のコマンド（命令）であり、一般に、高水準プログラミング言語、または、コンピュータシステムがスクリプトインタープリタを用いて実行するスクリプト言語によって記述される。
【００３３】
一態様によれば、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムは、超小型集積回路（特定用途向け集積回路（ＡＳＩＣ））やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のハードウェアを用いて実現される実世界の装置、システム、構成要素、および構成要素群として実現されてもよく、あるいは、例えば、マイクロプロセッサシステムとプログラムインストラクション一式等の、ソフトウェアとハードウェアの組み合わせの形態で、ニューロシナプティックチップ上に実装されてもよい。そのようなシステムモジュールの機能性は、もっぱらハードウェアとして実現されてもよく、また、システムモジュールの機能性の一部をソフトウェア、一部をハードウェアで実現する組み合わせの形態で実現されてもよい。特定の態様においては、モジュールの一部または全部を汎用コンピュータのプロセッサ（例えば、図３に示すもの）で実行してもよい。システムの構成要素は、単一のコンピューティングデバイス内に、または、複数の相互接続されたコンピューティングデバイスに分散して実現されてもよい。
【００３４】
図１は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出するシステムのブロック図である。システムは以下の構成要素を含む：インターセプトモジュール１１０、セキュリティモジュール１２０、および、悪性コードシグネチャデータベース１３０。システムの要素同士の接続は、図１に示すとおりである。本開示の態様の一例においては、インターセプトモジュール１１０とセキュリティモジュール１２０は、インターセプトモジュール１１０とセキュリティモジュール１２０の両方の機能を実行する単一の手段として実現される。
【００３５】
一態様によれば、実行可能ファイル１１１は、コンピュータシステムを制御するオペレーティングシステム（ＯＳ）上で実行され、具体的には、それによってシステムの構成要素が実現される。インターセプトモジュール１１０は、プロセスの起動を、実行可能ファイル１１１から検出してもよい。実行可能ファイル１１１からプロセスが起動されると、オペレーティングシステム（ＯＳ）は、その中に実行可能ファイル１１１のイメージが発見される、プロセスの仮想アドレス空間１１２（以下、単に「アドレス空間」）を形成する。本開示において、「アドレス空間のメモリ領域」と「アドレス空間内のメモリ領域」の用語は同一であり、交換可能であることは、当業者には認識されるであろう。
【００３６】
実行可能ファイル１１１のイメージ（「実行可能イメージ」と別称されるイメージ）は、プロセスのアドレス空間内に実行可能ファイル１１１を表現したものである。実行可能イメージは、単なるコピーされた実行可能ファイル１１１のバイト表現とは違って、実行可能ファイル１１１のコードを実行するのに十分なものである。いくつかの態様においては、例えば、実行可能ファイルからプロセスが起動された時点で、ＯＳのローダが実行可能ファイルのイメージを形成してもよい。一般に、実行可能イメージは、例えば、実行可能イメージのコード中で使用されているアドレスに（例えば、呼ばれたプロシージャおよびジャンプのアドレス）に対してなされた変更の分だけ、実行可能ファイルそのものとは異なっている。プロセスの起動を検出するプロセスを実行するために、インターセプトモジュール１１０は、プロセスを起動する関数をインターセプトするドライバを含んでもよい。本開示の態様の一例においては、ウィンドウズ（登録商標）ＯＳのCreateProcess関数がプロセスを起動する。プロセスの起動を検出した結果、モジュール１１０はプロセスの一意的な識別子を定める。本開示の態様の一例においては、そのような識別子はPROCESS_INFORMATION構造体であり、そのフィールドには、特に、CreateProcess関数を呼び出した時点で値が割り当てられる。本開示の態様のさらに他の一例においては、この識別子はプロセス記述（プロセスハンドル）であってもよいし、または、プロセス識別子（ＰＩＤ）であってもよい。本開示の態様の一例においては、その後、システムのリソースがプロセス識別子を用いて、ファイル１１１から起動されたプロセスにアクセスしてもよい。一態様においては、システムは、アドレス空間１１２にアクセスすることによってプロセスにアクセスする。
【００３７】
また、インターセプトモジュール１１０は、プロセスの実行中になされた、仮想アドレス空間１１２内の疑わしいメモリアドレスへのアクセスを検出するようにしてもよい。本開示の一態様においては、あるメモリアドレスがプロセスのアドレス空間内の疑わしいメモリ領域に属する場合、そのメモリアドレスは疑わしいとみなされる。一態様によれば、疑わしいメモリ領域とは、そのアドレス空間内の実行可能ファイルのイメージの境界外にあるメモリ領域であり、同時に、実行可能メモリ領域である。あるメモリ領域が実行可能コードを含んでいるが、通常はそのメモリ領域内に実行可能コードは見出されないか、そのようなメモリ領域からのコードは実行されない場合、そのメモリ領域は疑わしいとみなされる。実行可能ファイルの複数のイメージをアドレス空間１１２にロードしてもよい。いくつかの特定例においては、その複数のイメージは実行可能ファイル１１１の１つのイメージ、および、動的ライブラリ（一般に、アドレス空間１１２内の動的ライブラリ用に予約された動的ライブラリ（ＤＬＬ）セクションに見出される）やその他の実行可能ファイルのイメージ等の、実行可能ファイルのその他のイメージを含む。MEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返すVirtualQueryEx関数を呼び出すことによって、疑わしいメモリ領域を判定してもよい。MEMORY_BASIC_INFORMATIONのフィールドの１つであるTypeが上記メモリ領域に関するMEM_IMAGEの値を取る。したがって、いくつかの態様においては、VirtualQueryEx関数を呼び出すことによって、特定のメモリアドレスが実行可能メモリ領域に属するが、実行可能ファイルからロードされたメモリ領域には属さないと判定してもよい。態様の一例においては、疑わしいメモリ領域とは、アドレス空間１１２内の、信頼できるメモリ領域を含まないメモリ領域である。そして、信頼できるメモリ領域とは、アドレス空間内の実行可能ファイル１１１のイメージの近傍や、動的ライブラリ等の既知の実行可能ファイルのイメージ（そのようなイメージのハッシュ識別子やその他のいかなる識別子もリモートサーバのデータベースに保存されてもよい）の近傍や、アドレス空間１１２内の既知のアドレスの近傍であってもよい。
【００３８】
実行可能ファイルのイメージの近傍とは、その境界が実行可能ファイルのイメージの境界から所定距離だけ離れているメモリ領域であり、所定距離とは、例えば、実行可能ファイルのイメージの先頭アドレスからアドレスが減少する方向に５１２バイト、および、実行可能ファイルのイメージの最終アドレスからアドレスが増加する方向に５１２バイトである。以下のようにして、アドレスが近傍であることの判定をすることができる。態様の一例においては、実行可能ファイルのイメージの近傍とは、実行可能ファイルの上記イメージが見出されるメモリの領域に対応するメモリ領域である。領域の境界を決定し、それによって、特定の実行可能ファイルイメージの近傍であるメモリ領域の境界を決定するために、VirtualQueryEx関数を用いてもよい。VirtualQueryEx関数は、メモリリージョンの境界を決定するために必要な情報を含むMEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返す。態様の一例においては、メモリリージョンとは、複数ページから成るメモリ領域であり、例えば、VirtualAllocEx関数を呼び出すことにより、プロセスのアドレス空間１１２内に割り当てられる。既知のアドレスとは、例えば、悪性コードシグネチャデータベース１３０のようなデータベース中に見出されるレコードのアドレスである。既知の実行可能ファイルの先頭および最終アドレスも、例えば、悪性コードシグネチャデータベース１３０のようなデータベースに保存してもよい。コンピュータ技術分野の専門家がアドレス情報をデータベース１３０に保存し、インターセプトモジュール１１０がそのアドレス情報を使って、アドレス空間１１２内のどのメモリ領域が疑わしいかを判定してもよい。
【００３９】
態様の一例においては、メモリアドレスへのアクセスは、メモリアドレスをスタックに書き込むことによって実行される。この場合、インターセプトモジュール１１０は、メモリアドレスがスタック上に（アドレス空間１１２内のスタックのために予約されたメモリ領域内に）存在するか否かを調べることによって、メモリアドレスがアクセスされたか否かを検出する。メモリアドレスがスタック上に存在する場合、プロセスの実行中にスタックがアクセスされたことになる。具体的には、メモリアドレスがスタック上に書き込まれたことになる。本開示の態様の一例においては、インターセプトモジュール１１０は、スタック上のアドレスを検索するためにCaptureStackBackTrace関数を呼び出し、CaptureStackBackTrace関数は、スタック上に位置する値（ポインタ、すなわち、アドレス）を、出力パラメータ、BackTrace配列（より正確には、配列ポインタ）として返す。それによって、上記関数呼び出しによって得られたメモリアドレスへのアクセスがなされたとみなされる。
【００４０】
さらに他の態様においては、インターセプトモジュール１１０は、スタック上のアドレスを検索するために、NtQueryInformationThread関数を呼び出し、それによって、スレッド環境ブロック（ThreadEnvironmentBlock(TEB)）に関する情報を入手することができる。NtQueryInformationThreadを呼び出すと、ThreadInformationClass（例えば、ThreadBasicInformation）のパラメータによって特徴付けられるフォーマットを持つThreadInformation構造体のフィールドに値が書き込まれる。ThreadInformationClassは、その境界内にスタックが（関数を呼び出すスレッドのために）位置するメモリの中のアドレスを含んでいる。プロセッサレジスタ（少なくとも、レジスタespとebp）の値に関する情報とともにスレッド情報を入手して、インターセプトモジュール１１０は、スタック上のメモリアドレス（一例として、具体的に、CaptureStackBackTraceを用いて入手可能なものと類似した呼び出しチェーン）を検出してもよい。
【００４１】
態様の一例においては、スタック上のアドレスはスタック上に位置する数値で、0x00000000から0x8FFFFFFFの範囲に位置する値とみなされる。態様のさらに他の一例においては、スタック上に位置する、一定量（例えば、２バイト）ごとに整列するアドレスのいかなる数値もアドレスであるとみなされる。
【００４２】
本開示の態様の一例においては、インターセプトモジュール１１０は、例えば、プロセスの起動後、５秒ごとのように、所定の周期でスタック上のアドレスを検索することができる。本開示の態様のさらに他の一例においては、インターセプトモジュール１１０は、所定のイベントの期間中にスタック上のアドレスを検索することができる。
【００４３】
本開示の態様の他の一例においては、上記アドレスを引数としてCreateThread関数を呼び出すことによって、そのアドレスへのアクセスが実行される。態様のさらに他の一例においては、CreateProcess関数を呼び出すことによって、アドレスへのアクセスが実行される。本開示の態様のさらに他の一例においては、WriteFile関数を呼び出すことによって、アドレスへのアクセスが実行される。上記関数の１つを呼び出すことによって、インターセプトモジュール１１０は、例えば、ドライバの使用や、CreateThreadやCreateProcess等の対応する関数の呼び出しのためのコールバックプロシージャ（またはフック）の指定等の、従来技術において公知の何らかの方法を用いて、アクセスを検出してもよい。
【００４４】
本開示の態様の一例においては、実行可能ファイル１１１は信頼できるファイルであり、この場合、システムの構成要素は、信頼できるファイルのアドレス空間１１２内の悪意あるコードを検出するように設計されている。本開示の態様の一例においては、信頼できるファイル１１１は、PowerShell等の、スクリプトインタープリタのファイルである。PowerShellスクリプトは、インタープリタによって提供される能力を用いて、実行可能ファイル（悪意あるファイルかも知れない）をダウンロードし、それらのファイルを、このために特別に設けられたアドレス空間１１２内のメモリ領域に保存し（コンピュータステムのハードディスク等の記憶装置にはファイルを保存せず）、ＯＳローダ（ＯＳの一部であり、実行可能ファイルローダと呼ばれることもある）の全関数を実行することができるため、PowerShellのアドレス空間１１２内の悪意あるコードを検出する必要がある。したがって、Powershell内では、メモリにロードされた実行可能ファイルは、実行に供することができる実行可能ファイルイメージに変換可能であり、ダウンロードされたファイルから実行可能コードに制御が渡される可能性がある。このように、「ファイルレス」マルウェアを使った、コンピュータシステムへの攻撃を実行することが可能であり、その場合、悪意ある実行可能ファイルが、コンピュータシステムのデータ記憶装置に保存されることなく、信頼できるプロセスのアドレス空間１１２内のＲＡＭにダウンロードされ、従来技術において公知の手法を使って悪意あるコードを検出することは困難となる。
【００４５】
セキュリティモジュール１２０は、インターセプトモジュール１１０と、悪性コードシグネチャデータベース１３０に、接続されている。セキュリティモジュール１２０はプロセスのアドレス空間１１２内のメモリ領域を解析するように設計されている。この解析の目的は、アドレス空間１１２内、特に、上記メモリ領域内において、実行可能ファイルイメージを検出することである。本開示の態様の一例においては、セキュリティモジュール１２０は、特定のメモリアドレスの近傍の実行可能ファイルイメージを検出することができ、本開示の１つの特定の態様においては、このメモリアドレスは疑わしいメモリアドレスである。メモリアドレスの近傍とは、その境界がメモリアドレスから所定距離だけ離れているメモリ領域のことであり、所定距離とは、例えば、メモリアドレスからアドレスが減少する方向に６４ｋバイト、および、アドレスが増加する方向に６４ｋバイトである。したがって、アドレス0x00600000の近傍の一例として、プロセスのアドレス空間１１２において、0x005FFE00と0x00610000の間に位置するアドレス空間１１２内のメモリ領域が挙げられる。他の態様においては、メモリアドレスの近傍とは、そのメモリアドレスが見出されるメモリリージョン（このリージョンである）に対応するメモリ領域のことである。リージョンの境界、および、ひいては、特定のメモリアドレスの近傍のメモリ領域の境界を決定するために、メモリリージョンの境界の決定に必要な情報を含むMEMORY_BASIC_INFORMATIONデータ構造体へのポインタを返すVirtualQueryEx関数を使用してもよい。本開示の態様の一例においては、以下の条件が満たされる場合、セキュリティモジュール１２０はメモリ領域内の（例えば、所定のアドレスの近傍の）実行可能ファイルイメージを検出する。その条件とは、メモリ領域が実行可能ファイル、具体的には、例えば、ウィンドウズ（登録商標）ＯＳの実行可能ファイルのヘッダを含み、メモリ領域が、符号にすると「MZ」のように見えるバイト列を含み、それによって、この文字列の先頭から0x3Cだけ離れたメモリ位置に４バイト（DWORD）の配列が見出され、その値を文字列「MZ」の先頭アドレスに加えると、符号にすると「PE」のように見えるバイト列が見出されるメモリアドレスが得られる場合、そのメモリ領域は実行可能ファイルのヘッダを含む。
【００４６】
アドレス空間１１２内の実行可能ファイルイメージの検出には、特に、メモリ領域ＰＥ内のヘッダやその一部の検出に基づく、その他の任意の従来技術の手法や、その他の方法を用いることができることに注目すべきである。
【００４７】
態様の一例においては、メモリ領域またはアドレス空間１１２全体の中から実行可能ファイルイメージを検出すると、セキュリティモジュール１２０は、検出された実行可能ファイルのイメージの先頭アドレスの決定も行う。
【００４８】
セキュリティモジュール１２０はプロセスのアドレス空間１１２内の悪意あるコードを検出することもできる。悪意あるコードのセキュリティモジュール１２０による検出は、アドレス空間１１２内、特に、アドレス空間１１２内に存在する実行可能ファイルの検出されたイメージの中で実行される。態様の一例においては、セキュリティモジュールは、悪意あるコードがアドレス空間１１２内に存在することだけでなく、実行可能ファイルイメージがどのように悪意あるコードを収容しているのかを正確に検出する（すなわち、悪意ある実行可能ファイルのイメージを検出する）。アドレス空間１１２内の悪意ある実行可能ファイルのイメージを検出すると、セキュリティモジュール１２０は、その悪意あるファイルのイメージに関連するメモリから、データを、特に、その先頭が、検出された悪意あるファイルのイメージの先頭アドレスであるとすでに判定されたメモリ領域に存在するデータを、除去することができる。このように、プロセスのアドレス空間１１２から悪意あるコードを、特に、悪意ある実行可能ファイルのイメージ（具体的にはイメージのデータ）を除去することによって、コンピュータシステムのセキュリティを確保することができる。
【００４９】
悪意あるコードを検出する処理の過程で、例えば、シグネチャ、ヒューリスティック、その他任意の種類の解析を用いることができる。セキュリティモジュール１２０は、悪意あるコードの検出のために、悪性コードシグネチャデータベース１３０に保存されているウィルス対策レコードを使用する。
【００５０】
悪性コードシグネチャデータベース１３０は、セキュリティモジュール１２０が悪意あるコードの検出のために用いるウィルス対策レコードを保存する。本開示の態様の一例においては、それらのレコードはシグネチャである。
【００５１】
図２は、本開示の態様の一例に係る、プロセスのアドレス空間内の悪意あるコードを検出する方法を示すフローチャートである。ステップ２０１において、インターセプトモジュール１１０を使用して、実行可能ファイル１１１からプロセスが起動され、それによって、コンピュータシステムのＲＡＭ内の（一般的にＯＳローダ等のＯＳコンポーネントによる）プロセスの作成と同時にアドレス空間１１２が形成されたことが、検出される。本開示の態様の一例においては、実行可能ファイル１１１は信頼できる実行可能ファイルである。本開示の態様の一例においては、信頼できる実行可能ファイル１１１は、PowerShell等の、スクリプトインタープリタの実行可能ファイルである。実行可能ファイル１１１からのプロセスの起動を検出した後、ステップ２０２において、インターセプトモジュール１１０は、上記方法の１つを用いて、実行可能ファイル１１１から起動されたプロセスが実行される間、アドレス空間１１２内の疑わしいアドレスへのアクセスを検出する。疑わしいアドレスへのアクセスを検出したら、インターセプトモジュール１１０は、セキュリティモジュール１２０に、メモリ中のどのアドレスが疑わしいかを示すとともに、疑わしいアドレスへのアクセスが検出されたことを通知する。その後、ステップ２０３において、セキュリティモジュール１２０は、少なくとも１つの、そこへのアクセスが実行可能ファイル１１１から起動されたプロセスの実行期間中にすでに検出されている疑わしいアドレスの近傍の、アドレス空間１１２内メモリ領域を解析する。この解析の目的は、アドレス空間１１２内、特に、疑わしいアドレスの近傍のメモリ領域内において、他の実行可能ファイルからダウンロードされた実行可能ファイル（コンピュータシステムの記憶装置内に存在するとは限らないが、ＲＡＭの中には存在する）のイメージを検出することである。言い換えれば、セキュリティモジュール１２０は、ファイル１１１以外のファイルが、アドレス空間１１２内にイメージを持つか否かを判定するために、解析を実行する。例えば、プロセスが、プロセスに渡されたスクリプト（「スクリプトファイル」と呼ばれることもある）が、例えば、コマンドラインのパラメータとして、あるいは、その他の方法で処理される、PowerShellスクリプトインタープリタの実行可能ファイルから起動された場合、そのような他のファイルのイメージが、プロセスの実行中に、アドレス空間１１２内にロードされる可能性がある。そのスクリプトに従って（そのスクリプトの命令を解釈することにより）、スクリプトインタープリタのプロセスはネットワークからファイル（上記の「他の」ファイル）をロードし、そのイメージをアドレス空間１１２内に形成する。他の実行可能ファイルからロードされた実行可能ファイルのイメージが検出されなかった場合、ステップ２０６において、プロセスのアドレス空間内の悪意あるコードを検出する方法は終了する。一方、少なくとも１つの実行可能ファイルイメージが検出された場合、ステップ２０７において、セキュリティモジュール１２０は、アドレス空間１１２内の、特に、その実行可能ファイルイメージがダウンロードされたメモリ領域内の悪意あるコードを検出するため���、検出された実行可能ファイルイメージを解析する。悪意あるコードが検出されなかった場合、この方法の動作はステップ２０９で終了する。検出された場合、ステップ２１０において、セキュリティモジュール１２０は、ファイル１１１から起動されたプロセスのアドレス空間１１２内の悪意あるコードを検出する。
【００５２】
特に、従来技術によって公知のプロトタイプは、解析されるメモリ領域の位置に無関係に、シグネチャを用いた、メモリ領域内の悪意あるコードの検索を必要とするため、上記の方法は、セキュリティを付与するために使われるコンピュータシステムのリソースの消費の削減を可能にすることに注目すべきである。本提案の方法においては、悪意あるコードを検出するステップの前に、悪意あるコードを含んでいる可能性のある実行可能ファイルイメージが存在するかも知れないメモリ領域に属する疑わしいアドレスへのアクセスを検出するステップが実行される。そのようなアクセスを検出した後で初めて、メモリ領域内の悪意あるコード（特に、悪意ある実行可能ファイルのイメージ）を検出するステップが実行される。したがって、プロセスの実行時には、そのアドレス空間１１２内の悪意あるコードを検出するための解析は、特定の場合に限って実行され、それによって、プロセスのアドレス空間内の悪意あるコードを検出するシステムの手段が作動するコンピュータシステムのリソースの消費が削減される。
【００５３】
本開示の態様の一例においては、実行可能ファイル１１１から起動されたプロセスのアドレス空間１１２内の悪意あるコードを検出した後は、セキュリティモジュール１２０は、そのアドレス空間１１２内に悪意あるコードが発見されたプロセスの実行を停止することができる。このようにして、セキュリティモジュール１２０は悪意あるコードの実行を防止し、それによって、本開示の構成要素やシステムが機能し、かつ、実行可能ファイル１１１から起動されたプロセスが実行されるコンピュータシステムにセキュリティを付与する。
【００５４】
態様のさらに他の一例においては、セキュリティモジュール１２０は、他の実行可能ファイルの少なくとも１つの検出されたイメージを、セキュリティモジュール１２０の一部であるネットワークドライバを用いてダウンロードしたダウンロード元のＵＲＩ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ、特にＵＲＬ、または、ネットワークアドレス）（このＵＲＩを「危険ＵＲＩ」と呼ぶ）に関する情報を保存するとともに、この危険ＵＲＩに関する情報、特に、ＵＲＩの記号表示、または、ＵＲＩの記号表示から計算されたハッシュを、リモートセキュリティサーバ（図示しない）に送信する。以後、コンピュータシステム上にあるセキュリティモジュール１２０、および、他のコンピュータ装置（リモートセキュリティサーバからＵＲＩに関する情報を入手することもできる）に展開された類似のセキュリティモジュール１２０は、この、他の実行可能ファイルのダウンロード元の危険ＵＲＩに関する情報（コンピュータシステムにローカル保存しても、リモートセキュリティサーバに保存してもよい）を、特定のプロセスによって確立されたこれらの危険ＵＲＩとの接続を遮断するために使用することができる。このように、セキュリティモジュール１２０が機能するコンピュータシステムのセキュリティが確保され、そのコンピュータシステム上では、危険ＵＲＩとの接続を確立したり、そこからデータ、特に、実行可能ファイルをダウンロードするようなプロセスを実行することができないようにする。
【００５５】
態様のさらに他の一例においては、インタープリタのコマンドを実行した結果、信頼できるファイルから起動されたプロセスのアドレス空間内の悪意あるコードが顕在化したために、セキュリティモジュール１２０は、プロセスのアドレス空間１１２内の悪意あるコードを検出した後、PowerShellのようなスクリプトインタープリタによってダウンロードされたスクリプトが悪意あるものであると認識する。
【００５６】
本開示の文脈において、スクリプトの処理（解釈、または実行）とは、PowerShellのようなインタープリタを用いた、スクリプトコマンド（命令）の実行のことである。インターセプトモジュール１１０は、例えば、実行可能ファイル１１１からプロセスを起動するコマンドラインの引数から、悪意あるコードの検出につながったスクリプトの実行に関する情報を得てもよい。本開示の態様のさらに他の一例においては、ドラッグ＆ドロップ手法（WM_DROPFILESメッセージ）によるスクリプトのオープンに対応したシステムメッセージ、または、WM_COPYDATAデータの転送に関するシステムメッセージをインターセプトすることによって、この情報を得てもよい。
【００５７】
態様のさらに他の一例においては、実行可能ファイル１１１から起動されたプロセスの実行中に実行されたCreateFile関数の呼び出しをインターセプトすることによって、悪意あるコードの検出につながったスクリプトの実行に関する情報を得てもよい。さらに他の態様においては、従来技術の何らかの公知の手法を用いて、その実行と同時にそのアドレス空間１１２内の悪意あるコードが検出されたスクリプトを判定してもよい。スクリプトを悪意あるものと認識するための上記の手法は、悪意あるものと認識されたスクリプトの実行後にダウンロードされたスクリプトに対しても有効である。このように、スクリプトインタープリタのファイルから起動されたプロセスの実行中にスクリプトインタープリタによって実行される命令が、そのプロセスのアドレス空間１１２内の悪意あるコードが検出される時より前に発生したとき、セキュリティモジュール１２０はスクリプトが悪意あるものであることを検出する（言い換えれば、スクリプトを悪意あるものと認識する）。
【００５８】
本開示の態様の一例においては、セキュリティモジュール１２０は、悪意あるものと認識されたスクリプトを除去するか、または隔離し、それによって、セキュリティモジュール１２０が動作しているコンピュータシステムにセキュリティを付与する。本開示の態様のさらに他の一例においては、セキュリティモジュール１２０は、悪意あるものと認識されたスクリプトの識別子（例えば、チェックサムや、特に、ＭＤ５もしくはその他の何らかのハッシュ）をリモートセキュリティサーバに送信する。コンピュータシステム上にあるセキュリティモジュール１２０やその他のコンピュータ装置に展開された類似の手段１２０は、そのような、悪意あるものと認識されたスクリプトの識別子を用いて、セキュリティモジュール１２０が存在するコンピュータ装置上の悪意あるスクリプトを検出してもよい。
【００５９】
本開示の上記の態様を以下のように説明することができる。コンピュータシステムＡにおいて、プロセスのアドレス空間１１２内の悪意あるコードを検出する上記方法に従って、悪意あるスクリプトＸの検出が完了する。このスクリプトの識別子は、コンピュータシステムＡ上に存在するセキュリティモジュール１２０によって、リモートセキュリティサーバに送信される。本開示の態様の一例においては、そのような悪意あるスクリプトの識別子は、このために設けられ、リモートセキュリティサーバ上に存在する、悪意あるスクリプトの識別子のデータベースに保存される。コンピュータシステムＢにもセキュリティモジュール１２０が存在し、それによって、例えば、ネットワークからダウンロードされたスクリプトを、ネットワークからのダウンロード完了時や、ダウンロードされたスクリプトのスクリプトインタープリタを用いた起動時の両方の時点で、チェックすることができる。スクリプトＸが何らかの形でコンピュータシステムＢ上に出現した場合、その起動と同時に、コンピュータシステムＢ上に存在するセキュリティモジュール１２０は、リモートセキュリティサーバによって提供された悪意あるスクリプトに関する情報を使って、悪意あるスクリプトＸを検出する。コンピュータシステムＢ上に存在するセキュリティモジュール１２０は、悪意あるスクリプトのリモートセキュリティサーバ上に保存されている識別子を、特に、悪意あるスクリプトの検出に使用するために、ローカルストレージにダウンロードする。このようにして、コンピュータシステムＢ上に存在するセキュリティモジュール１２０は、コンピュータシステムＢ上に存在する悪意あるスクリプトを検出する。この検出の後、セキュリティモジュール１２０は、スクリプトＸを除去または隔離し、コンピュータシステムＢの安全性を確保する。
【００６０】
図３は、プロセスのアドレス空間内の悪意あるコードを検出するためのシステムおよび方法の態様を態様の一例に従って実現できる汎用コンピュータシステム２０の一例を示す。コンピュータシステム２０は、前述のようなシステム１００またはその中のモジュールに対応したものであってもよいことに注目すべきである。
【００６１】
図示のように、コンピュータシステム２０（パーソナルコンピュータまたはサーバでもよい）は、中央処理装置２１、システムメモリ２２、および、中央処理装置２１に付随するメモリを含む各種システム構成要素を接続するシステムバス２３を含んでいる。当業者には理解されるように、システムバス２３は、バスメモリまたはバスメモリコントローラ、周辺バス、および、他のいかなるバスアーキテクチャとも相互作用可能なローカルバスを備えていてもよい。システムメモリは固定記憶装置（ＲＯＭ）２４とランダムアクセスメモリ（ＲＡＭ）２５を含んでいてもよい。基本入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４を用いてオペレーティングシステムをロードする時の手順等の、コンピュータシステム２０の要素間の情報転送の基本的手順を記憶していてもよい。
【００６２】
また、コンピュータシステム２０は、データを読み書きするためのハードディスク２７、リムーバブル磁気ディスク２９を読み書きするための磁気ディスクドライブ２８、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、その他の光媒体等のリムーバブル光学ディスク３１を読み書きするための光学ドライブ３０を備えていてもよい。ハードディスク２７、磁気ディスクドライブ２８、および光学ドライブ３０は、それぞれ、ハードディスクインターフェース３２、磁気ディスクインターフェース３３、および光学ドライブインターフェース３４を介して、システムバス２３と接続されている。これらのドライブおよび対応するコンピュータ情報媒体は、コンピュータシステム２０のコンピュータ命令、データ構造体、プログラムモジュール、およびその他のデータを記憶する、独立の電源で動作するモジュールである。
【００６３】
態様の一例は、コントローラ５５を介してシステムバス２３と接続されたハードディスク２７、リムーバブル磁気ディスク２９、およびリムーバブル光学ディスク３１を使用するシステムを備えている。コンピュータで読み取り可能な形式でデータの保存が可能な任意の種類の媒体５６（ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ（ＲＡＭ）等）を利用できることは、当業者には理解されるであろう。
【００６４】
コンピュータシステム２０はファイルシステム３６を有しており、その中には、オペレーティングシステム３５の他に、追加的なプログラムアプリケーション３７、その他のプログラムモジュール３８、およびプログラムデータ３９を保存することができる。コンピュータシステム２０のユーザはキーボード４０、マウス４２、あるいは、その他、例えば、マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を含むがそれらに限られない当業者に公知の入力装置を使用して、コマンドおよび情報を入力することができる。そのような装置は、一般に、コンピュータシステム２０に、システムバスと接続されたシリアルポート４６を通して差し込まれるが、当業者は、入力装置を、例えば、限定はされないが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）等の他の方法で接続してもよいことを理解するであろう。モニタ４７または他の種類の表示装置も、ビデオアダプタ４８等のインターフェースを介してシステムバス２３と接続してもよい。パーソナルコンピュータは、モニタ４７に加えて、スピーカ、プリンタ等の周辺出力装置（図示せず）を備えてもよい。
【００６５】
コンピュータシステム２０を、１台以上のリモートコンピュータ４９とのネットワーク接続を用いて、ネットワーク環境下で動作させてもよい。リモートコンピュータ４９は、上記コンピュータシステム２０の特徴説明の中で述べた要素のほとんどまたは全部を備えたローカルコンピュータワークステーションまたはサーバであってもよい。例えば、ルータ、ネットワークステーション、ピアデバイス、その他のネットワークノード等を含むがそれらに限られないその他の装置がコンピュータネットワークの中に存在してもよい。
【００６６】
ネットワーク接続によって、ローカルエリアコンピュータネットワーク（ＬＡＮ）５０および広域コンピュータネットワーク（ＷＡＮ）を形成することができる。そのようなネットワークは企業コンピュータネットワークや社内ネットワークで利用され、一般に、インターネットにアクセスできる。ＬＡＮおよびＷＡＮのネットワークにおいては、パーソナルコンピュータ２０は、ネットワークアダプタまたはネットワークインターフェース５１を介してローカルエリアネットワーク５０と接続されている。ネットワークを利用する場合、コンピュータシステム２０は、インターネットのような広域コンピュータネットワークとの通信を可能にする、モデム５４、または、その他の当業者に公知のモジュールを採用してもよい。モデム５４は、内部装置であっても外部装置であってもよいが、シリアルポート４６によってシステムバス２３と接続してもよい。上記ネットワーク接続は、１台のコンピュータが通信モジュールを使って他のコンピュータとの接続を確立する数多くの広く理解されている方法の非限定例であることは、当業者には理解されるであろう。
【００６７】
様々な態様において、本明細書で説明したシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらの任意の組み合わせの中に実現されてもよい。ソフトウェア中に実現された場合、非一時的なコンピュータ読み取り可能な媒体上に、１つ以上の命令またはコードとして記憶してもよい。コンピュータ読み取り可能な媒体には、データストレージが含まれる。一例として、限定はされないが、そのようなコンピュータ読み取り可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、フラッシュメモリ、あるいは他の種類の電気的、磁気的、または光学的記憶媒体、もしくは、所望のプログラムコードを命令やデータ構造体の形で運搬または記憶するために利用可能で、汎用コンピュータのプロセッサからアクセス可能な、その他の任意の媒体を含むことができる。
【００６８】
様々な態様において、本開示で説明したシステムおよび方法を、モジュールの意味で扱うことができる。本明細書で使われている用語「モジュール」とは、例えば、特定用途向け集積回路（ＡＳＩＣ）やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）によるハードウェアを用いて実現されるか、あるいは、例えば、マイクロプロセッサシステムと、（実行時に）マイクロプロセッサシステムを専用デバイスに変換するモジュールの機能性を実現する一連の命令によるハードウェアとソフトウェアの組み合わせとして実現された、実世界の装置、構成要素、または構成要素の配置のことである。モジュールは、特定の機能をハードウェアのみで促進し、その他の機能をハードウェアとソフトウェアの組み合わせによって促進する、上記二つの組み合わせとしても実現できる。特定の実現形態においては、少なくとも一部、場合によっては全部のモジュールが、汎用コンピュータのプロセッサ上（例えば、上記図４で詳説されているもの）で実行されてもよい。したがって、各モジュールは各種の適切な構成の中に実現可能であり、本明細書に例示したいかなる特定の実現形態にも限定されるべきではない。
【００６９】
明確化のために、各態様の定型的な特徴のすべてが本明細書に示されているわけではない。本開示の実際の実現形態のいかなる開発においても、開発者の具体的目的を達成するために、実現形態に特有の多くの決定をする必要があり、具体的目的は、実現形態ごとおよび開発者ごとに異なるということが理解されるであろう。そのような開発努力は複雑で多くの時間を要するものであるが、それにもかかわらず、本開示から利益を得る当業者にとって、定型的な技術的取り組みであることが理解される。
【００７０】
さらに、本明細書で用いている表現や用語は説明上のものであって、限定のためではなく、本明細書の用語や表現は、当業者が、当業者の知識と組み合わせて、本明細書が提供する教示や手引きの観点から解釈すべきものと理解すべきである。加えて、明示的記載がない限り、本明細書や請求の範囲におけるいかなる用語も、一般的でない、あるいは特別な意味を持つものとみなされることは意図されていない。
【００７１】
本明細書に開示された様々な態様は、本明細書で例示により言及された公知のモジュールと均等な現在および将来の公知の均等物を包含する。さらに、態様および応用例を図示し、かつ、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの変更が可能であることは、この開示の利益を有する当業者には明らかであろう。
【図１】
2019067372.tif 000003
【図２】
2019067372.tif 000004
【図３】
2019067372.tif 000005
【外国語明細書】
2019067372000001.pdf