(57)【特許請求の範囲】
【請求項１】
コンピューター・システム内でウィルス・プログラムの実行を防止するための方法であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第１の仮想計算機により下記式
【数１】
0004575350.tif 000003
（Ｐｏｓ；命令番号のスロット位置、ｎ；命令のサブセット、ｒ；順列シーケンス番号）
を用い、最初の命令番号のスロット位置であるＰｏｓは（ｎ−１）！によって除された選択された乱数ｒの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるＰｏｓの決定のために選択された乱数ｒを置き換え、各決定に対して、分母（ｎ−１）！のｎは一つずつ減らされることにより順列を行うステップと、
前記命令の順列シーケンス番号を命令ポインター・テーブルに格納するステップと、
前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の第２の仮想計算機の実行モジュールにおいて実行するステップとからなり、
前記第１及び第２の仮想計算機は前記コンピューター・システム内の仮想計算機・マネージャーにより制御されるステップとからなる方法。
【請求項２】
前記第１及び第２の仮想計算機において異なるオペレーティング・システムを備えるステップからなる請求項１記載の方法。
【請求項３】
コンピューター・システム内でウィルス・プログラムの実行を防止するためのコンピューター・プログラムを記録したコンピューターに読み取り可能な記録型媒体であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第１の仮想計算機により下記式
【数２】
0004575350.tif 000004
（Ｐｏｓ；命令番号のスロット位置、ｎ；命令のサブセット、ｒ；順列シーケンス番号）
を用い、最初の命令番号のスロット位置であるＰｏｓは（ｎ−１）！によって除された選択された乱数ｒの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるＰｏｓの決定のために選択された乱数ｒを置き換え、各決定に対して、分母（ｎ−１）！のｎは一つずつ減らされることにより順列を行うためのプログラム・コードと、
前記命令の順列シーケンス番号を命令ポインター・テーブルに格納するためのプログラム・コードと、
前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の第２の仮想計算機の実行モジュールにおいて実行するためのプログラム・コードとからなり、
前記第１及び第２の仮想計算機は前記コンピューター・システム内の仮想計算機・マネージャーにより制御されるプログラム・コードを含む記録型媒体。
【請求項４】
前記第１及び第２の仮想計算機において異なるオペレーティング・システムを備えるためのプログラム・コードを含む請求項３記載の記録型媒体。
【請求項５】
ウィルス・プログラムの実行を防止することができるコンピューター・システムであって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に命令の順列シーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて第１の仮想計算機により下記式
【数３】
0004575350.tif 000005
（Ｐｏｓ；命令番号のスロット位置、ｎ；命令のサブセット、ｒ；順列シーケンス番号）
を用い、最初の命令番号のスロット位置であるＰｏｓは（ｎ−１）！によって除された選択された乱数ｒの商によって表され、分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるＰｏｓの決定のために選択された乱数ｒを置き換え、各決定に対して、分母（ｎ−１）！のｎは一つずつ減らされることにより順列を行うための手段と、
前記命令の順列シーケンス番号を格納するための命令ポインター・テーブルと、
前記命令ポインター・テーブルに格納された前記命令の順列シーケンス番号にしたがって、前記命令の順列シーケンスを前記コンピューター・システム内でプロセッサーの実際のマシン・コードに翻訳できる第２の仮想計算機の実行モジュールにおいて実行するための手段と、
前記第１及び第２の仮想計算機を制御するための仮想計算機・マネージャーとからなるコンピューター・システム。
【請求項６】
前記第１の仮想計算機でのオペレーティング・システムは前記第２の仮想計算機でのオペレーティング・システムと異なっている請求項５記載のコンピューター・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に悪意あるソフトウェアを回避することに係り、特にコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法に関する。
【背景技術】
【０００２】
コンピューター・ウィルスのような悪意あるソフトウェアはさまざまな方法でコンピューター・システムに侵入することが可能である。例えば、それらはコンピューター・システムに挿入されることになっているディスクを経由して、あるいはコンピューター・システムのユーザーによって開かれることになっているｅメールを経由してコンピューター・システムに侵入することができる。悪意あるソフトウェアはコンピューター・システム内で実行されるといくつかの問題を引き起こす。例えば、コンピューター・セキュリティが危険にさらされるかも知れず、あるいはコンピューター・システム内のファイルが破壊されるかも知れない。
【０００３】
悪意あるソフトウェアのあるタイプは、検索ストリングをスキャンするなどの簡単な検出技術を用いて容易に検出することができる。しかしながらこの検出処理の形式も圧縮や暗号化を経て悪意あるコードを変換することによって容易に覆され、それによりスキャン・フィルターを迂回する。悪意あるソフトウェアを検出するための他の方法は、プログラムの実行中に悪意ある動作を阻止しようとしている間にプログラムを実行することである。動作ブロッキング（behavior blocking）として知られているこの技術は多くの欠点を有している。悪意ある動作を阻止することを試みるにもかかわらず、プログラムはコンピューター・システムに害を引き起こす可能性がある。さらに、動作ブロッキング機構は、通常はブロッキング決定（blocking determination）に当たって動作の全体のログを見ることができない。したがって、動作ブロッキング機構は次善のブロッキング判断を行うかもしれず、それは有害なプログラムが実行を許可されている間に無害なプログラムがブロックされるかもしれないことを意味する。
【０００４】
さらにもう一つの悪意あるソフトウェアを検出するための方法は、コンピューター・システムが疑わしいコードの悪意ある動作から保護されるようにコンピューター・システムの隔離された環境内で疑わしいコードをエミュレートすることである。エミュレーションの一つの欠点は、ウィルスの攻撃からコンピューター・システムを部分的に保護するかも知れないが、コンピューター・システム自体は保護されない。さらに、データが感染を受ける可能性があり、それは隔離した環境において破壊にまで至る。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
よって、コンピューター・システム内で悪意あるソフトウェアの実行を防止する改善された方法を提供することは望ましいことである。
【課題を解決するための手段】
【０００６】
本発明の好ましい実施の形態によれば、順列（permutation）がコンピューター・システムにおけるアプリケーション・プログラムの実際の如何なる実行よりも前に並べ替えられた命令のシーケンスをもたらすためにアプリケーション・プログラム内で命令のサブセットについて行われる。並べ替えられた命令のシーケンスの順列シーケンス番号は並べ替えられた命令ポインター・テーブルに格納される。並べ替えられた命令のシーケンスは、並べ替えられた命令ポインター・テーブルに格納された並べ替えられた命令のシーケンスの順列シーケンス番号にしたがって、並べ替えられた命令のシーケンスをコンピューター・システム内のプロセッサーの実際のマシン・コードに翻訳できる実行モジュールにおいて実行される。
【０００７】
また、コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前にアプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすためにアプリケーション・プログラムをクロスコンパイルすることが行われる。コンピューター・システムでプロセッサーの実際のマシン・コードにアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、アプリケーション・プログラムのクロスコンパイルされたコードのセットが実行される。
【発明の効果】
【０００８】
本発明はコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法を提供する。もしＶＭＭ（仮想計算機・マネージャー）が実行されるべき各並べ替えられたアプリケーションのハッシュに関連する順列を維持するならば、サンプリング・アタックでさえも（ここでアプリケーションを並べ替えたサンプルがアタッカーによって何とか入手され、順列が決定され、ウィルスが適用され、そして感染を実行するために送られても）機能しなくなる。
【発明を実施するための最良の形態】
【０００９】
本発明のすべての特徴及び利点は以下の詳細な記述において明らかになるであろう。
【００１０】
好ましい使用の形態、さらにはその目的およびその利点と同様に発明それ自身も添付する図面とともに読む時に具体的な実施の形態の以下の詳細な記述を参照することによって最もよく理解されるであろう。
【００１１】
通常、コンピューター・システム内には命令セットのいくつかのレベルがある。第１の（最も低い）レベルはマシン・レベル命令であり、第２のレベルはオペレーティング・システム・アプリケーション・バイナリー・インターフェース命令である。第２のレベルでは、オペレーティング・システムがマシン・レベル命令をより理解されやすくするためにマシン・レベル命令の一部を抽出したものである。第３のレベルはマクロ・レベル命令であり、アプリケーションがプログラミングの容易さを可能にするためにコンピューター・システムの制御をさらに抽出したものである。
【００１２】
多くの技術が第２及び第３の命令のレベルの保護に向けられて来ていたので、本発明は、特に第１のレベルが多くのコンピューター・ウィルスによって使用されるレベルであるのでもっぱら第１の命令のレベルの保護に向けられる。
【００１３】
一般的にいえば、コンピューター・システム内にプロセッサーのマシン・レベル命令セットを知らないでコンピューター・システム内で実行することができるマシン・レベル・プログラムを書き込むことは、不可能ではないにしても起こり得ないことである。さらに、コンピューター・システムでのソフトウェアのインストールは、インストールされているコンピューター・システムの命令セットを最初に理解するためのソフトウェアを必要とする。したがって、本発明の好ましい実施の形態によれば、アプリケーション・プログラムは、最初にアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換され、アプリケーション・プログラムのクロスコンパイルされたコードのセットは、それからアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識することが可能な実行モジュール内で実行される。
【００１４】
特に図１を参照すると、本発明の好ましい実施の形態にしたがってコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図が示されている。図示されるように、コンピューター・システム１０は、変換モジュール１１と実行モジュール１２を含む。コンピューター・システム１０内で実行されることになっている如何なるアプリケーション・プログラムもインストール・プロセスを経る必要がある。インストール・プロセスの間にコンピューター・システム１０のユーザーは、アプリケーション・プログラムがコンピューター・システム１０内にインストールされるべきか否かを決定することができる。もしユーザーが、アプリケーション・プログラムがコンピューター・システム１０内にインストールされるべきであると判断した場合は、アプリケーション・プログラムは次に変換モジュール１１に送られ、そこでアプリケーション・プログラムはアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換される。アプリケーション・プログラムのクロスコンパイルされたコードのセットは、その後アプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、実際のプロセッサーのマシン・コードに変換することが可能な実行モジュール１２内で実行される。
【００１５】
インストール・プロセスを経ることなく、アプリケーション・プログラムが実行モジュール１２によって実行されることはないであろう。例えば、不正なパス１５に示されるように、たとえウィルス・プログラムがユーザーの検出の下で密かに入り込み、ユーザーの認識なしにコンピューター・システム１０内に存在したとしても、ウィルス・プログラムはインストール・プロセスを経ていないので実行モジュール１２によってまだ実行されない。そのため、コンピューター・システム１０はウィルス・プログラムによってもたらされるかも知れない潜在的な害から安全である。
【００１６】
実際、変換モジュール１１と実行モジュール１２は相互から独立しているべきである。事実上、実行モジュール１２は変換モジュール１１以外の如何なるソースからもコードを受け入れることを防止されるべきである。
【００１７】
ところで図２を参照すると、本発明の好ましい実施の形態が組み込まれたコンピューティング環境のブロック・ダイアグラムが図示されている。図示されているように、コンピューター・システム２０は、ハードウェア構造２１、仮想計算機・マネージャー（ＶＭＭ）あるいはハイパーバイザー２２及び仮想計算機２３ａ―２３ｂを含む。仮想計算機２３ａ及び２３ｂは、好ましくは仮想計算機２３ａ内での如何なる実行も仮想計算機２３ｂから独立し、あるいはその逆もまた同様になるように分離された区画に設置されている。ＶＭＭ２２は仮想計算機２３ａ及び２３ｂの間のすべての通信を制御する。さらに、ＶＭＭ２２はハードウェア構造２１と直接通信することができる。ハードウェア構造２１は、プロセッサー、レジスター、メモリー管理装置、メモリー素子、入出力装置などの既知の構造を含む。
【００１８】
オペレーティング・システムと複数のアプリケーション・プログラムが仮想計算機２３ａ―２３ｂのそれぞれの中で同時に実行されることが可能である。例えば、オペレーティング・システム２４及びアプリケーション・プログラム２５は仮想計算機２３ａで実行され、一方、オペレーティング・システム２６及びアプリケーション・プログラム２７は仮想計算機２３ｂで実行される。
【００１９】
必要とはされないが、オペレーティング・システム２４はオペレーティング・システム２６と異なる場合がある。例えば、オペレーティング・システム２４はオープン・ソースのLinuxオペレーティング・システムであり、一方オペレーティング・システム２６はMicrosoft Corporationによって作成されたWindows（登録商標）オペレーティング・システムであることも可能である。同様に、仮想計算機２３ａによってエミュレートされた基本となるプロセッサーもまた仮想計算機２３ｂによってエミュレートされた基本となるプロセッサーと異なる場合がある。例えば、仮想計算機２３ａによってエミュレートされた基本となるプロセッサーがIntel Corporationによって作成されたPentium（登録商標）プロセッサーであり、一方仮想計算機２３ｂによってエミュレートされた基本となるプロセッサーがInternational Business Machines Corporationによって作成されたPowerPC（登録商標）プロセッサーであることも可能である。
【００２０】
仮想計算機２３ａ―２３ｂのそれぞれは、そのオペレーティング・システム及び関連したアプリケーション・プログラムを含んでいるが、ユーザー・レベルで作動する。ＶＭＭ２２が直接実行を使用する場合、ＶＭＭ２２は、仮想計算機２３ａ―２３ｂのどちらもがハードウェア構造２１の動作を制御する各種の特権を与えられたレジスターに直接アクセスできないように、いわゆるユーザー・モード（即ち、制限された特権）に設定される。むしろ、すべての特権命令はＶＭＭ２２にトラップされるであろう。
【００２１】
図２において、仮想計算機２３ａはアプリケーション・プログラムの初期のクロスコンパイルを行うためのクロスコンパイラー２８を含むことが図示されており、さらに仮想計算機２３ｂはクロスコンパイルされたコードを実行するための実行モジュール２９を含むことが図示されている。クロスコンパイルは好ましくは順列アルゴリズムを経由して行われ、その結果は並べ替えられた命令ポインター・テーブル３０に格納される。並べ替えられた命令ポインター・テーブル３０は複数の順列シーケンスのエントリーを含む。順列シーケンスのそれぞれはアプリケーション・プログラムのクロスコンパイルされたコードのセットに関連している。並べ替えられた命令ポインター・テーブル３０内のすべての順列シーケンスは、相互に異なるべきである必要はないが、互いに異なる傾向にある。図２において、並べ替えられた命令ポインター・テーブル３０はＶＭＭ２２内に設置されるように図示されているが、並べ替えられた命令ポインター・テーブル３０が仮想計算機２３ｂによってアクセスされることができるならば仮想計算機２３ａ内に設置されることも可能である。
【００２２】
順列を実行する典型的な方法は以下の通りである。最初に、命令のサブセット、ｎが順列の目的のために命令のグループから選択される。すべての命令の順列が等しく有用であるとは限らない。例えば、識別（ＩＤ）命令の順列はまったく役に立たない。したがって、ある種のマシン命令（例えばＪＵＭＰ命令など）が重要な命令として識別されて、並べ替えられるであろう総ての重要な命令を確実にする。
【００２３】
順列を生成するためにはいくつかの方法がある。一つの方法は、データ・セグメント中のそれぞれの命令が異なるマッピングを有するような機能に基づいたハッシュあるいは暗号化を利用することである。即ち、マッピングはＨ（Ａｌ）、Ｈ（Ａ２）、・・・、Ｈ（Ａｉ）であって、ここでＨは機能に基づくハッシュ、Ａは命令である。機能に基づくハッシュあるいは暗号化の使用に伴う問題は、一般的なコンパイルの観点からは、同じ命令が異なるハッシュの結果をもたらすかも知れないことである。例えば、命令Ａ５と命令Ａ９とは同じ命令かも知れないが、Ｈ（Ａ５）は必ずしもＨ（Ａ９）とは同じではない。
【００２４】
他の方法は異なるマッピング機能であるＰ（Ａ）を利用することである。ここでＰは順列であり、Ａは命令であるが、Ｐ（Ａ）はＰｌ（Ａ）、Ｐ２（Ａ）、・・・Ｐｎ（Ａ）を生成する。この方法は、Ｐｌ（Ｊ）が、ここでＪは与えられた命令であるが、コード・セグメント中のどこに生じても同じであるべきなので、より予測可能なクロスコンパイル結果をもたらす。
【００２５】
順列シーケンスは命令のサブセットであるｎが並べ替えられるか変換されるかという方法を指示する。各順列シーケンスは複数のスロットを有するエントリーとして見なすことができ、各スロットは命令番号で満たされることになっている。ｒ番目の順列シーケンスを発生させるために、０とｎ！−１の間の乱数が最初に選択される。例えば、並べ替えられるのに必要な命令のサブセットであるｎが５の場合（これは５！＝１２０の順列シーケンスを意味するが）、乱数１０１が１０１番目の順列シーケンスとして０と５！−１の間で選択される。
【００２６】
最初の命令番号のスロット位置であるＰｏｓは（ｎ−１）！によって除された選択された乱数ｒの商によって表され、以下の通りである。
【００２７】
【数１】
0004575350.tif 000002
【００２８】
分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるＰｏｓの決定のために選択された乱数ｒを置き換える。各決定に対して、分母（ｎ−１）！のｎは一つずつ減らされる。
【００２９】
このようにして、選択された乱数１０１に対して、第１の命令番号のスロット位置は、図３ａに示されるように１０１／（５−１）！＝４である。１０１／（５−１）！の余りは５であり、第２の命令番号のスロット位置は、図３ｂに示されるように５／（４−１）！＝０である。５／（４−１）！の余りは５であり、第３の命令番号のスロット位置は、図３ｃに示されるように５／（３−１）！＝２である。５／（３−１）！の余りは１であり、第４の命令番号のスロット位置は、図３ｄに示されるように１／（２−１）！＝１である。第５の命令番号は、図３ｅに示されるように残りの開いているスロット位置になる。
【００３０】
順列シーケンス「２５４３１」（図３ｅより）は、次に１０１番目の順列シーケンスに対するエントリーとして並べ替えられた命令ポインター・テーブル３０（図２より）に入力される。アプリケーション・プログラムは、１０１番目の順列シーケンスにしたがってクロスコンパイラー２８（図２より）を経由してクロスコンパイルされたコードのセットに並べ替えられる。実行中には、クロスコンパイルされたコードのセットは、並べ替えられた命令ポインター・テーブル３０に格納された１０１番目の順列シーケンスにしたがって実行モジュール２９（図２より）を経由して実行される。
【００３１】
例えば、並べ替えられるものとして選択された５つの命令がＡＤＤ、ＳＵＢＴＲＡＣＴ、ＪＵＭＰ、ＢＲＡＮＣＨ及びＳＴＯＲＥであるならば、これらの命令の各々は、即ち、命令番号１はＡＤＤ、命令番号２はＳＵＢＴＲＡＣＴ、命令番号３はＪＵＭＰ、命令番号４はＢＲＡＮＣＨ、命令番号５はＳＴＯＲＥというように一つの命令番号が割り当てられる。１０１番目の順列シーケンスが図２のクロスコンパイラー２８内でアプリケーション・プログラムのクロスコンパイルを行うために利用される時、アプリケーション・プログラムでの上記５つの命令の各出現は、順列シーケンス「２５４３１」にしたがって変換される。換言すれば、アプリケーション・プログラムでのそれぞれのＡＤＤ命令はＳＵＢＴＲＡＣＴ命令に変換され、アプリケーション・プログラムでのそれぞれのＳＵＢＴＲＡＣＴ命令はＳＴＯＲＥ命令に変換され、アプリケーション・プログラムでのそれぞれのＪＵＭＰ命令はＢＲＡＮＣＨ命令に変換され、アプリケーション・プログラムでのそれぞれのＢＲＡＮＣＨ命令はＪＵＭＰ命令に変換され、そしてアプリケーション・プログラムでのそれぞれのＳＴＯＲＥ命令はＡＤＤ命令に変換される。上記変換の逆のことがアプリケーション・プログラムのクロスコンパイルされたコードの実行中に図２の実行モジュール２９内で行われる。
【００３２】
順列は静的なあるいは動的などちらの方法でも行うことが可能である。もし順列が静的な方法で行われるならば、コンピューター・システムのグループが同じ順列シーケンスを使用するように設定される。そのような実務は、各アプリケーション・プログラムのクロスコンパイルがインストール中に一度だけ実行されることを必要とされるので、情報技術管理者にとってより簡便であろう。
【００３３】
もし順列が動的な方法で行われるとするならば、いくつかの選択がある。順列シーケンスのセットは周期的に変更することができる。それらの順列に対するクロスコンパイルは一度だけ実行されることが可能であり、その上コンピューター・システムがブートされるたびに、実際に使用に当たって順列シーケンスに基づいてクロスコンパイルされたプログラムの異なるセットを実行することができる。さらに、順列シーケンスはコンピューター・システムがブートされるたびに不規則に変更することができる。そのような場合、クロスコンパイルは、コンピューター・システム上で動作するクロスコンパイラーによって「オンザフライ（直接処理）」で行われなければならないであろう。
【００３４】
さらに、順列シーケンスは各アプリケーション・プログラムに対しても変更されることが可能で、その変更は異なる方法により実施することができる。最も単純な実施は、ストリーミング暗号化アルゴリズムに対するキーとしてアプリケーションの署名ハッシュをＶＭＭに使用させることで、それによってそのアプリケーション・プログラムのための固有の命令セットを発生させることである。如何なる変更されたアプリケーション・プログラムも（バッファー・オーバーフローを引き起こすウィルスによって主記憶装置内で変更されるように）異なる命令セットを発生し始めるであろう。
【００３５】
もう一つの方法として、アプリケーション・プログラムが読み込まれるたびにＶＭＭが乱数を発生させ、アプリケーション・プログラムのコード・セグメントがストリーミング暗号化あるいはクロスコンパイルを変更するためのハッシュ（可逆的である必要のない）エンジンを経て実行される。この方法は、Ｐｎ（Ａ）関数がＰ（Ａ）なる一定の関数になり、予測不可能な状態が維持されるという点でセキュリティーの別のレベルを提供する。
【００３６】
本発明は完全に機能的なコンピューター・システムの状況において記述されているが、本発明のメカニズムがさまざまな形態においてプログラム製品として頒布されることが可能で、しかも本発明は実際に頒布を実施するために利用される信号搬送媒体（signal bearing media）の特定のタイプにかかわらず等しく適合することを当業者が高く評価するということに注目することもまた重要である。信号搬送媒体の例は、制限なく、フロッピー・ディスクやコンパクト・ディスクのような記録型媒体やアナログあるいはデジタル通信リンクのような伝送型媒体を含む。
【００３７】
発明が特に好ましい実施の形態を参照して図示及び記述されているが、形式及び詳細についてのさまざまな変更が発明の精神及び範囲から外れることなく行われることが当業者によって理解されるであろう。
【図面の簡単な説明】
【００３８】
【図１】本発明の好ましい実施の形態に基づくコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図である。
【図２】本発明の好ましい実施の形態が組み込まれたコンピューター環境のブロック・ダイアグラムである。
【図３】本発明の好ましい実施の形態にしたがって命令において並べ替えられているシーケンスを表したものである。
【符号の説明】
【００３９】
１０、２０          コンピューター・システム
１１                変換モジュール
１２、２９          実行モジュール
２１                ハードウェア構造
２２                仮想計算機・マネージャー
２３ａ、２３ｂ      仮想計算機
２４、２６          オペレーティング・システム
２５、２７          アプリケーション・プログラム
２８                クロスコンパイラー
３０                並べ替えられた命令ポインター・テーブル
【図１】
0004575350.tif 000006
【図２】
0004575350.tif 000007
【図３】
0004575350.tif 000008