(57)【要約】  【解決手段】  コンピューティング装置でマルウェアを検知する方法。前記方法は、プログラム命令シーケンスを有するソフトウェアプログラムを検査する工程と、前記シーケンスの各命令が一群の疑い基準のいずれかに合っているかを決定する工程と、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである前記合計する工程と、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、前記プログラムレベルスコアが閾値を超える場合、マルウェア検知結果を示すレポートを作成する工程とを含む。  【選択図】      図３
2012501028.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置でマルウェアを検知する方法であって、
前記コンピューティング装置のプロセッサによって、当該プロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスを有するソフトウェアプログラムを検査する工程と、
前記プロセッサによって、前記シーケンスの各命令が一群の疑い基準のいずれかに合っているかを決定する工程と、
前記プロセッサによって、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、
前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである、前記合計する工程と、
前記プロセッサによって、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、
前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すリポートを作成する工程と
を有する方法。
【請求項２】
請求項１記載の方法において、前記検査する工程は、前記コンピュータ可読メモリから前記命令シーケンスの各命令をロードする工程をさらに有するものである。
【請求項３】
請求項１記載の方法において、前記疑い基準は、前記命令によってデータ変換を生じるのかの決定を有するものである。
【請求項４】
請求項１記載の方法において、前記疑い基準は、一群の命令が動作を完了したとき、集合的にデータ変換を生じさせない当該一群の命令に、前記命令が属するしているのかの決定を有するものである。
【請求項５】
請求項１記載の方法において、前記疑い基準は、前記命令によって別の命令へジャンプするのかの決定を有するものである。
【請求項６】
請求項１記載の方法において、前記疑い基準は、少なくとも２つのシーケンシャル命令が同一の意味を有するのかの決定を有するものである。
【請求項７】
請求項１記載の方法において、前記疑い基準は、前記命令が、他の命令によって使用されないフラグを立てるのかの決定を有するものである。
【請求項８】
請求項１記載の方法において、前記疑い基準は、前記命令によって意味のあるデータ回転が生じるのかの決定を有するものである。
【請求項９】
コンピューティング装置でマルウェアを検知する方法であって、
前記コンピューティング装置のプロセッサによって、ソフトウェア解析プログラムを実行する工程であって、
前記プロセッサによって、当該プロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスをロードする工程と、
前記プロセッサによって、実行される際に前記シーケンスの各プログラム命令を検査する工程と、
前記プロセッサによって、前記シーケンスの各命令が、実行中、一群の疑い基準のいずれかに合っているかを決定する工程と、
前記プロセッサによって、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、
前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである、前記合計する工程と
前記プロセッサによって、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、
前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すレポートを作成する工程と
を有する前記ソフトウェア解析プログラムを実行する工程
を有する方法。
【請求項１０】
請求項９記載の方法において、前記疑い基準は、前記命令によってデータ変換が生じるのかの決定を有するものである。
【請求項１１】
請求項９記載の方法において、前記疑い基準は、一群の命令が動作を完了したとき、集合的にデータ変換を生じさせない当該一群の命令に、前記命令が属しているのかの決定を有するものである。
【請求項１２】
請求項９記載の方法において、前記疑い基準は、前記命令によって別の命令へジャンプするのかの判定を有するものである。
【請求項１３】
請求項９記載の方法において、前記疑い基準は、少なくとも２つのシーケンシャル命令が同一の意味を有するのかの決定を有するものである。
【請求項１４】
請求項９記載の方法において、前記疑い基準は、前記命令が、他の命令によって使用されないフラグを立てるのかの決定を有するものである。
【請求項１５】
請求項９記載の方法において、、前記疑い基準は、前記命令によって意味のあるデータ回転が生じるのかの決定を有するものである。
【請求項１６】
コンピューティング装置でマルウェアを検知する方法であって、
前記コンピューティング装置のプロセッサによって、このプロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスを有するソフトウェアプログラムを検査する工程と、
前記プロセッサによって、前記シーケンスの各命令が一群の疑い基準のいずれかに合っているかを決定する工程であって、
前記命令によってデータ変換が生じるのかの決定と、
前記命令によって別の命令へジャンプするのかの決定と、
少なくとも２つのシーケンシャル命令が同一の意味を有するのかの決定と
を有する前記決定する工程と、
前記プロセッサによって、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、
前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成する工程と、
前記プロセッサによって、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、
前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すレポートを作成する工程と
を有する方法。
【請求項１７】
請求項１６記載の方法において、前記検査する工程は、前記コンピュータ可読メモリから前記命令シーケンスの各命令をロードする工程をさらに有するものである。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年８月２８日付け出願の米国仮出願第６１／０９２，６０２号に対して優先権を主張する２００９年８月２７日付け出願の米国特許出願第１２／５４８，７４７号の優先権の利益を主張するものである。
【０００２】
本発明の開示は、通信ネットワークを介して転送されるデータの識別および解析に関し、具体的には、有害なまたは悪意のあるソフトウェアまたはデータの識別、検知、および解析に関する。
【背景技術】
【０００３】
コンピュータネットワーク技術およびインフラストラクチャはここ数年の間で改善されてき来ており、コンピュータネットワーク装置間で転送されるデータ量およびスピードは飛躍的に伸びている。この転送データの中には、マルウェア（ｍａｌｗａｒｅ）と称されるデータクラスがある。マルウェア（または、悪意のあるソフトウェア）は、装置の所有者の認識または同意なしにコンピューティング装置に侵入するように設計されたコンピュータプログラムである。マルウェアは、ソフトウェアまたはコンピュータコードの敵対的な、侵入的な、またはその他の迷惑な様々な形態を含むソフトウェアを総称するクラスとして言及されるようになった。マルウェアは、様々なワーム、トロイの木馬（またはトロイ）、ルートキット、スパイウェア、アドウェア、および他の望ましくない悪意のあるソフトウェアを含む。様々なタイプのマルウェアは、ユーザに関する個人情報を集めて、この情報を情報収集装置に送り返す。他のタイプのマルウェアは、コンピューティング装置の機能を低下、または全く機能させなくする。
【０００４】
マルウェアを識別および駆除する１つの試みは、アンチウイルスソフトである。従来のアンチウイルスソフトウェアは、シーケンスおよびルールに基づく解析を使用して既知のマルウェアを探し出す。しかしながら、マルウェアコードはマルウェアプログラム作成者によって頻繁に変更されるため、検索シーケンスおよびルールに基づく解析では、最新のプログラムの検知に失敗する。
【０００５】
より新しいアンチウイルスソフトウエアは、特に新規で未知のマルウェアプログラムを検知しようとするとき、より高度で精巧な識別技術を使用する。既存のマルウェアプログラムは、マルウェアを実行するのに使用される実際のコーディングに関係なく、アンチウイルスソフトウェアによって識別されるのと同様のパターンのコマンドを共有する。しかしながら、このような方法は、以前に検知されていなパターンの動作を有する新規で未知のウイルスを検知するのにはあまり役に立たない。
【０００６】
この問題に対処するため最近開発されたアンチウイルスソフトウェア検知方法は、疑わしいプログラムの行動を診断する。アンチウイルスソフトウェアが「良いマナー（ｇｏｏｄ  ｍａｎｎｅｒｓ）」と呼ばれるものから大きな相違を見つけた場合、アンチウイルス・ソフトウェア・アプリケーションは、新規のウイルスまたはマルウェアプログラムを検知したとみなす。これらの方法は、一般的用語の「発見的な（ｈｅｕｒｉｓｔｉｃ）」マルウェア検知方法を使用したと言われる。通常、発見的（ヒューリスティック）解析は、検査されるプログラムがある隔離された安全な環境下で起動されて、前記方法でそのパフォーマンスを調べる。前記方法は、可能な限り多くの情報を集めようと試み、検査されるプログラムのパフォーマンスが正規のものと認めることができるか、または前記プログラムが何か普通でないまたは危険なことをしようとしているかを診断する。疑わしい活動が検知された場合には、前記プログラムは、疑わしい或いはさらに有害として分類される。
【０００７】
ヒューリスティック解析（ｈｅｕｒｉｓｔｉｃ  ａｎａｌｙｓｉｓ）は幾つかの利点を提供することができる。これは、検査されるプログラムが過去に分析されたかどうかに係わらず機能することである。これはまた、新しいウイルスおよびトロイを認識することができる。しかしながら、幾つかの不利な点もある。これらは以下を含む。  
１）正確性の欠如。発見的方法は、完全に正確であると認めることができない。正しいソフトウェア動作と有害なソフトウェア動作との間の境界が曖昧である。従って、本当のマルウェアの検知の見逃しとともに、正しいプログラムでの誤認警報がよく起きる。  
２）時間がかかる。有害な結果が起こらないと確信できる安全な環境下でのプログラムの起動には、とても時間がかかる。  
３）対抗手段。マルウェアの作成者は、このタイプの解析を阻止しようと多くのトリックを使ってくる。全てのトラップおよび陰謀を回避するのはきわめて困難である。
【発明の概要】
【課題を解決するための手段】
【０００８】
この文書に記載されている本発明は、システム、方法論、またはプロトコルが変化するため、記載されている特定のシステム、方法論、またはプロトコルに限定されるものではない。本明細書でい使用される用語は、特定の実施形態を説明することのみを目的としており、本発明の開示の範囲を限定することを意図したものではない。
【０００９】
本明細書および添付の特許請求の範囲で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、別段文脈において指示されていない場合には、複数の参照も含む。別段の定義がされていない場合には、本明細書で使用される全ての技術的および科学的用語は、当業者によって一般に理解されるものと同じ意味を有する。本明細書で使用される用語「有する」は、「含むがこれに限定されない」ことを意味する。
【００１０】
１つの一般的な観点において、実施形態はコンピューティング装置でマルウェアを検知する方法を開示している。前記方法は、前記コンピューティング装置のプロセッサによって、当該プロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスを有するソフトウェアプログラムを検査する工程と、前記プロセッサによって、前記シーケンスの各命令が一群の疑い基準のいずれかに合っているかを決定する工程と、前記プロセッサによって、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである前記合計する工程と、前記プロセッサによって、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すレポートを作成する工程とを有する。
【００１１】
別の一般的な観点において、実施形態ではコンピューティング装置でマルウェアを検知する方法を開示している。前記方法は、前記コンピューティング装置のプロセッサによって、ソフトウェア解析プログラムを実行する工程を含む。特に、前記ソフトウェア解析プログラムを実行する工程は、前記プロセッサによって、当該プロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスをロードする工程と、前記プロセッサによって、実行される際に前記シーケンスの各プログラム命令を検査する工程と、前記プロセッサによって、前記前記シーケンスの各命令が、実行中、一群の疑い基準のいずれかに合っているかを決定する工程と、前記プロセッサによって、前記疑い基準のいずれかに合っている前記各命令に命令レベルスコアを割り当てる工程と、前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである前記合計する工程と、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すレポートを作成する工程とを有する。
【００１２】
１つの一般的な観点において、実施形態は、コンピューティング装置でマルウェアを検知する方法を開示している。前記方法は、前記コンピューティング装置のプロセッサによって、当該プロセッサに動作可能に接続されたコンピュータ可読媒体に格納された、プログラム命令シーケンスを有するソフトウェアプログラムを検査する工程と、前記プロセッサによって、前記シーケンスの各命令が一群の疑い基準のいずれかに合っているかを決定する工程であって、この一群の疑い基準は、前記命令によってデータ変換を生じるのかの決定と、前記命令によって別のインストラクションへジャンプするのかの決定と、少なくとも２つのシーケンシャル命令が同一の意味を有するのかの決定とを有するものである前記決定する工程と、前記プロセッサによって、前記疑い基準のいずれかに合っている各命令に命令レベルスコアを割り当てる工程と、前記プロセッサによって、前記各命令の命令レベルスコアを合計して、プログラムレベルスコアを生成するものである前記合計する工程と、前記プログラムレベルスコアが閾値を超えているかを決定する工程と、前記プログラムレベルスコアが前記閾値を超える場合、前記プロセッサによって、マルウェア検知結果を示すレポートを作成する工程とを有する。
【図面の簡単な説明】
【００１３】
本発明の特徴、機能、利益、および利点は、以下の記載および添付の図面とともに明白であろう。
【図１】図１は、技術的に純粋なソフトウェアプログラムに関連する例示的なコードを図示する。
【図２】図２は、悪意のあるソフトウェアプログラムに関連する例示的なコードを図示する。
【図３】図３は、例示的なマルウェア検知プロセスを図示する。
【図４】図４は、図３で説明したプロセスを実施する例示的なコンピューティング装置を図示する。
【発明を実施するための形態】
【００１４】
本発明の開示は、実際の動作環境でプログラムを実行しないで機能させて、潜在的に疑わしいプログラムを解析する新しい発見的方法（ｈｅｕｒｉｓｔｉｃ  ｍｅｔｈｏｄｓ）であり、これにより疑わしいプログラムが有害な動作を実行する可能性を排除する。上述したように、発見的マルウェア検知方法は、疑わしいプログラムが安全な環境で動作している間に疑わしいプログラムを検査するので、本明細書では、この方法を「動的（ｄｙｎａｍｉｃ）」方法と呼ぶ。しかしながら、これらの動的アプローチは、安全な環境でソフトウェアを実行させるのに必要な時間およびリソースに関連する様々な欠点がある。対照的に、ヒューリスティック解析（ｈｅｕｒｉｓｔｉｃ  ａｎａｌｙｓｉｓ）の「静的（ｓｔａｔｉｃ）」方法として下記で説明する方法は、疑わしいプログラムを実行せずに疑わしいプログラムのコードを検査する。
【００１５】
本発明の開示はさらに、プログラムコードを解析する静的方法を説明する。この解析は、単にプログラム動作に基づく範囲から実行されるのではなく、むしろ技術的純粋さに基づく範囲から実行される。この方法は、一般的な「公式」ツールによって作成されたプログラムコードと比較して、このプログラムコードで差異を探す。本明細書において用語「公式ツール（ｏｆｆｉｃｉａｌ  ｔｏｏｌ）」は、よく利用されるコンパイラおよびランタイムコンプレッサを言及している。この開示に記載されている方法では、標準的および正しい方法で作成されたプログラムコードは、技術的に純粋であり、機能的に複雑でなく、更に解析を妨害することを含むあらゆる悪意のあるコーディングトリックを含まないと仮定する。
【００１６】
技術的純粋さ自体は、様々な非論理的若しくは冗長な命令、不必要なジャンプ、おおよそ最適化さていない処理フローなどを含むコードから正しいコードを区別するのを助ける。マルウェア作成者が解析を妨害しようとすればするほど、類似の非論理的問題および技術的エラーがマルウェアコードでより発見され得る。
【００１７】
図１は、公式ツールで作成したプログラム命令の例示的シーケンスを図示する（この例はＭｉｃｒｏｓｏｆｔ  Ｖｉｓｕａｌ  Ｃ＋＋  ６．０によるものに似ている）。図１Ａで示すコードは、よく知られた安全性に問題のないＷＧＥＴ．ＥＸＥプログラムである。このＷＧＥＴ．ＥＸＥコードは、技術的に純粋であり、無用なまたは非論理的な動作を有しない。
【００１８】
図１に示す技術的に純粋なコードと対照的に、図２は、正反対の極端な悪意のあるトロイワームの例である。所定のコンテクスト内で全く意味を持たない、前記トロイワームに含まれる命令は（すなわち、これらの命令の意図は、コード解析を妨害して、マルウェアとしてコード検知されるのを妨害すること）、異なる陰影で表示されている（例えば、ライン１３１４５５５Ａおよび１３１４５５５Ｄ）。
【００１９】
図２で示す例は、前記トロイワームプログラムが最小の正しいおよび意味のある命令（黒色で表示）を含む一方で、プログラムコードの大分は意味の無い不要なデータから成っている。専門家がこのようなプログラムを見ると、直ちにコードが何か変だ、プログラムはきっと悪意のあるものであると言うことができる。このように、アンチウイルスソフトウェアを欺くために実装された巧妙なコーディングトリックおよび技術に単に引っかかるだけでなく、技術的な純粋さを解析するよう、専門家として機能するようにウイルス防衛用ソフトをプログラムすることが望ましい。
【００２０】
図３は、マルウェアプログラムを発見的に解析および検知する例示的プロセス３００を図示する。最初に、前記プロセスは、プログラム命令シーケンスの各々をロードし、ソフトウェアプログラムに含まれるプログラム命令の１つを検査する３０２。解析プロセスまたはソフトウェア、或いは解析ソフトウェアの動作環境に基づいて、前記シーケンスの各命令が個々にロードされる、または複数の命令を含むモジュールが検査のために一度にロードされる３０２。同様に、１つの命令が１回ごとに解析され、または利用可能なリソースに基づいて、複数の命令が同時に解析される。平易にするため、例示的プロセス３００では、単一の命令が１回ごとに解析される。
【００２１】
検査３０２の間、前記命令は疑い基準と比較される３０４。集合的に、前記疑い基準は、各命令が動作したときの当該命令の期待される結果に基づいて評価する。前記解析された命令の異なる結果は様々な疑い基準を満たし、これらの結果に基づいて、命令レベルスコアが各命令に割り当てられる。解析ソフトウェアは各命令を検査し、前記命令が以下の基準のいくつかまたは全てを侵害しているかを決定する３０６。  
１）検査された命令が、実際にある動作を実行するか。例えば、３２ビットレジスタの内容が３２ビットで回転する場合、データは同じ状態のままである。採点システムは、この事実を書き留め、このような命令に十分な数のペナルティを科す。ペナルティは負のスコアであってもよく、またはそれは、所定のレベルを超える合計得点がマルウェアの存在を示すと推定されるように割り当てられた数値の点数制度であってもよい。  
２）検査された命令が、実際にデータを変更若しくは部分的に変更しない命令群に属しているか。例えば、同じレジストリの２つのシーケンシャル否定は、レジストリ内容が全く変わらなかったことを意味する。この場合も先と同様に、妥当な数のペナルティが科せられる。  
３）検査された命令が、別の命令の中へジャンプするか。解析ソフトウェアはこのようなトリックを認識することが可能であり、これに対して高い数のペナルティを科す。  
４）２つのシーケンシャル命令が、同一の意味を有するか。例えば、ＳＴＤ命令による文字列操作方向がセットされ、そのすぐ後で同一の命令が再び実行される場合、その後の命令は、全く冗長であり、従って疑わしい。この場合も先と同様に、ペナルティが科せられる。  
５）さらに使用されないある特定のフラグが設定されているか、またはフラグが再度独立して設定されているか。例えば、比較が実行され、次に別の比較が実行される場合、そのあとの比較の結果は、最初の結果を上書きする。この命令もまたペナルティが科せられる。  
６）データの回転に意味があるか。あるレジストリまたはメモリセクションがより多くのビットによって回転されており、次にオペランドビット幅が回転されている場合、この命令は非論理的であるとみなされ、ペナルティが科せられる。  
７）それ程疑わしくはないが、少なくとも普通ではない他の機能。例えば、エントリポイントに浮動小数点命令を使用、接頭辞連結（ｐｒｅｆｉｘ  ｃｏｎｃａｔｅｎａｔｉｏｎ）、様々な不規則変数の頻繁な使用など。
【００２２】
上述した状態（命令が検知された場合）のいずれかによって、命令レベルスコアが更新処理され３０８、経験、または公式ツールによって生成されたコード若しくは命令との比較に基づいて特定の基準に割り当てられた一定の数のペナルティを反映する。特定の状態に対するペナルティの正確な数は、長期および広範囲なテストに基づいて決定される。システムが追加のプログラムで経験を得ることで、ペナルティが異なる状態に対して修正され得る。
【００２３】
前記解析は、命令が特定の基準を侵害してないかを決定する３０６、または命令が基準を侵害しており、命令レベルスコアが更新処理された３０８場合、当該プロセスは、命令と比較する３０４追加の疑い基準があるかを決定する３１０。追加の基準がある場合、前記命令はさらに比較されて３０４解析され、おそらく前記命令レベルスコアの別の更新処理が生じる３０８。逆に、前記命令と比較する３０４追加の基準がない場合、前記検査された命令の合計命令レベルスコアが決定される３１２。
【００２４】
検査する追加の命令があるかについて決定が行われる３１４。前記命令シーケンスに追加の命令がある場合、プロセスは検査３０２に戻され、当該追加の命令を疑い基準と比較する３０４。一旦全ての命令が検査され３０２、比較され３０４、更に全ての命令レベルスコアが決定される３１２と、前記ソフトウェアプログラムの総スコアが合計される３１６。この合計３１６は、前記命令レベルスコアの各々を単純に加算するか、またはソフトウェアプログラムが侵害する個々の基準の数に基づいて様々な乗数を含む。この合計３１６に基づいて、前記ソフトウェアプログラムが、無害かまたは悪意であるかのいずれかを決定する３１８。この決定３１８は、公式ツールによってコード化された同様のソフトウェアプログラム（例えば、図１に図示したコード）との比較に基づくこともできる。この決定３１８はまた、単に、前記ソフトウェアプログラムのスコアの検査と、マルウェアを識別する解析プログラムによって設定された容認できる閾値とに基づいている。すなわち、スコアが特定の数より上の場合、前記ソフトウェアプログラムは、悪意のあるものとして識別される。一旦識別されると、前記決定３１８の結果を示すレポートが作成され、アプリケーションに応じて、前記ソフトウェアプログラムのさらなる解析が実行される。
【００２５】
図４は、例えば図３で説明したようなマルウェア検知プロセスなどのプログラム命令を含むまたは実行するのに使用される例示的な内部ハードフェアのブロック図である。バス４００は、前記ハードウェアの他の図示されたコンポーネントと相互接続するメイン情報ハイウェイとしての機能を果たす。ＣＰＵ４０５はシステムの中央処理装置であって、プログラムを実行するのに必要な計算および論理演算を実行する。読取り専用メモリ（ＲＯＭ）４１０およびランダムアクセスメモリ（ＲＡＭ）４１５は、例示的な記憶装置を構成する。制御装置４２０は、システムバス４００に接続し、１若しくはそれ以上の随意の記憶装置４２５と接続する。これらの記憶装置４２５は、例えば、外付け若しくは内蔵ＤＶＤドライブ、ＣＤ  ＲＯＭドライブ、ハードドライブ、フラッシュメモリ、ＵＳＢドライブ、または同種のものを含む。前述したように、これらの様々なデバイスおよび制御装置は選択機器である。
【００２６】
プログラム命令は、ＲＯＭ４１０および／またはＲＡＭ４１５に格納される。任意選択として、プログラム命令は、有形コンピュータ可読媒体（例えば、コンパクトディスク、デジタルディスク、フラッシュメモリ、メモリカード、ＵＳＢドライブ、光ディスク記憶媒体（例えば、ブルーレイ（登録商標）ディスクなど）、および／または他の記録媒体など）に格納される。
【００２７】
随意の表示インタフェース４３０は、前記バス４００からの情報が、オーディオ形式、ビジュアル形式、グラフィック形式、または英数字形式で表示部４３５に表示させるのを可能にする。外部装置との交信は、様々な通信ポート４４０を使用して行われる。例示的な通信ポート４４０は、通信ネットワーク（例えば、インターネットまたはイントラネットなど）に取り付けられる。
【００２８】
前記ハードウェアはまた、例えばキーボード４５０または他の入力装置４５５（例えば、マウス、ジョイスティック、タッチスクリーン、リモコン装置、ポインティングデバイス、ビデオ入力装置、および／またはオーディオ入力装置など）などからデータを受け取ることを可能にするインタフェース４４５を含む。
【００２９】
本明細書で説明したヒューリスティック解析プロセスは、あらゆるプログラムセクションで実行されることについては、留意する必要がある。いくつかの状況においては、コードの一部（例えば、エントリポイントの最初の５１２バイトなど）のみを検査するだけで十分である。エミュレータは全プログラムを起動させ、実際に何か重要なものを見つけ出すまで何百万のサイクルでループを行う一方、上述したヒューリスティックはミリ秒内でその結果を提供することができる。
【００３０】
上記で開示されたおよび他の様々な特徴および機能（またはその代替）は、多くの他の異なるシステムまたはアプリケーションに望ましい形で結合することができることは、理解されるべきである。また、様々な現在予見できないまたは予期しない代替、修正、変更、または改善が、後に当業者によって行うことができ得るものであり、それらはまた添付の特許請求の範囲に包含されることを目的としている。
【図１】
2012501028.tif 000003
【図２】
2012501028.tif 000004
【図３】
2012501028.tif 000005
【図４】
2012501028.tif 000006
【国際調査報告】
2012501028.tif 000007
2012501028.tif 000008
2012501028.tif 000009