説明

コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法

【課題】コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法が開示される。
【解決手段】コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に並べ替えられた命令のシーケンスをもたらすためにアプリケーション・プログラム内で命令のサブセットについて順列が行われる。並べ替えられた命令のシーケンスの順列シーケンス番号が並べ替えられた命令ポインター・テーブルに格納される。並べ替えられた命令のシーケンスが並べ替えられた命令ポインター・テーブルに格納された並べ替えられた命令のシーケンスの順列シーケンス番号にしたがって、コンピューター・システム内でプロセッサーの実際のマシン・コードに並べ替えられた命令のシーケンスを翻訳できる実行モジュールにおいて実行される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的に悪意あるソフトウェアを回避することに係り、特にコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法に関する。
【背景技術】
【0002】
コンピューター・ウィルスのような悪意あるソフトウェアはさまざまな方法でコンピューター・システムに侵入することが可能である。例えば、それらはコンピューター・システムに挿入されることになっているディスクを経由して、あるいはコンピューター・システムのユーザーによって開かれることになっているeメールを経由してコンピューター・システムに侵入することができる。悪意あるソフトウェアはコンピューター・システム内で実行されるといくつかの問題を引き起こす。例えば、コンピューター・セキュリティが危険にさらされるかも知れず、あるいはコンピューター・システム内のファイルが破壊されるかも知れない。
【0003】
悪意あるソフトウェアのあるタイプは、検索ストリングをスキャンするなどの簡単な検出技術を用いて容易に検出することができる。しかしながらこの検出処理の形式も圧縮や暗号化を経て悪意あるコードを変換することによって容易に覆され、それによりスキャン・フィルターを迂回する。悪意あるソフトウェアを検出するための他の方法は、プログラムの実行中に悪意ある動作を阻止しようとしている間にプログラムを実行することである。動作ブロッキング(behavior blocking)として知られているこの技術は多くの欠点を有している。悪意ある動作を阻止することを試みるにもかかわらず、プログラムはコンピューター・システムに害を引き起こす可能性がある。さらに、動作ブロッキング機構は、通常はブロッキング決定(blocking determination)に当たって動作の全体のログを見ることができない。したがって、動作ブロッキング機構は次善のブロッキング判断を行うかもしれず、それは有害なプログラムが実行を許可されている間に無害なプログラムがブロックされるかもしれないことを意味する。
【0004】
さらにもう一つの悪意あるソフトウェアを検出するための方法は、コンピューター・システムが疑わしいコードの悪意ある動作から保護されるようにコンピューター・システムの隔離された環境内で疑わしいコードをエミュレートすることである。エミュレーションの一つの欠点は、ウィルスの攻撃からコンピューター・システムを部分的に保護するかも知れないが、コンピューター・システム自体は保護されない。さらに、データが感染を受ける可能性があり、それは隔離した環境において破壊にまで至る。
【発明の開示】
【発明が解決しようとする課題】
【0005】
よって、コンピューター・システム内で悪意あるソフトウェアの実行を防止する改善された方法を提供することは望ましいことである。
【課題を解決するための手段】
【0006】
本発明の好ましい実施の形態によれば、順列(permutation)がコンピューター・システムにおけるアプリケーション・プログラムの実際の如何なる実行よりも前に並べ替えられた命令のシーケンスをもたらすためにアプリケーション・プログラム内で命令のサブセットについて行われる。並べ替えられた命令のシーケンスの順列シーケンス番号は並べ替えられた命令ポインター・テーブルに格納される。並べ替えられた命令のシーケンスは、並べ替えられた命令ポインター・テーブルに格納された並べ替えられた命令のシーケンスの順列シーケンス番号にしたがって、並べ替えられた命令のシーケンスをコンピューター・システム内のプロセッサーの実際のマシン・コードに翻訳できる実行モジュールにおいて実行される。
【0007】
また、コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前にアプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすためにアプリケーション・プログラムをクロスコンパイルすることが行われる。コンピューター・システムでプロセッサーの実際のマシン・コードにアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、アプリケーション・プログラムのクロスコンパイルされたコードのセットが実行される。
【発明の効果】
【0008】
本発明はコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法を提供する。もしVMM(仮想計算機・マネージャー)が実行されるべき各並べ替えられたアプリケーションのハッシュに関連する順列を維持するならば、サンプリング・アタックでさえも(ここでアプリケーションを並べ替えたサンプルがアタッカーによって何とか入手され、順列が決定され、ウィルスが適用され、そして感染を実行するために送られても)機能しなくなる。
【発明を実施するための最良の形態】
【0009】
本発明のすべての特徴及び利点は以下の詳細な記述において明らかになるであろう。
【0010】
好ましい使用の形態、さらにはその目的およびその利点と同様に発明それ自身も添付する図面とともに読む時に具体的な実施の形態の以下の詳細な記述を参照することによって最もよく理解されるであろう。
【0011】
通常、コンピューター・システム内には命令セットのいくつかのレベルがある。第1の(最も低い)レベルはマシン・レベル命令であり、第2のレベルはオペレーティング・システム・アプリケーション・バイナリー・インターフェース命令である。第2のレベルでは、オペレーティング・システムがマシン・レベル命令をより理解されやすくするためにマシン・レベル命令の一部を抽出したものである。第3のレベルはマクロ・レベル命令であり、アプリケーションがプログラミングの容易さを可能にするためにコンピューター・システムの制御をさらに抽出したものである。
【0012】
多くの技術が第2及び第3の命令のレベルの保護に向けられて来ていたので、本発明は、特に第1のレベルが多くのコンピューター・ウィルスによって使用されるレベルであるのでもっぱら第1の命令のレベルの保護に向けられる。
【0013】
一般的にいえば、コンピューター・システム内にプロセッサーのマシン・レベル命令セットを知らないでコンピューター・システム内で実行することができるマシン・レベル・プログラムを書き込むことは、不可能ではないにしても起こり得ないことである。さらに、コンピューター・システムでのソフトウェアのインストールは、インストールされているコンピューター・システムの命令セットを最初に理解するためのソフトウェアを必要とする。したがって、本発明の好ましい実施の形態によれば、アプリケーション・プログラムは、最初にアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換され、アプリケーション・プログラムのクロスコンパイルされたコードのセットは、それからアプリケーション・プログラムのクロスコンパイルされたコードのセットを認識することが可能な実行モジュール内で実行される。
【0014】
特に図1を参照すると、本発明の好ましい実施の形態にしたがってコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図が示されている。図示されるように、コンピューター・システム10は、変換モジュール11と実行モジュール12を含む。コンピューター・システム10内で実行されることになっている如何なるアプリケーション・プログラムもインストール・プロセスを経る必要がある。インストール・プロセスの間にコンピューター・システム10のユーザーは、アプリケーション・プログラムがコンピューター・システム10内にインストールされるべきか否かを決定することができる。もしユーザーが、アプリケーション・プログラムがコンピューター・システム10内にインストールされるべきであると判断した場合は、アプリケーション・プログラムは次に変換モジュール11に送られ、そこでアプリケーション・プログラムはアプリケーション・プログラムのクロスコンパイルされたコードのセットに変換される。アプリケーション・プログラムのクロスコンパイルされたコードのセットは、その後アプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、実際のプロセッサーのマシン・コードに変換することが可能な実行モジュール12内で実行される。
【0015】
インストール・プロセスを経ることなく、アプリケーション・プログラムが実行モジュール12によって実行されることはないであろう。例えば、不正なパス15に示されるように、たとえウィルス・プログラムがユーザーの検出の下で密かに入り込み、ユーザーの認識なしにコンピューター・システム10内に存在したとしても、ウィルス・プログラムはインストール・プロセスを経ていないので実行モジュール12によってまだ実行されない。そのため、コンピューター・システム10はウィルス・プログラムによってもたらされるかも知れない潜在的な害から安全である。
【0016】
実際、変換モジュール11と実行モジュール12は相互から独立しているべきである。事実上、実行モジュール12は変換モジュール11以外の如何なるソースからもコードを受け入れることを防止されるべきである。
【0017】
ところで図2を参照すると、本発明の好ましい実施の形態が組み込まれたコンピューティング環境のブロック・ダイアグラムが図示されている。図示されているように、コンピューター・システム20は、ハードウェア構造21、仮想計算機・マネージャー(VMM)あるいはハイパーバイザー22及び仮想計算機23a―23bを含む。仮想計算機23a及び23bは、好ましくは仮想計算機23a内での如何なる実行も仮想計算機23bから独立し、あるいはその逆もまた同様になるように分離された区画に設置されている。VMM22は仮想計算機23a及び23bの間のすべての通信を制御する。さらに、VMM22はハードウェア構造21と直接通信することができる。ハードウェア構造21は、プロセッサー、レジスター、メモリー管理装置、メモリー素子、入出力装置などの既知の構造を含む。
【0018】
オペレーティング・システムと複数のアプリケーション・プログラムが仮想計算機23a―23bのそれぞれの中で同時に実行されることが可能である。例えば、オペレーティング・システム24及びアプリケーション・プログラム25は仮想計算機23aで実行され、一方、オペレーティング・システム26及びアプリケーション・プログラム27は仮想計算機23bで実行される。
【0019】
必要とはされないが、オペレーティング・システム24はオペレーティング・システム26と異なる場合がある。例えば、オペレーティング・システム24はオープン・ソースのLinuxオペレーティング・システムであり、一方オペレーティング・システム26はMicrosoft Corporationによって作成されたWindows(登録商標)オペレーティング・システムであることも可能である。同様に、仮想計算機23aによってエミュレートされた基本となるプロセッサーもまた仮想計算機23bによってエミュレートされた基本となるプロセッサーと異なる場合がある。例えば、仮想計算機23aによってエミュレートされた基本となるプロセッサーがIntel Corporationによって作成されたPentium(登録商標)プロセッサーであり、一方仮想計算機23bによってエミュレートされた基本となるプロセッサーがInternational Business Machines Corporationによって作成されたPowerPC(登録商標)プロセッサーであることも可能である。
【0020】
仮想計算機23a―23bのそれぞれは、そのオペレーティング・システム及び関連したアプリケーション・プログラムを含んでいるが、ユーザー・レベルで作動する。VMM22が直接実行を使用する場合、VMM22は、仮想計算機23a―23bのどちらもがハードウェア構造21の動作を制御する各種の特権を与えられたレジスターに直接アクセスできないように、いわゆるユーザー・モード(即ち、制限された特権)に設定される。むしろ、すべての特権命令はVMM22にトラップされるであろう。
【0021】
図2において、仮想計算機23aはアプリケーション・プログラムの初期のクロスコンパイルを行うためのクロスコンパイラー28を含むことが図示されており、さらに仮想計算機23bはクロスコンパイルされたコードを実行するための実行モジュール29を含むことが図示されている。クロスコンパイルは好ましくは順列アルゴリズムを経由して行われ、その結果は並べ替えられた命令ポインター・テーブル30に格納される。並べ替えられた命令ポインター・テーブル30は複数の順列シーケンスのエントリーを含む。順列シーケンスのそれぞれはアプリケーション・プログラムのクロスコンパイルされたコードのセットに関連している。並べ替えられた命令ポインター・テーブル30内のすべての順列シーケンスは、相互に異なるべきである必要はないが、互いに異なる傾向にある。図2において、並べ替えられた命令ポインター・テーブル30はVMM22内に設置されるように図示されているが、並べ替えられた命令ポインター・テーブル30が仮想計算機23bによってアクセスされることができるならば仮想計算機23a内に設置されることも可能である。
【0022】
順列を実行する典型的な方法は以下の通りである。最初に、命令のサブセット、nが順列の目的のために命令のグループから選択される。すべての命令の順列が等しく有用であるとは限らない。例えば、識別(ID)命令の順列はまったく役に立たない。したがって、ある種のマシン命令(例えばJUMP命令など)が重要な命令として識別されて、並べ替えられるであろう総ての重要な命令を確実にする。
【0023】
順列を生成するためにはいくつかの方法がある。一つの方法は、データ・セグメント中のそれぞれの命令が異なるマッピングを有するような機能に基づいたハッシュあるいは暗号化を利用することである。即ち、マッピングはH(A)、H(A)、・・・、H(A)であって、ここでHは機能に基づくハッシュ、Aは命令である。機能に基づくハッシュあるいは暗号化の使用に伴う問題は、一般的なコンパイルの観点からは、同じ命令が異なるハッシュの結果をもたらすかも知れないことである。例えば、命令Aと命令Aとは同じ命令かも知れないが、H(A)は必ずしもH(A)とは同じではない。
【0024】
他の方法は異なるマッピング機能であるP(A)を利用することである。ここでPは順列であり、Aは命令であるが、P(A)はP(A)、P(A)、・・・P(A)を生成する。この方法は、P(J)が、ここでJは与えられた命令であるが、コード・セグメント中のどこに生じても同じであるべきなので、より予測可能なクロスコンパイル結果をもたらす。
【0025】
順列シーケンスは命令のサブセットであるnが並べ替えられるか変換されるかという方法を指示する。各順列シーケンスは複数のスロットを有するエントリーとして見なすことができ、各スロットは命令番号で満たされることになっている。r番目の順列シーケンスを発生させるために、0とn!−1の間の乱数が最初に選択される。例えば、並べ替えられるのに必要な命令のサブセットであるnが5の場合(これは5!=120の順列シーケンスを意味するが)、乱数101が101番目の順列シーケンスとして0と5!−1の間で選択される。
【0026】
最初の命令番号のスロット位置であるPosは(n−1)!によって除された選択された乱数rの商によって表され、以下の通りである。
【0027】
【数1】

