(57)【要約】ウイルス検出の方法とシステムは、既知のコンパイラのコレクションを使用して生成された実行可能イメージの開始コードの既知パターンのデータ・ベースを有し、このデータ・ベースの参照による前記イメージの開始コードの検査を使用して、前記実行可能イメージがウイルスのコードに感染しているらしいかどうかを決定する。特に、このシステムは開始の間に前記イメージの予想フローと実行がそれに差し挟まれたウイルスのコードを有していたかどうかをシークして決定する。ウイルスのコードが存在するらしいことを評価するのを助けるための種々のヒューリスティックなものが開示される。
2005535972.tif 000002
【特許請求の範囲】
【請求項１】
実行可能イメージのウイルス感染を検出する方法であって、
既知の実行可能イメージ・レイアウトのデータ・ベースを参照することにより、前記実行可能イメージが一致する前記レイアウトを識別することと、
前記識別されたイメージ・レイアウトを参照することにより前記実行可能イメージ内の開始コードを識別することと、
開始コード特性のデータ・ベースを参照することにより、前記開始コードを検査して、前記イメージがウイルスによる修正を受けているらしいかどうかを決定することとを含む前記方法。
【請求項２】
前記開始コード特性のデータ・ベースが、既知のコンパイラのセットにより発生される開始コードのパターン特性を含む請求項１記載の方法。
【請求項３】
前記実行可能イメージを生成するためにそのコンパイラが使用された結果として、存在することが予想される開始コードのパターンの実行可能イメージをスキャンして、そのように発見されたパターンに関して、前記実行可能イメージの前記エントリ・ポイントからの前記実行パス内に、ウイルスのコードが挿入された証拠があるかどうかを決定する請求項２記載の方法。
【請求項４】
前記実行可能イメージが開始コードを含むが、しかし前記イメージの前記実行がそのコードにより実際に開始しないことが決定された場合は、ウイルスのコードを潜在的に含むとの前記観点から疑わしいとして、前記イメージにフラグを立てる請求項３記載の方法。
【請求項５】
既知の開始コードに類似したコードにより前記実行可能イメージが開始するが、しかしこのコードの前記開始が変更されていると決定された場合は、ウイルスのコードを含む可能性の観点から疑わしいとして、前記イメージにフラグを立てる請求項３または請求項４記載の方法。
【請求項６】
開始コードの部分を形成するルーチンに関連するデータ値の記録を前記開始コード・データ・ベースが含み、少なくとも一つのそうしたデータ値に対応する前記実行可能イメージ内の前記データを識別して、それをその値と比較する前記ステップを含む前記請求項のいずれかによる方法。
【請求項７】
実行可能イメージのウイルス感染も検出するシステムであって、
既知の実行可能イメージ・レイアウトのデータ・ベースを参照して、それらのレイアウトのどれかに対して前記実行可能イメージが一致するかを識別する手段と、
前記識別されたイメージ・レイアウトを参照して前記実行可能イメージ内の開始コードを識別する手段と、
開始コード特性のデータ・ベースを参照することにより前記開始コードを検査して、前記イメージがウイルスによる修正を受けたらしいかどうかを決定する手段とを含む前記システム。
【請求項８】
前記開始コード特性のデータ・ベースが、一組の既知のコンパイラにより発生される開始コードとパターン特性を含む請求項７記載のシステム。
【請求項９】
既知の開始コードのパターンの前記実行可能イメージを操作して、そのように発見されたパターンに関して、前記実行可能イメージの前記エントリ・ポイントから前記実行パス内に、ウイルスのコードが挿入された証拠があるかどうかを決定する請求項８記載のシステム。
【請求項１０】
前記実行可能イメージが既知の開始コードを含むが、しかし前記イメージの実行がそのコードにより実際に開始しないことが決定される場合は、ウイルスのコードを含むかも知れない観点から疑わしいとして、前記イメージにフラグを立てる請求項９記載のシステム。
【請求項１１】
前記予想される開始コードに類似したコードにより、前記実行可能イメージが開始するが、しかし前記コードの前記始めが変更されていることが決定された場合は、ウイルスのコードを含むかも知れないという前記観点から疑わしいとして、前記イメージにフラグを立てる請求項９または請求項１０記載の方法。
【請求項１２】
前記開始コードの部分を形成するルーチンに関連するデータ値の記録を前記開始コード・データ・ベースが含み、少なくとも一つのそうしたデータ値に対応する前記実行可能イメージ内の前記データを識別して、それをその値と比較する手段を含む請求項７ないし請求項１１のいずれかに記載のシステム。
【請求項１３】
上記に説明し、また添付図面を参照したものと実質的に同じ実行可能イメージのウイルス感染を検出する方法。
【請求項１４】
上記に説明し、また添付図面を参照したものと実質的に同じ実行可能イメージのウイルス感染を検出するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既知の開始シーケンスのコードをサーチすることにより、実行可能コード内のウィルスをヒューリスティックに検出する方法とシステムに関する。
【背景技術】
【０００２】
ウイルス感染の一般的な形式は、表面上は良性に見える実行可能コードを含むプログラムまたは他のコンピュータ・ファイルへ、ウイルスの実行可能コードが接続され、または埋め込まれる場合である。ウイルス伝播の一つのよく確立された方法は、ユーザのＰＣなどのホスト・マシン上で一度動作させられたウイルスが、ウィルスにふたたび伝播しおよび／または他のあらゆる悪性の行動（ファイルの破壊など）に着手する機会をウィルスに与えることがプログラム済みであるかのように、ホスト上にある一つまたはそれ以上のプログラムを動作させればウィルスに接続することである。もちろんこの伝播方法は、たとえばプログラム・ファイルにチェックサムを結合したりまたはチェックサムが変化するときを検出したりして、ウイルスを検出する機会を供給する。それは、もちろんウイルスを検出するために考案されてきた多くの戦略の一つに過ぎない。
【０００３】
利用可能な抗ウイルス・ソフトウエア・パッケージの多くに実施される検出のもう一つの良く知られた方法は、ウイルスが存在するらしいことを示す一定の特徴あるバイトのシーケンス（シグネチャとして知られる）についてプログラムおよび他のファイルをスキャンすることを含む。シグネチャに基づく検出の実際的な問題の一つは、新しいウイルスが最初に検出された時にその適切な特徴あるシグネチャを確立するために、いくらかの熟練と相当量の時間を必要とすることである。このシグネチャは、あまりにも多くの疑陽性（ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）を生成する必要がなく、またたとえば既存の一つまたはそれ以上の良性ペイロードとして、ウイルスを誤認しないようなものでなければならない。このシグネチャ情報は、それからこの新しく確認されたウイルスを検出するためにそこで使用可能になる以前に、問題の抗ウイルス・パッケージを使用するサイトへ広められる必要がある。近年多くの有名なウイルスの突発は、インターネット上に伝播するウイルスを含み、それは、抗ウイルス・ソフトウエアの発行者にとってウイルスの突発したときに反応するための時間を必要とする。
【０００４】
いくつかのインターネット・サービス・プロバイダは、彼らのインターネットノードを通過するインターネット・トラヒックの抗ウイルス・スキャニングを、付加価値サービスとして提供している。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、たとえばＥメールへ添付されるプログラム・ファイルなどに、実行可能なＩＳＰ遂行抗ウイルス・スキャニングに使用できることを意図するウイルス検索の方法に関するが、それは、どんな意味でもそのアプリケーションに限定されず、あらゆる抗ウイルス・パッケージにおいて使用可能なものである。
【課題を解決するための手段】
【０００６】
本発明によれば、実行用イメージのウイルス感染を検出する方法を提供され、それは、
既知の実行可能なイメージ・レイアウトであって、前記実行可能イメージに一致する前記レイアウトのデータ・ベースを参照することにより識別することと、
前記識別されたイメージ・レイアウトを参照することにより、前記実行可能イメージ内の開始コードを識別することと、
開始コード特性のデータ・ベースを参照することにより、前記開始コードを検査して前記イメージがウイルス性の修正を受けたらしいかどうかを決定することとを含む。
【０００７】
本発明はまた、実行用イメージのウイルス感染を検出するシステムを提供し、それは、
既知の実行可能なイメージ・レイアウトであって、前記実行可能なイメージが、それらのレイアウトの一つへ一致するもののデータ・ベースを参照することにより識別する手段と、
前記識別されたイメージ・レイアウトを参照することにより、前記実行可能イメージ内の開始コードを識別する手段と
開始コード特性のデータ・ベースを参照して前記開始コードを検査し、前記イメージがウィルス性の修正を受けたらしいかどうかを決定する手段とを含む。
【０００８】
本発明の図示された実施例の説明を進める前に、いくつかの用語を説明する。
【０００９】
ＭＤ５（メッセージ・ダイジェスト５）チェックサム。ＭＤ５は、一方向ハッシング・アルゴリズムであって、ファイルなどのバイト・ストリームを分析した後に一つの大きな数（ＭＤ５チェック・サム）を発生する。二つのファイルが同一の大きな数を発生する機会は、非常に少ない。また、特定のＭＤ５チェックサムを発生するファイルを生成することは非常に困難である。
【００１０】
疑陽性（ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）；疑陽性は、ある抗ウイルス製品が、特定のファイルをマルウエア（ｍａｌｗａｒｅ）と識別するが、実際はそうではないときに起きる。
【００１１】
正規表現（ｒｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎ）；正規表現は、パターン・マッチングの目的のパターンを表現するために使用されるストリングである。
2005535972.tif 000003
たとえば上記のパール（ｐｅｒｌ）正規表現は、「ｈｅｌｌｏ」の文字で始まり、それから一つのスペース、それから一つまたはそれ以上の数字であるあらゆるストリングに一致する。パールのような言語は、正規表現に対して生まれつきのサポートを有し、他のもののためには、正規表現のマッチングを実施するライブラリが利用できる。
【００１２】
コンパイラ；厳密な用法によれば、コンパイラはプログラム・ソース・コードから一つまたはそれ以上のオブジェクト・モジュールを発生する。これらのオブジェクト・モジュールは、典型的にそれ自体で実行可能なプログラムではなく、リンカによるリンキングの追加ステップを必要とする。リンカの作用は、典型的にオブジェクト・モジュールおよびこのモジュールが参照する外部バイナリ・ライブラリを相互にリンクすることにより、実行可能なもののイメージを生成することであり、イメージの作成は、ビット・マップなどの資源の追加と共に、ターゲット・オペレーティング・システムの実行可能なファイル・レイアウトによるヘッダー領域のプリペンディング（ｐｒｅ−ｐｅｎｄｉｎｇ）を含む。本書で使用する「コンパイラ」という用語は、技術的見地から必要な場合はリンカを含むことを意図している。コンパイラが生成するものは、もちろん必ずしもスタンド・アロンのプログラムではなく、コンパイラはまた、ダイナミック・リンク・ライブラリおよびデバイス・ドライバのような実行可能なものを生成する。
【００１３】
プログラム・イメージ：プログラム・イメージは、実行可能コードのバイトのシーケンスであり、ディスク上、メモリ内またはネットワーク・ソケット・ストリームに存在する。ディスク上の形式では、このイメージは、プログラム・ファイルの部分であり、そうしたプログラムに通常見出される情報を収納したプログラム・ヘッダをも含む。
【実施例】
【００１４】
制御を獲得するためには、ウイルスはプログラム・コードの実行パスへ、自ら入らなければならない。理論的にはこのウイルスはプログラムのどこへも自分を挿入できるが、中間に挿入した場合は挿入した場所が実行されることは稀であるかまたは決して実行されないので、制御を獲得する機会が少なくなる。従って、多くのウイルスは、プログラムの開始コードをウイルス自身の開始コードに置き換える。これによりそれらが実行されるのが保証され、生き残りの機会が多くなる。実行可能プログラムのディスク上のイメージは、オペレーティング・システムに適当なレイアウトに一致しなければならず、与えられたオペレーティング・システムがいくつかのの前記レイアウトをサポートする。今これを書いている時点では、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）の大部分は、「Ｗｉｎｄｏｗｓ（登録商標）  ＰＥ」レイアウトに一致する。図１に例示するように、これらのレイアウトはたとえばチェック・サムおよびセグメント固定のためのリロケーション・テーブルを含むヘッダにより通常開始され、これらはプログラムをロードするときに、オペレーティング・システム（ＯＳ）のローダにより遂行される。ある点において、プログラム・ヘッダ内に指示されるプログラムのエントリ・ポイントへのコールにより、ＯＳはプログラムへ制御を引き渡す。
【００１５】
その後に起こることは、プログラムの性質およびそれに使用されたコンパイラおよびリンカによって異なる。完全にコンパイルされたユーザ実行可能なプログラムは、一般にいくつかの共通タスクを処理するルーチン・ライブラリ・リンクを有する。特に、ルーチン・ライブラリは、通常プログラム・スタックおよびヒープのようなメモリ内構造の設立のようなタスクを開始し遂行するのに関わるルーチンを含む。プログラムの著者により書かれるプログラム・コードは、一般に著者のコードを遂行し始める以前に、開始コードによりこれらのアクションが遂行されていることを前提としている。これら全ては、所与のコンパイラおよびリンカおよびルーチン・ライブラリについてそれらを使用して生成されたプログラムの開始コードが完全に不変であると言うのではなく、むしろ同一のコンパイラおよびリンカおよびルーチン・ライブラリによりコンパイルされた種々のプログラムが、少なくともプログラム・エントリ・ポイントを介して発見されるコードに関して、充分な類似性を有していて、プログラムがコンパイルされリンクされた後にウイルスのコードがプログラムにパッチされたかどうかを決定するための基礎を提供する。
【００１６】
開始において制御を獲得するために、ウイルスはプログラム・スタート・ポイントをウイルス開始コードへのポイントへ変更できるし、または、ウイルスは実際の開始コードの部分を変更して、それ自体のコードへのジャンプまたはコードへ置き換えることができる。図１は、ウイルスがこのプログラム開始ポイントをそれ自体のコードへ変更する例を示す。図２は、ウイルスが開始コードを変更して、それ自体のコードへのジャンプへ置き換える例を示す。
【００１７】
上記のように、しばしばある特定のコンパイラおよびライブラリのセットは、それが発生する諸プログラムの全部または大部分について、同一の開始コードを発生する。時には、これは開始中に必要な共通タスクを遂行する標準的なライブラリ・シーケンスにより、それが開始するためである。時には、これは特定の方法（たとえば、ビジュアルＢＡＳＩＣ）により、このコンパイラがアプリケーションを発生するためである。
【００１８】
ある特定のプログラムが、共通開始コードを含むがしかしそのプログラムが実際はこのコードで開始しないことが確認されれば、その時これは非常に疑わしくて、このプログラムが潜在的にウイルスを含むものとしてフラッグを立てることができる。これは図１の例の場合である。
【００１９】
ある特定のプログラムが共通開始コードに類似したコードで開始するが、しかしこのコードの始めが変更されていれば、その時これは非常に疑わしくて、このプログラムは潜在的にウイルスを含むものとしてフラッグを立てることができる。これは図２の例の場合である。
【００２０】
本実施例のオペレーションは、それがディスク上、メモリ内、ネットワーク・パケット・ストリームの部分であっても、既知のコンパイラおよびパターン・マッチャ（ｐａｔｔｅｒｎ  ｍａｔｃｈｅｒ）を使用して生成されたプログラムの特性のデータ・ベースを参照して、プログラムのイメージの検査により進行し、特に、前記プログラム・イメージがプログラムを疑わしいものとする方法で、そのコンパイラから予想されるものから開始コードが逸脱しているかどうかを決定する。
【００２１】
図３は、本発明の一つの実施例を示す。例示のために、諸ファイルは一つの入力待ち行列からスキャンされ配信されて、各々が図３に示すシステム１０により処理されるものと考える。
【００２２】
１）ファイル・タイプ・アナライザ２０を使用して疑わしいイメージを分析することにより、このタイプを決定することができる。たとえば、それは非プログラムまたはプログラムであり得る。非プログラムは、更には分析されない。プログラムは、たとえばＤＯＳ、Ｗｉｎｄｏｗｓ  ＰＥ、Ｗｉｎｄｏｗｓ（登録商標）  ＮＥ、Ｌｉｎｕｘ  Ｅｌｆ、Ｍａｃｉｎｔｏｓｈなど、それらのタイプによりさらに分類される。この分析は、ファイル・タイプ・アナライザ２０により行われる。注意すべきは、ファイル・イメージの場合において、ファイル・タイプ（たとえば、．ＥＸＥ、．ＤＬＬなど）を無視すべきことである。
【００２３】
２）プログラムのタイプによっては、開始コード・シーケンスのデータ・ベースの代りに適当な開始コードのコード・サーチ３０を開始することにより、これをサーチすることができる。たとえば、Ｗｉｎｄｏｗｓ（登録商標）  ＰＥファイルは、Ｍｉｃｒｏｓｏｆｔ  Ｖｉｓｕａｌ、Ｓｔｕｄｉｏ  Ｃ  コンパイラ、Ｂｏｒｌａｎｄ  Ｃ  コンパイラ、Ｍｉｃｒｏｓｏｆｔ  Ｖｉｓｕａｌ  ＢＡＳＩＣ  コンパイラおよびＤｅｌｐｈｉ  コンパイラにより生成された開始コードについてサーチされる。
【００２４】
３）開始コードが発見されたことを開始コード・サーチ３０が決定したが、しかしこのコードによりプログラムが実際に開始しない場合は、それは疑わしいファイルのハンドラへ渡される（ステップ６）。
【００２５】
４）既知の開始コードに類似したコードによりプログラムが開始したことをエントリ・ポイント・コード・アナライザ４０が決定した場合は、疑わしいファイルのハンドラ６０により処理される例外リスト・ステップ（６）へ行く。
【００２６】
５）処理が終了ポイント７０に到達すれば、プログラムは「疑わしくない」とフラグを立てられ、更なる動作は何も行われない。
【００２７】
６）疑わしいファイルのハンドラ６０は、例外リストを使用して疑陽性を防止する。たとえば、開始コードを含むように見えるがしかし含まない純正プログラム・ファイル、開始コードを含むと認められるがエントリ・ポイントにおいて含むのではないプログラム、およびある理由により開始コードを含むがしかし何か他のコードにより開始するプログラムがあり得る。これらの純正ファイルは例外リストに含まれ得る。例外リストは種々な方法で働くことができ、ファイルのＭＤ５チェック・サムと既知のチェック・サムを比較すること、または正規表現のためのファイルを探索すること、または実際の開始コードを既知の例外開始コードのリストと比較することによることを含むが、これらに限定されない。いずれかの例外リストの一致が起これば更なる動作は行われない。
【００２８】
疑わしいファイルのハンドラが斟酌するようにプログラムされた更なる考慮点は、一定の方法でプログラム・ファイルを「再パッケージする」ユーティリティ・プログラムが存在することである。ユーティリティのそうしたタイプの一つは、Ｂｌｉｎｋｅｒ（ｗｗｗ．ｂｌｉｎｋ．ｃｏｍ．）であって、これは実行可能なものを圧縮してスタブ・ローダ（ｓｔｕｂ  ｌｏａｄｅｒ）を追加することにより、プログラム実行時にスタブ・ローダが喚起されて、実行可能なもののイメージを復元する。ほとんどの場合圧縮ユーティリティは、元の実行可能なものの開始コードを圧縮するので、開始コードのためのパターン・マッチングにより発見されない。しかしながら、恐らくはある理由のために特定の開始コード・シーケンスは圧縮不可能であり、従って変更されずに残る。その時これは疑陽性を発生するかも知れない。これを防止するために例外リスト入力を生成でき、これは実際において「Ｂｉｎｋｅｒによりパックされた全てのプログラムを無視せよ」ということである。存在する種々のユーティリティのためにこれを実行する様々な方法があり、それには実行可能なイメージ内に挿入するそれら自身の開始コードを検出すること、およびＰＥファイルなどのレイアウト内のセクション特性（名前、シーケンス、フラッグなど）をチェックすることも含まれる。
【００２９】
７）その他の点では、プログラムがウイルスを含む可能性があるとフラグを立てられる。これは、絶対的決定としてまたは他のヒューリスティックなものと組み合わされて、プログラムがウイルスに感染したかどうかに関しての全般的な決定をする。
【００３０】
プログラムがウイルスに感染したとして停止されたが、ウイルス感染であると判明しなかった場合は、分析して例外リスト入力が発生されることにより将来類似の疑陽性が起きないようにされる。
【００３１】
スタンド・アローンのウイルス検出アルゴリズムとしてこれを使用するのと同様に、より大きなシステムの部分として他の技法とこれを組合わせることができる。たとえば、この方法によりウイルス感染とフラグを立てられたプログラムは、まさにその状況に応じて、一定の点数または種々の点数を割り当てられる。点数はまた、他のヒューリスティックな技法によっても割り当てられ、そして全体の点数がある限界を超える場合にのみ、このプログラムがウイルスに感染したとフラグを立てられる。
【００３２】
ウイルスに感染したとフラグを立てられると、たとえば隔離デレクトリへこのプログラム・ファイルを移動させることにより自動的に作動するシステムによるかまたは、人間のオペレータに信号して介入を要請するかして、適当な治療行動が取られる。
【００３３】
（疑わしいファイルの検査例）
下記は、あるファイルがＷｉｎｄｏｗｓ（登録商標）  ＰＥファイルであるらしいかどうかを決定するアルゴリズムの単純化した例であり、ファイル・タイプ・アナライザ２０により、実施できるものである。
2005535972.tif 000004
【００３４】
（既知の開始コードのファイルをサーチする例）
下記は、ウインドウズ環境のためのＭｉｃｒｏｓｏｆｔ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｓｔｕｄｉｏ  Ｃ  コンパイラのために発生されたプログラム用の共通開始シーケンスである。
2005535972.tif 000005
2005535972.tif 000006
【００３５】
しかしながら、我々はこの特定バイト・パターン（５５、８Ｂ、ＥＣ、６Ａ、ＦＦ、６８、１０、１１、００、０１、など）を単純にサーチすることができない。これらの値の多くは、他のルーチンまたはデータ構造に対してオフセットしていて、それらが様々な場所に位置しているので、プログラムからプログラムへと変化し、従って様々なオフセットを有する。たとえば、前記４番目の命令、オフセットｖａｒ１をプッシュせよは、この例においてバイト・シーケンス６８  １０  １１  ００  ０１を有し、それはこのプログラムの中で変数ｖａｒ１がオフセット０ｘ０１００１１１０に位置するからである。もう一つのプログラムにおいてｖａｒ１は、異なったオフセット（たとえば、０ｘ１００１１ＥＦ）に位置し得るし、また第４の命令はその時バイト・シーケンス６０  ＥＦ  １１  ００  ０１を有し得る。
【００３６】
従って単純化サーチは一定であるバイトに一致することができ、また、変化するバイト上をスキップすることができる。プログラム・ファイル内の全てのバイトについてサーチ・パターンがフィットするかどうか、また、もし一致するならばそのコードを我々が発見済みであるかを見ることを試みる。それが、発見済みでないならばファイル内の次のバイトにより継続し、そのようにファイルの終端に達するまで実行する。
2005535972.tif 000007
【００３７】
変化するバイトについては、一層詳細なサーチが他のチェックを遂行できる。たとえば、コンパイラが発生する開始コードの知識からこのバイトが「いずれかのキーを押して継続せよ」という値を含むデータ構造へのオフセットであると知られるならば、サーチは、このオフセットが実際にこのデータを含むことをチェックできる。既知のルーチンへのオフセットがあるならば、この既知のルーチンが正しいパターンに一致することをサーチは反復的にチェックできる。
【００３８】
たとえば、元のパターンにおいてｖａｒ１がストリング「ｈｅｌｌｏ」を含むとする。このサーチ・アルゴリズムは、今や下記の通りである。
2005535972.tif 000008
【００３９】
この開始コード・パターンを発見すれば、我々はそれからそれがプログラムのエントリ・ポイントに位置しているかどうかをチェックする。そうであるならば、そのとき全てはＯＫである。そうでなければこれは疑わしいものとしてフラグを立てられる（開始コードが発見されたが、しかしこのコードによりプログラムがスタートしない）。
【００４０】
（変更された開始コードをサーチするファイルの例）
前と同じ例示の開始コードを使用して、我々は下記のアルゴリズムを使用してこのファイルが変更された開始コードを含むかどうかを決定できる。
2005535972.tif 000009
【００４１】
もしコードが一致するならば、オフセット１０以降のバイトは、既知の開始コードの部分である。もし最初の１５バイトもまたこの開始シーケンスに一致するならば、全てはＯＫである。さもなければこれは、潜在的に興味がある。したがって、下記のようにチェックが継続される。
2005535972.tif 000010
【００４２】
全ての一致が達成されれば、これは既知の開始シーケンスの部分である。さもなければ、「変更された開始コード」としてフラグを立てられる。
【図面の簡単な説明】
【００４３】
添付図面を参照しながら以上に限定的でない例により、本発明を説明してきた。
【図１ａ】プログラム・エントリ・ポイントを変更するウイルスの例を示す。
【図１ｂ】プログラム・エントリ・ポイントを変更するウイルスの例を示す。
【図２ａ】プログラム・エントリ・ポイントにおいて、コードを上書きするウイルスの例を示す。
【図２ｂ】プログラム・エントリ・ポイントにおいて、コードを上書きするウイルスの例を示す。
【図３】本発明によるシステムを示す。
【図１ａ】
2005535972.tif 000011
【図１ｂ】
2005535972.tif 000012
【図２ａ】
2005535972.tif 000013
【図２ｂ】
2005535972.tif 000014
【図３】
2005535972.tif 000015
【国際調査報告】
2005535972.tif 000016