【0028】
分割の余りは、すべてのスロットが命令番号で満たされるまでそれに続く命令番号のスロット位置であるPosの決定のために選択された乱数rを置き換える。各決定に対して、分母(n−1)!のnは一つずつ減らされる。
【0029】
このようにして、選択された乱数101に対して、第1の命令番号のスロット位置は、図3aに示されるように101/(5−1)!=4である。101/(5−1)!の余りは5であり、第2の命令番号のスロット位置は、図3bに示されるように5/(4−1)!=0である。5/(4−1)!の余りは5であり、第3の命令番号のスロット位置は、図3cに示されるように5/(3−1)!=2である。5/(3−1)!の余りは1であり、第4の命令番号のスロット位置は、図3dに示されるように1/(2−1)!=1である。第5の命令番号は、図3eに示されるように残りの開いているスロット位置になる。
【0030】
順列シーケンス「25431」(図3eより)は、次に101番目の順列シーケンスに対するエントリーとして並べ替えられた命令ポインター・テーブル30(図2より)に入力される。アプリケーション・プログラムは、101番目の順列シーケンスにしたがってクロスコンパイラー28(図2より)を経由してクロスコンパイルされたコードのセットに並べ替えられる。実行中には、クロスコンパイルされたコードのセットは、並べ替えられた命令ポインター・テーブル30に格納された101番目の順列シーケンスにしたがって実行モジュール29(図2より)を経由して実行される。
【0031】
例えば、並べ替えられるものとして選択された5つの命令がADD、SUBTRACT、JUMP、BRANCH及びSTOREであるならば、これらの命令の各々は、即ち、命令番号1はADD、命令番号2はSUBTRACT、命令番号3はJUMP、命令番号4はBRANCH、命令番号5はSTOREというように一つの命令番号が割り当てられる。101番目の順列シーケンスが図2のクロスコンパイラー28内でアプリケーション・プログラムのクロスコンパイルを行うために利用される時、アプリケーション・プログラムでの上記5つの命令の各出現は、順列シーケンス「25431」にしたがって変換される。換言すれば、アプリケーション・プログラムでのそれぞれのADD命令はSUBTRACT命令に変換され、アプリケーション・プログラムでのそれぞれのSUBTRACT命令はSTORE命令に変換され、アプリケーション・プログラムでのそれぞれのJUMP命令はBRANCH命令に変換され、アプリケーション・プログラムでのそれぞれのBRANCH命令はJUMP命令に変換され、そしてアプリケーション・プログラムでのそれぞれのSTORE命令はADD命令に変換される。上記変換の逆のことがアプリケーション・プログラムのクロスコンパイルされたコードの実行中に図2の実行モジュール29内で行われる。
【0032】
順列は静的なあるいは動的などちらの方法でも行うことが可能である。もし順列が静的な方法で行われるならば、コンピューター・システムのグループが同じ順列シーケンスを使用するように設定される。そのような実務は、各アプリケーション・プログラムのクロスコンパイルがインストール中に一度だけ実行されることを必要とされるので、情報技術管理者にとってより簡便であろう。
【0033】
もし順列が動的な方法で行われるとするならば、いくつかの選択がある。順列シーケンスのセットは周期的に変更することができる。それらの順列に対するクロスコンパイルは一度だけ実行されることが可能であり、その上コンピューター・システムがブートされるたびに、実際に使用に当たって順列シーケンスに基づいてクロスコンパイルされたプログラムの異なるセットを実行することができる。さらに、順列シーケンスはコンピューター・システムがブートされるたびに不規則に変更することができる。そのような場合、クロスコンパイルは、コンピューター・システム上で動作するクロスコンパイラーによって「オンザフライ(直接処理)」で行われなければならないであろう。
【0034】
さらに、順列シーケンスは各アプリケーション・プログラムに対しても変更されることが可能で、その変更は異なる方法により実施することができる。最も単純な実施は、ストリーミング暗号化アルゴリズムに対するキーとしてアプリケーションの署名ハッシュをVMMに使用させることで、それによってそのアプリケーション・プログラムのための固有の命令セットを発生させることである。如何なる変更されたアプリケーション・プログラムも(バッファー・オーバーフローを引き起こすウィルスによって主記憶装置内で変更されるように)異なる命令セットを発生し始めるであろう。
【0035】
もう一つの方法として、アプリケーション・プログラムが読み込まれるたびにVMMが乱数を発生させ、アプリケーション・プログラムのコード・セグメントがストリーミング暗号化あるいはクロスコンパイルを変更するためのハッシュ(可逆的である必要のない)エンジンを経て実行される。この方法は、P(A)関数がP(A)なる一定の関数になり、予測不可能な状態が維持されるという点でセキュリティーの別のレベルを提供する。
【0036】
本発明は完全に機能的なコンピューター・システムの状況において記述されているが、本発明のメカニズムがさまざまな形態においてプログラム製品として頒布されることが可能で、しかも本発明は実際に頒布を実施するために利用される信号搬送媒体(signal bearing media)の特定のタイプにかかわらず等しく適合することを当業者が高く評価するということに注目することもまた重要である。信号搬送媒体の例は、制限なく、フロッピー・ディスクやコンパクト・ディスクのような記録型媒体やアナログあるいはデジタル通信リンクのような伝送型媒体を含む。
【0037】
発明が特に好ましい実施の形態を参照して図示及び記述されているが、形式及び詳細についてのさまざまな変更が発明の精神及び範囲から外れることなく行われることが当業者によって理解されるであろう。
【図面の簡単な説明】
【0038】
【図1】本発明の好ましい実施の形態に基づくコンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法の概念図である。
【図2】本発明の好ましい実施の形態が組み込まれたコンピューター環境のブロック・ダイアグラムである。
【図3】本発明の好ましい実施の形態にしたがって命令において並べ替えられているシーケンスを表したものである。
【符号の説明】
【0039】
10、20 コンピューター・システム
11 変換モジュール
12、29 実行モジュール
21 ハードウェア構造
22 仮想計算機・マネージャー
23a、23b 仮想計算機
24、26 オペレーティング・システム
25、27 アプリケーション・プログラム
28 クロスコンパイラー
30 並べ替えられた命令ポインター・テーブル

【特許請求の範囲】
【請求項1】
コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に並べ替えられた命令のシーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて順列を行うステップと、
前記並べ替えられた命令のシーケンスの順列シーケンス番号を並べ替えられた命令ポインター・テーブルに格納するステップと、
前記並べ替えられた命令ポインター・テーブルに格納された前記並べ替えられた命令のシーケンスの前記順列シーケンス番号にしたがって、前記並べ替えられた命令のシーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の実行モジュールにおいて、前記並べ替えられた命令のシーケンスを実行するステップとからなる方法。
【請求項2】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項1記載の方法。
【請求項3】
前記順列を実施するための第1の仮想計算機を備えるステップと、
前記実行を実施するための第2の仮想計算機を備えるステップとからなる請求項1記載の方法。
【請求項4】
前記第1及び第2の仮想計算機を制御するために前記コンピューター・システム内に仮想計算機・マネージャーを備えるステップからなる請求項3記載の方法。
【請求項5】
分離した区画において前記第1及び第2の仮想計算機を設置するステップからなる請求項3記載の方法。
【請求項6】
前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるステップからなる請求項3記載の方法。
【請求項7】
コンピューター・システム内で悪意あるソフトウェアの実行を防止するためのコンピューター・プログラムを有するコンピューターに使用可能な媒体であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に並べ替えられた命令のシーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて順列を行うためのプログラム・コード手段と、
前記並べ替えられた命令のシーケンスの順列シーケンス番号を並べ替えられた命令ポインター・テーブルに格納するためのプログラム・コード手段と、
前記並べ替えられた命令ポインター・テーブルに格納された前記並べ替えられた命令のシーケンスの前記順列シーケンス番号にしたがって、前記並べ替えられた命令のシーケンスをプロセッサーの実際のマシン・コードに翻訳できる前記コンピューター・システム内の実行モジュールにおいて、前記並べ替えられた命令のシーケンスを実行するためのプログラム・コード手段とからなるコンピューターに使用可能な媒体。
【請求項8】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項7記載のコンピューターに使用可能な媒体。
【請求項9】
前記順列を実施するための前記プログラム・コード手段を含む第1の仮想計算機を備えるためのプログラム・コード手段と、
実行のための前記プログラム・コード手段を含む第2の仮想計算機を備えるためのプログラム・コード手段とからなる請求項7記載のコンピューターに使用可能な媒体。
【請求項10】
前記第1及び第2の仮想計算機を制御するために前記コンピューター・システム内に仮想計算機・マネージャーを備えるためのプログラム・コード手段を含む請求項9記載のコンピューターに使用可能な媒体。
【請求項11】
分離した区画において前記第1及び第2の仮想計算機を設置するためのプログラム・コード手段を含む請求項9記載のコンピューターに使用可能な媒体。
【請求項12】
前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるためのプログラム・コード手段を含む請求項9記載のコンピューターに使用可能な媒体。
【請求項13】
悪意あるソフトウェアの実行を防止することができるコンピューター・システムであって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に並べ替えられた命令のシーケンスをもたらすために前記アプリケーション・プログラム内で命令のサブセットについて順列を行うための手段と、
前記並べ替えられた命令のシーケンスの順列シーケンス番号を格納するための並べ替えられた命令ポインター・テーブルと、
前記並べ替えられた命令ポインター・テーブルに格納された前記並べ替えられた命令のシーケンスの前記順列シーケンス番号にしたがって、前記並べ替えられた命令のシーケンスを前記コンピューター・システム内でプロセッサーの実際のマシン・コードに翻訳できる実行モジュールにおいて、前記並べ替えられた命令のシーケンスを実行するための手段とからなるコンピューター・システム。
【請求項14】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項13記載のコンピューター・システム。
【請求項15】
前記順列を実施するための手段を含む第1の仮想計算機と、
前記実行のための手段を含む第2の仮想計算機とからなる請求項13記載のコンピューター・システム。
【請求項16】
前記第1及び第2の仮想計算機を制御するための仮想計算機・マネージャーを含む請求項15記載のコンピューター・システム。
【請求項17】
前記第1及び第2の仮想計算機は分離した区画に設置されている請求項15記載のコンピューター・システム。
【請求項18】
前記第1の仮想計算機でのオペレーティング・システムは前記第2の仮想計算機でのオペレーティング・システムと異なっている請求項15記載のコンピューター・システム。
【請求項19】
コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に前記アプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすために前記アプリケーション・プログラムをクロスコンパイルするステップと、
前記コンピューター・システムでプロセッサーの実際のマシン・コードに前記アプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、前記アプリケーション・プログラムのクロスコンパイルされたコードのセットを実行するステップとからなる方法。
【請求項20】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項19記載の方法。
【請求項21】
前記クロスコンパイルを実施するための第1の仮想計算機を備えるステップと、
前記実行を実施するための第2の仮想計算機を備えるステップとからなる請求項19記載の方法。
【請求項22】
前記第1及び第2の仮想計算機を制御するために前記コンピューター・システム内に仮想計算機・マネージャーを備えるステップからなる請求項21記載の方法。
【請求項23】
分離した区画において前記第1及び第2の仮想計算機を設置するステップからなる請求項21記載の方法。
【請求項24】
前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるステップからなる請求項21記載の方法。
【請求項25】
コンピューター・システム内で悪意あるソフトウェアの実行を防止するためのコンピューター・プログラムを有するコンピューターに使用可能な媒体であって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に前記アプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすために前記アプリケーション・プログラムをクロスコンパイルするためのプログラム・コード手段と、
前記コンピューター・システムでプロセッサーの実際のマシン・コードに前記アプリケーション・プログラムの前記クロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、前記アプリケーション・プログラムの前記クロスコンパイルされたコードのセットを実行するためのプログラム・コード手段とからなるコンピューターに使用可能な媒体。
【請求項26】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項25記載のコンピューターに使用可能な媒体。
【請求項27】
クロスコンパイルのための前記プログラム・コード手段を含む第1の仮想計算機を備えるためのプログラム・コード手段と、
実行のための前記プログラム・コード手段を含む第2の仮想計算機を備えるためのプログラム・コード手段とからなる請求項25記載のコンピューターに使用可能な媒体。
【請求項28】
前記第1及び第2の仮想計算機を制御するために前記コンピューター・システム内に仮想計算機・マネージャーを備えるためのプログラム・コード手段を含む請求項27記載のコンピューターに使用可能な媒体。
【請求項29】
分離した区画において前記第1及び第2の仮想計算機を設置するためのプログラム・コード手段を含む請求項27記載のコンピューターに使用可能な媒体。
【請求項30】
前記第1及び第2の仮想計算機において異なるオペレーティング・システムを備えるためのプログラム・コード手段を含む請求項27記載のコンピューターに使用可能な媒体。
【請求項31】
悪意あるソフトウェアの実行を防止することができるコンピューター・システムであって、
前記コンピューター・システムでアプリケーション・プログラムの如何なる実際の実行よりも前に前記アプリケーション・プログラムのクロスコンパイルされたコードのセットをもたらすために前記アプリケーション・プログラムをクロスコンパイルするための手段と、
前記コンピューター・システム内でプロセッサーの実際のマシン・コードに前記アプリケーション・プログラムのクロスコンパイルされたコードのセットを認識し、翻訳できる実行モジュールにおいて、前記アプリケーション・プログラムのクロスコンパイルされたコードのセットを実行するための手段とからなるコンピューター・システム。
【請求項32】
前記アプリケーション・プログラムはコンピューター・システムにおいてクロスコンパイルされないで実行される請求項31記載のコンピューター・システム。
【請求項33】
前記クロスコンパイルのための手段を含む第1の仮想計算機と、
前記実行のための手段を含む第2の仮想計算機とからなる請求項31記載のコンピューター・システム。
【請求項34】
前記第1及び第2の仮想計算機を制御するための仮想計算機・マネージャーを含む請求項33記載のコンピューター・システム。
【請求項35】
前記第1及び第2の仮想計算機は分離した区画に設置されている請求項33記載のコンピューター・システム。
【請求項36】
前記第1の仮想計算機でのオペレーティング・システムは前記第2の仮想計算機でのオペレーティング・システムと異なっている請求項33記載のコンピューター・システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2007−220091(P2007−220091A)
【公開日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−351470(P2006−351470)
【出願日】平成18年12月27日(2006.12.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.フロッピー
【出願人】(505205731)レノボ・シンガポール・プライベート・リミテッド (292)
【Fターム(参考)】