(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサによって実行されることで、
サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行することと、
前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録することと、
後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも１つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納することと、
前記ファンクションコールのうち少なくとも１つの出力に影響を与えない少なくとも１つのパラメータを除去することと
を前記少なくとも１つのプロセッサに実行させる１又は複数の命令を備える
プログラム。
【請求項２】
前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項１に記載のプログラム。
【請求項３】
前記少なくとも１つのプロセッサによって実行されることで、
全体的なロギングデータを評価し、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせを決定することを前記少なくとも１つのプロセッサに更に実行させる１又は複数の命令を更に備える、請求項１又は２に記載のプログラム。
【請求項４】
前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項１から３の何れか一項に記載のプログラム。
【請求項５】
前記エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含む、請求項１から４の何れか一項に記載のプログラム。
【請求項６】
前記少なくとも１つのプロセッサによって実行されることで、
前記エミュレーションテーブルを電子デバイスに伝達することを前記少なくとも１つのプロセッサに更に実行させる１又は複数の命令を更に備える、請求項１から５の何れか一項に記載のプログラム。
【請求項７】
前記エミュレーションテーブルは、第１ファンクションコールを実行する必要なく、前記シミュレーション環境において前記第１ファンクションコールの実行をシミュレートするために用いられ、前記複数のファンクションコールは、前記第１ファンクションコールを含む、請求項１から６の何れか一項に記載のプログラム。
【請求項８】
少なくとも１つのプロセッサによって実行されることで、
前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録することと、
前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用することと
を前記少なくとも１つのプロセッサに実行させる１又は複数の命令を備える、請求項１から７の何れか一項に記載のプログラム。
【請求項９】
サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行し、  前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも１つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納し、
それぞれのファンクションコールの出力に影響を与えないパラメータを除外する、
ネットワークエミュレーションモジュール
を備える
装置。
【請求項１０】
前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項９に記載の装置。
【請求項１１】
前記ネットワークエミュレーションモジュールは更に、
全体的なロギングデータを評価し、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせを決定する、請求項９又は１０に記載の装置。
【請求項１２】
前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項９から１１の何れか一項に記載の装置。
【請求項１３】
前記エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含む、請求項９から１２の何れか一項に記載の装置。
【請求項１４】
前記ネットワークエミュレーションモジュールは更に、
前記エミュレーションテーブルを電子デバイスに伝達する、請求項９から１３の何れか一項に記載の装置。
【請求項１５】
前記エミュレーションテーブルは、第１ファンクションコールを実行する必要なく、前記シミュレーション環境において前記第１ファンクションコールの実行をシミュレートするために用いられ、前記複数のファンクションコールは、前記第１ファンクションコールを含む、請求項９から１４の何れか一項に記載の装置。
【請求項１６】
前記ネットワークエミュレーションモジュールは、
前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する、請求項９から１５の何れか一項に記載の装置。
【請求項１７】
少なくとも１つのプロセッサによって実行される方法であって、
サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行する段階と、
前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録する段階と、
後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも１つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータをメモリに格納する段階と、
前記ファンクションコールのうち少なくとも１つの出力に影響を与えない少なくとも１つのパラメータを除去する段階と、
を備える方法。
【請求項１８】
電子デバイス上の前記アプリケーションを識別する段階と、
前記エミュレーションテーブルを用いて前記アプリケーションの実行をシミュレーションすることであって、前記エミュレーションテーブルは、前記アプリケーションのそれぞれの前記ファンクションコールのためのパラメータを含む、シミュレーションする段階と
を更に備える、請求項１７に記載の方法。
【請求項１９】
前記パラメータは、入力パラメータ及び出力パラメータを含む、請求項１８に記載の方法。
【請求項２０】
マルウェアの存在のための前記アプリケーションの前記実行の前記シミュレーションを分析する段階を更に備える、請求項１８又は１９に記載の方法。
【請求項２１】
前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項１９又は２０に記載の方法。
【請求項２２】
前記エミュレーションテーブルは、ネットワーク要素によって生成され、前記ネットワーク要素から前記電子デバイスへ通信された、請求項１９から２１の何れか一項に記載の方法。
【請求項２３】
前記エミュレーションテーブルは、
サンドボックス環境で前記アプリケーションを実行することと、
前記アプリケーションのそれぞれのファンクションコールのための前記パラメータを記録することと、
前記エミュレーションテーブルに前記記録されたパラメータを格納することと
によって生成された、請求項１９から２２の何れか一項に記載の方法。
【請求項２４】
前記エミュレーションテーブルの生成の間、ロギングデータが評価され、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせが決定された、請求項１９から２３の何れか一項に記載の方法。
【請求項２５】
前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録する段階と、
前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用する段階であって、前記ファンクションコールの実行をシミュレートすることは、
前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定する段階、および
前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合ことの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信する段階、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する段階と
を備える、請求項１７から２４の何れか一項に記載の方法。
【請求項２６】
アプリケーションのシミュレーションのためのシステムであって、前記システムは、
サンドボックス環境でアプリケーションを実行し、
前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
後でシミュレーション環境で使用して、前記ファンクションコールを実行する必要なく前記ファンクションコールのうち少なくとも１つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納し、
それぞれのファンクションコールの出力に影響を与えないパラメータを除外する、
ネットワークエミュレーションモジュールを備える、
システム。
【請求項２７】
前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項２６に記載のシステム。
【請求項２８】
前記ネットワークエミュレーションモジュールは、
前記サンドボックス環境で複数の前記ファンクションコールを含む前記アプリケーションを実行し、
前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する、請求項２６または２７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２０１５年６月２７日に出願された「ＳＩＭＵＬＡＴＩＯＮ  ＯＦ  ＡＮ  ＡＰＰＬＩＣＡＴＩＯＮ」と題する米国特許出願第１４／７５２，９１１号の利益及びそれらに基づく優先権を主張し、その全体が本明細書に参照により組み込まれる。
【０００２】
本開示は、概して情報セキュリティの分野に関し、より具体的には、アプリケーションのシミュレーションに関する。
【背景技術】
【０００３】
ネットワークセキュリティの分野は、現代社会において、ますます重要になってきている。インターネットは、世界中の種々のコンピュータネットワークの相互接続を可能にしている。特に、インターネットは、様々な種類のクライアントデバイスを介して、種々のコンピュータネットワークに接続された種々のユーザ間でデータを交換するための媒体を提供する。インターネットの使用が、ビジネスコミュニケーション及びパーソナルコミュニケーションを変化させてきた一方、それはまた、悪意のあるオペレータが、コンピュータ及びコンピュータネットワークへ不正アクセスを得るための、及び機密情報の意図的な又は不注意な開示のための手段として用いられている。
【０００４】
ホストコンピュータを感染させる悪意のあるソフトウェア（「マルウェア」）は、ホストコンピュータと関連付けられた企業又は個人からの機密情報の盗取、他のホストコンピュータへの伝播、及び／又は分散サービス妨害攻撃に対する支援、ホストコンピュータからのスパム又は悪意のある電子メールの送信等のような任意の数の悪意のある動作を実行することが可能であり得る。従って、悪意のあるソフトウェアによる悪意のある、不注意な搾取からコンピュータ及びコンピュータネットワークを保護するための重要な管理問題が、残っている。 
【図面の簡単な説明】
【０００５】
本開示及びその特徴並びに利益に対するより完全な理解を提供するため、添付の図と併せて以下の説明が参照される。同様の参照番号は、同様の部分を表す。
【０００６】
【図１】本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの簡略ブロック図である。
【０００７】
【図２】本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの一部の簡略ブロック図である。
【０００８】
【図３】本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの例示的な詳細の簡略図である。
【０００９】
【図４】本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの例示的な詳細の簡略図である。
【００１０】
【図５】一実施形態に係る、通信システムと関連付けられ得る潜在的な動作を例示する簡略フローチャートである。
【００１１】
【図６】一実施形態に係る、通信システムと関連付けられ得る潜在的な動作を例示する簡略フローチャートである。
【００１２】
【図７】一実施形態に係る、ポイントツーポイント構成で配置される例示的なコンピューティングシステムを例示するブロック図である。
【００１３】
【図８】本開示の例示的なＡＲＭエコシステムシステムオンチップ（ＳＯＣ）と関連付けられる簡略ブロック図である。
【００１４】
【図９】一実施形態に係る、例示的なプロセッサコアを例示するブロック図である。
【００１５】
図面の図は、それらの寸法が、本開示の範囲から逸脱することなく大幅に変更され得るることから、必ずしも縮尺通りに描かれていない。
【発明を実施するための形態】
【００１６】
［例示的な実施形態］
図１は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム１００の簡略ブロック図である。通信システム１００は、電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６を含み得る。電子デバイス１０２は、プロセッサ１１０、メモリ１１２、オペレーティングシステム（ＯＳ）１１４、及びセキュリティモジュール１１６を含み得る。セキュリティモジュール１１６は、エミュレーションモジュール１１８を含み得る。エミュレーションモジュールは、エミュレーションテーブル１２０を含み得る。クラウドサービス１０４及びサーバ１０６はそれぞれ、ネットワークセキュリティモジュール１２２、トレーニングセット１２４、及びサンドボックス環境１２６を含み得る。ネットワークセキュリティモジュール１２２は、エミュレーションデータアセッサ１４６及びエミュレーションテーブル１２０を含み得る。電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６は各々、ネットワーク１０８を用いて通信し得る。
【００１７】
例示的な実施形態において、通信システム１００は、データマイニング及び機械学習戦略を用いて、プロファイリングされた動作環境用の関連シミュレーションロジックを自動的にモデル化するシステムを含むように構成され得る。通信システム１００は、（例えば、トレーニングセット１２４から）アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブル（例えば、エミュレーションテーブル１２０）に記録されたパラメータを格納するよう構成され得る。記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含んでよい。ある例では、通信システム１００は、全体的なロギングデータを評価し、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定し得る。通信システム１００はまた、呼び出されたファンクションの出力に影響を与えない任意のパラメータを除外することができる。エミュレーションテーブルは、電子デバイス１０２におけるエミュレーションモジュールによって実行時に解釈可能なシステムファンクション毎のマッピングテーブルを含み得、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含み得る。
【００１８】
図１の要素は、任意の好適な接続（有線又は無線）を採用する１又は複数のインタフェースを通じて互いに連結されてよく、それによりネットワーク（例えば、ネットワーク１０８）通信に対する実行可能な経路を提供する。更に、特定の構成の必要性に基づき、図１のこれらの要素のうち任意の１又は複数のものは、組み合わされ、又はアーキテクチャから除去されてよい。通信システム１００は、ネットワークにおけるパケットの送信又は受信用の伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信が可能な構成を含んでよい。通信システム１００はまた、適切な場合及び特定の必要性に基づいて、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ）、又は任意の他の好適なプロトコルと併せて動作し得る。
【００１９】
通信システム１００の特定の例示的な技術を例示する目的で、ネットワーク環境をトラバースしている場合がある通信を理解することが重要である。以下の基礎的情報は、本開示が適切に説明され得る根拠とみなされてよい。
【００２０】
いくつかのマルウェア検出アプローチは、ソフトウェアエミュレーションの使用に大いに依存している。つまり、新しいソフトウェアアプリケーションが潜在的に危険な挙動を含むかどうかを判断するために、それぞれのマルウェアスキャナが、安全で仮想のエミュレーション環境内で対象のファイルの実行をシミュレートする。その意図は、実行されたファイルが、エミュレーション環境にどのような影響を与えるかだけでなく、またエミュレーション後ファイルがどのようになるかを両方モニタリングすることである。例えば、悪意のあるＷｉｎｄｏｗｓ（登録商標）実行ファイルは、ランタイムパック化又は難読化されていることが多く、エミュレーションを通じてのみ外部の難読化シェルはファイルから除去され得る。
【００２１】
Ｗｉｎｄｏｗｓ（登録商標）  ＯＳ又はウェブブラウザのような環境を合理的に正確にシミュレートするために、システムは、ＯＳ又はブラウザがソフトウェアアプリケーション又はスクリプトコードに公開するシステムファンクションをシミュレートしなければならない。現在のところ、これは、マルウェア研究者によって手動で行われている。例えば、何らかの知られたマルウェアが特定のシステムファンクションへの呼び出しを行う時にはいつでも、そのマルウェアファミリーの検出を開発する研究者は、エミュレーション環境がそのシステムファンクションをシミュレートすることを確認する。
【００２２】
システムファンクションのシミュレーションを手動でオーサリングするこのアプローチは、後手的であり、エラーが発生しやすく、高価である。今日知られている唯一の代替案は、元のＯＳイメージをライセンスし、エミュレーション下でＯＳ全体を実行することである。これには、まず第１に、その高性能コストという非常に明確な制限がある。必要とされるのは、手動でオーサリングされるシミュレーションファンクションとして実行し得るシステム及び方法であるが、同時に、データマイニング及び機械学習の使用によって生成される。
【００２３】
図１に概説されるような、アプリケーションのシミュレーション用の通信システムは、これらの課題（及びその他）を解決することができる。通信システム１００は、モニタリングされた元の現実環境におけるソフトウェアアプリケーションの大規模なトレーニングセットをプロファイルし、発生するシステム呼び出しをそれらの入力パラメータ及び出力パラメータとともに追跡し、最も一般的な組み合わせを決定し、アプリケーションの実行をシミュレートするためにエミュレーションコンポーネントによって用いられ得る一般化されたシミュレーションモデルを計算するよう構成され得る。セキュリティモジュールは、アプリケーションからの悪意のある挙動の兆候に関してシミュレート実行を分析し得る。例えば、挙動シーケンスのマルコフモデルを用いる挙動マルウェア分類システムが、悪意のある挙動に関するファイルを分析するために用いられ得る。
【００２４】
ある例では、通信システム１００は、アプリケーションがＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、又はＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）  ブラウザのような対象の動作環境の元のインストール上で安全に実行され得、モニタリングされたアプリケーションが動作環境に行う全てのシステムファンクション呼び出しが記録されるデータマイニング環境を含むことができる。システムは、ソフトウェアアプリケーションがＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、又はＭｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）  ブラウザのような、対象のＯＳの元のインストール上で安全に実行され得、モニタリングされたアプリケーション又はスクリプトがＯＳ又はブラウザに行う全てのシステムファンクション呼び出しが記録されるデータマイニング環境を可能にする。例えば、カーネルモード、ユーザモード、ブラウザＤＯＭフック等を用いて、モニタリングされたアプリケーション又はスクリプトが記録され得る。記録されたデータは、システムファンクションの名前及びライブラリ、ファンクションに渡される実際の入力パラメータ、並びにファンクションから返される出力パラメータを含み得る。
【００２５】
機械学習コンポーネントは、その後、記録されたデータを評価し、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定し得る。システムはまた、関連するそれらのパラメータのみへの正規化を実行し、システムファンクション毎にマッピングテーブルを生成し得る。マッピングテーブルは、エミュレーションモジュールに送信され得、そこで、実行時に、エミュレーションモジュールは、これらのマッピングテーブルを解釈し、入力パラメータ条件のテーブルエントリのリストが現在のシミュレーション環境状態と対応するかどうかをチェックし、そうである場合、そのテーブルエントリ内で符号化された出力動作を実行し得る。このプロセスは、アプリケーションを実際に実行させる必要なく、アプリケーションのシミュレーションを可能にする。 
【００２６】
更に、システムは、一般的なシステム呼び出しを自動的に決定し、特定の呼び出しを用いて実際のマルウェアサンプルが開始するのを待たないよう構成され得る。手動でオーサリングされたシミュレーションロジックに関するＯ（ｍ）（ｍはバイトコードサイズ）と比較して、単一のシステムファンクションをシミュレートするための性能特性は、Ｏ（ｎ）（ｎはリストサイズ）である。換言すると、リスト条件と手動規則バイトコードとの両方が同等の実行時インタープリタを用いると仮定すると、機械学習の生成されたシステムロジックの使用によって性能に追加的な影響が生じることはない。プロファイリングバックエンド環境を設定し、データマイニング出力を機械学習コンパイラに供給するための最初の１回の開発コストはより高くなるが、一旦そのプロセスが確立されると、継続的なメンテナンスコストは比較的かからない。
【００２７】
図１のインフラストラクチャを参照すると、例示的な実施形態に係る通信システム１００が示される。概して、通信システム１００は、任意の種類の又は任意のトポロジーのネットワークにおいて実装され得る。ネットワーク１０８は、通信システム１００を通じて伝播する情報のパケットを受信及び送信するための、相互接続された通信経路の一連のポイント又はノードを表す。ネットワーク１０８は、ノード間の通信インタフェースを提供し、任意のローカルエリアネットワーク（ＬＡＮ）、仮想ローカルエリアネットワーク（ＶＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ローカルエリアネットワーク（ＷＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、及び、ネットワーク環境における通信を容易にする任意の他の適切なアーキテクチャ又はシステム、あるいはそれらの任意の好適な組み合わせとして、有線及び／又は無線通信を含みつつ構成され得る。
【００２８】
通信システム１００において、パケット、フレーム、信号、データ等を含むネットワークトラフィックは、任意の好適な通信メッセージングプロトコルに従って送信及び受信され得る。好適な通信メッセージングプロトコルは、オープンシステム間相互接続（ＯＳＩ）モデル、又はそれらのあらゆる派生例若しくは変形例（例えば、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ））のような多層スキームを含んでよい。更に、セルラーネットワークを介した無線信号通信が、通信システム１００において提供されてもよい。好適なインタフェース及びインフラストラクチャは、セルラーネットワークとの通信を可能にするために提供されてもよい。
【００２９】
本明細書で用いられている「パケット」という用語は、パケット交換ネットワーク上で、送信元ノードと宛先ノードとの間でルーティングされ得るデータのユニットを指す。パケットは、送信元ネットワークアドレス及び宛先ネットワークアドレスを含む。これらのネットワークアドレスは、ＴＣＰ／ＩＰメッセージングプロトコルにおけるインターネットプロトコル（ＩＰ）アドレスであってよい。本明細書で用いられている「データ」という用語は、電子デバイス及び／又はネットワークにおいて１つのポイントから別のポイントに伝達され得る、任意の種類のバイナリ、数値、音声、ビデオ、テキスト若しくはスクリプトデータ、又は任意の種類のソースコード若しくはオブジェクトコード、又は、任意の適切なフォーマットの任意の他の好適な情報を指す。更に、メッセージ、要求、応答及びクエリは、ネットワークトラフィックの形式であり、従って、パケット、フレーム、信号、データ等を含み得る。
【００３０】
例示的な実装において、電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６は、ネットワーク要素であり、これらは、ネットワークアプライアンス、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、あるいは、ネットワーク環境の情報を交換するべく動作可能な任意の他の好適なデバイス、コンポーネント、要素又はオブジェクトを包含することが意図される。ネットワーク要素は、それらの動作を容易にする、任意の好適なハードウェア、ソフトウェア、コンポーネント、モジュール又はオブジェクト、並びにネットワーク環境において、データ若しくは情報を受信、送信及び／又はその他の方法で伝達するための好適なインタフェースも含み得る。これは、データ又は情報の効果的な交換を可能にする適切なアルゴリズム及び通信プロトコルを含み得る。
【００３１】
通信システム１００と関連付けられた内部構造に関して、電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６の各々は、本明細書に概説されている動作において用いられるべき情報を格納するためのメモリ要素を含み得る。電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６の各々は、任意の好適なメモリ要素（例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、特定用途向け集積回路（ＡＳＩＣ）、等）、ソフトウェア、ハードウェア、ファームウェアにおいて、又は適切で、かつ特定の必要性に基づいた任意の他の好適なコンポーネント、デバイス、要素若しくはオブジェクトにおいて、情報を保存し得る。本明細書に記載されているメモリアイテムの何れも、「メモリ要素」という広義の用語内に包含されているとして解釈されるべきである。更に、通信システム１００において用いられている、追跡されている、送信されている、又は受信されている情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、又は他のストレージ構造において提供され得、その全ては、任意の好適なタイムフレームにおいて参照され得る。そのようなストレージの選択肢の何れも、本明細書で用いられている「メモリ要素」という広義の用語内に含まれ得る。
【００３２】
特定の例示的な実装において、本明細書に概説されているファンクションは、１又は複数の有形媒体内に符号化されているロジック（例えば、ＡＳＩＣ内に設けられる埋込みロジック、デジタル信号プロセッサ（ＤＳＰ）命令、プロセッサによって実行される（オブジェクトコード及びソースコードを潜在的に含む）ソフトウェア、又は他の同様の機械等）によって実装され得、それらは、非一時的コンピュータ可読媒体を含み得る。これらの例のいくつかにおいて、メモリ要素は、本明細書に説明されている動作に用いられるデータを格納できる。これは、本明細書に説明されているアクティビティを行うために実行されるソフトウェア、ロジック、コード又はプロセッサ命令を格納できるメモリ要素を含む。
【００３３】
例示的な実装において、電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６のような通信システム１００のネットワーク要素は、本明細書に概説されている動作を実現又は促進するために、ソフトウェアモジュール（例えば、セキュリティモジュール１１６、エミュレーションモジュール１１８、ネットワークセキュリティモジュール１２２、及びエミュレーションデータアセッサ１４６）を含み得る。これらのモジュールは、特定の構成及び／又はプロビジョニングの必要性に基づき得る、任意の適切な態様で、好適に組み合わされ得る。例示的な実施形態において、そのような動作は、意図される機能を実現するために、これらの要素の外部に実装されるハードウェアによって、又はいくつかの他のネットワークデバイス内に含まれるハードウェアによって実行され得る。更に、モジュールは、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の好適な組み合わせとして実装され得る。これらの要素は、本明細書に概説されているような動作を実現するために、他のネットワーク要素と連携できるソフトウェア（又はレシプロケーティングソフトウェア）も含み得る。
【００３４】
更に、電子デバイス１０２、クラウドサービス１０４、及びサーバ１０６の各々は、本明細書に記載されているようなアクティビティを実行するためのソフトウェア又はアルゴリズムを実行できるプロセッサを含み得る。プロセッサは、本明細書に詳述されている動作を実現するために、データと関連付けられた任意の種類の命令を実行できる。１つの例において、プロセッサは、要素又は物（例えばデータ）を１つの状態又はモノから別の状態又はモノへ変換できる。別の例において、本明細書に概説されているアクティビティは、固定ロジック又はプログラマブルロジック（例えば、プロセッサによって実行されるソフトウェア／コンピュータ命令）で実装され得る。本明細書で識別されている要素は、何らかの種類のプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ）、又はデジタルロジック、ソフトウェア、コード、電子命令若しくはそれらの任意の好適な組み合わせを含むＡＳＩＣであり得る。本明細書に説明されている、潜在的な処理要素、モジュール及び機械の何れも、「プロセッサ」という広義の用語内に包含されていると解釈されるべきである。
【００３５】
電子デバイス１０２は、ネットワーク要素であってよく、例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、パーソナルデジタルアシスタント、スマートフォン、タブレット、又は他の同様のデバイスを含む。クラウドサービス１０４は、電子デバイス１０２にクラウドサービスを提供するよう構成される。クラウドサービスは、概して、インターネットのようなネットワークを介したサービスとして供給されるコンピューティングリソースを用いることと定義され得る。典型的に、計算、ストレージ、及びネットワークリソースは、クラウドインフラストラクチャにおいて提供され、作業負荷をローカルネットワークからクラウドネットワークへ効果的にシフトさせる。サーバ１０６は、サーバ又は仮想サーバのようなネットワーク要素であってよく、何らかのネットワーク（例えば、ネットワーク１０８）を介する通信システム１００において通信を開始することを望んでいる、クライアント、顧客、エンドポイント又はエンドユーザと関連付けられてよい。「サーバ」という用語は、クライアントの要求を果たすため、及び／又は通信システム１００内でクライアントに代わって、何らかの計算タスクを実行するために用いられるデバイスを含む。セキュリティモジュール１１６は、図１において、電子デバイス１０２に配置されているよう表されているが、これは、例示目的に過ぎない。セキュリティモジュール１１６は、任意の好適な構成で組み合わされ得、又は分離され得る。更に、セキュリティモジュール１１６は、クラウドサービス１０４又はサーバ１０６のような電子デバイス１０２によってアクセス可能である別のネットワークと統合され得、又は、別のネットワーク内に分散され得る。
【００３６】
図２を参照すると、図２は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム１００の一部の簡略ブロック図である。クラウドサービス１０４（又はサーバ１０６又は何らかの他ネットワーク要素）は、ネットワークセキュリティモジュール１２２、トレーニングセット１２４、及びサンドボックス環境１２６を含み得る。ネットワークセキュリティモジュール１２２は、エミュレーションデータアセッサ１４６及びエミュレーションテーブル１２０を含み得る。エミュレーションデータアセッサ１４６は、プロファイリングモジュール１２８、データマイニングモジュール１３０、正規化及び一般化モジュール１３２、及び変換モジュール１３４を含み得る。
【００３７】
トレーニングセット１２４は、サンドボックス環境１２６で安全に実行され得る１又は複数のアプリケーションを含み得る。サンドボックス環境１２６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）のようなブラウザ、又はアプリケーションが動作し得る何らかの他の環境のような、対象の動作環境の元のインストールを含み得る。モニタリングされるアプリケーションがサンドボックス環境１２６中に行うシステムファンクション呼び出しが記録される。
【００３８】
プロファイリングモジュール１２８は、各モニタリングされた呼び出しに関するデータを記録するよう構成され得る。記録されたデータは、システムファンクションの名前及びライブラリ、入力パラメータと称される、システムファンクション（例えば、スタックの最上部）に渡される実際のパラメータ、並びに出力パラメータと称される、ファンクション（例えば、ＥＡＸレジスタ）から返されるパラメータを含み得る。データマイニングモジュール１３０は、全体的なロギングデータを評価するよう構成され得、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定する。正規化及び一般化モジュール１３２は、モニタリングされたファンクションの出力に明らかに影響を与えない任意のパラメータを除外し、関連するそれらのパラメータのみにブレークダウンするように構成され得る。変換モジュール１３４は、正規化及び一般化モジュール１３２からのデータを、エミュレーションテーブル１２０に含まれ得るデータに変換するよう構成され得る。エミュレーションテーブル１２０におけるデータは、電子デバイス１０２におけるエミュレーションモジュール１１８によって実行時に解釈可能なシステムファンクション毎のマッピングテーブルを含み得、入力パラメータのそれぞれのセットが与えられると、システムが、アプリケーションのシミュレーション下で返されるべき出力パラメータを迅速に検索することを可能にする。
【００３９】
図３を参照すると、図３は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム１００の一部の簡略図である。図３は、サンドボックス環境１２６におけるアプリケーションの一部の実行の具体例を例示する。サンドボックス環境１２６において、コード１４８は、トレーニングセット１２４内のアプリケーションから取得され得る。コードは、サンドボックス環境１２６内で実行され得、実行することを許可され得る。コードがファンクションコールである場合、次に、呼び出しはフックされ、引数は記録される。例えば、システムスタック１５０内のファンクションコールからの引数が決定され、記録され得る。各ファンクションコールのために記録されたデータは、システムファンクションの名前及びライブラリ、システムファンクションに渡される実際のパラメータ（例えば、入力パラメータ）、並びにファンクションから返されるパラメータ（例えば、出力パラメータ）を含み得る。記録されたデータは、その後（例えば、データマイニングモジュール１３０、正規化及び一般化モジュール１３２、及び変換モジュール１３４によって）処理され、エミュレーションテーブル１２０をポピュレートするために用いられ得る。
【００４０】
図４を参照すると、図４は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの一部の簡略図である。エミュレーションテーブル１２０は、ライブラリカラム１３６、ファンクションカラム１３８、入力パラメータ条件カラム１４０、及び出力パラメータ動作カラム１４２を含み得る。
【００４１】
実行時に、エミュレーションモジュール１１８は、エミュレーションテーブル１２０にアクセスし、入力パラメータ条件のテーブルエントリのリストが現在のシミュレーション環境設定と対応するかどうかをチェックし、そうである場合、そのテーブルエントリ内で符号化された出力動作を実行し得る。入力パラメータは、変数、呼び出し、システム構成、オペレーティングシステム、ファイル構成、データ構造等を含み得る。現在のシミュレーション環境は、アプリケーションが実行又は実行することを許可された場合、アプリケーションが実行するであろう環境である。アプリケーションの実行の適切なシミュレーションのため、入力パラメータのテーブルエントリのリストは、アプリケーションが実行又は実行することを許可された場合、アプリケーションが実行するであろう環境と対応するべきである。例えば、図４に例示されているように、ｍｙｌｉｂ３２．ｄｌｌ内のファンクション「ＧｅｔＳｏｍｅＨａｎｄｌｅＡ」のための入力パラメータが８である場合、次に、出力パラメータ又は動作は、スタック［０］ポインタに「２２」を書き込むこと、及びＥＡＸを１に設定することである。ｍｙｌｉｂ３２．ｄｌｌ内のファンクション「ＧｅｔＳｏｍｅＨａｎｄｌｅＡ」のための入力パラメータが３２である場合、次に、出力パラメータ又は動作は、スタック［０］ポインタに「０」を書き込むこと、ＥＡＸを０に設定することである。これは、エミュレーションモジュール１１８が、アプリケーションを実際に実行する必要なくアプリケーションを実行することをシミュレートし、プロファイリングされた動作環境のための関連するシミュレーションロジックを自動的にモデル化するためにデータマイニング及び機械学習戦略を用いることを可能にする。
【００４２】
図５を参照すると、図５は、一実施形態に係る、アプリケーションのシミュレーションと関連付けられ得るフロー５００の考えられる動作を例示する例示的なフローチャートである。一実施形態において、フロー５００の１又は複数の動作は、エミュレーションデータアセッサ１４６及びネットワークセキュリティモジュール１２２によって実行され得る。５０２において、システムによってアプリケーションが受信される（又は識別される）。例えば、アプリケーションは、トレーニングセット１２４から受信され得る。トレーニングセット１２４は、アプリケーション又はプロセスの大量のバッチを含み得、システムは、トレーニングセット１２４からの無作為に選択されたアプリケーション、トレーニングセット１２４からの知られたマルウェアサンプルを受信し得、又は管理者が、受信されるアプリケーションを選択し得る。５０４において、アプリケーションは、サンドボックス環境で実行することが許可される。例えば、アプリケーションは、サンドボックス環境１２６で実行することが許可されてよい。５０６において、各ファンクションコールについて、ファンクションコールのためのパラメータが決定され、記録される。５０８において、各ファンクションコール及びファンクションコールのパラメータは、エミュレーションテーブルに格納される。
【００４３】
図６を参照すると、図６は、一実施形態に係る、アプリケーションのシミュレーションと関連付けられ得るフロー６００の考えられる動作を例示する例示的なフローチャートである。一実施形態において、フロー６００の１又は複数の動作は、エミュレーションモジュール１１８によって実行され得る。６０２において、システムによってアプリケーションが受信される（又は識別される）。例えば、アプリケーションは、トレーニングセット１２４から受信されてよい。６０４において、エミュレーションテーブルを用いて、アプリケーションのシミュレーションが実行される。６０６において、アプリケーションのシミュレートされた実行は、悪意のあるアクティビティの存在に関して分析される。
【００４４】
図７は、一実施形態に係る、ポイントツーポイント（ＰｔＰ）構成で配置されるコンピューティングシステム７００を例示する。特に、図７は、プロセッサ、メモリ、入力／出力デバイスが、多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。概して、通信システム１００のネットワーク要素のうち１又は複数は、コンピューティングシステム７００と同一の又は同様の態様で構成されてよい。 
【００４５】
図７に例示されているように、システム７００は、いくつかのプロセッサを含み得るが、明確にするために、それらのうちプロセッサ７７０及び７８０の２つのみが示されている。２つのプロセッサ７７０及び７８０が示されている一方、システム７００の一実施形態は、そのようなプロセッサを１つだけ含んでもよいことが理解されるべきである。プロセッサ７７０及び７８０は各々、プログラムの複数のスレッドを実行するための１セットのコア（すなわち、プロセッサコア７７４Ａ及び７７４Ｂ、並びにプロセッサコア７８４Ａ及び７８４Ｂ）を含んでよい。コアは、図１〜図６を参照して上に述べられたものと同様の態様で、命令コードを実行するように構成され得る。各プロセッサ７７０、７８０は、少なくとも１つの共有キャッシュ７７１、７８１を含み得る。共有キャッシュ７７１、７８１は、プロセッサコア７７４及び７８４のような、プロセッサ７７０、７８０の１又は複数のコンポーネントによって利用されるデータ（例えば、命令）を格納し得る。
【００４６】
プロセッサ７７０及び７８０は各々、メモリ要素７３２及び７３４と通信するための集積メモリコントローラロジック（ＭＣ）７７２及び７８２を含んでもよい。メモリ要素７３２及び／又は７３４は、プロセッサ７７０及び７８０によって用いられる様々なデータを格納し得る。代替的な実施形態において、メモリコントローラロジック７７２及び７８２は、プロセッサ７７０及び７８０とは分離したディスクリートロジックであってよい。
【００４７】
プロセッサ７７０及び７８０は、任意の種類のプロセッサであり得、それぞれ、ポイントツーポイント（ＰｔＰ）インタフェース回路７７８及び７８８を用いて、ポイントツーポイントインタフェース７５０を介して、データを交換し得る。プロセッサ７７０及び７８０は各々、ポイントツーポイントインタフェース回路７７６、７８６、７９４及び７９８を用いて、個々のポイントツーポイントインタフェース７５２及び７５４を介して、チップセット７９０とデータを交換し得る。チップセット７９０は、ＰｔＰインタフェース回路であり得るインタフェース回路７９２を用いて、高性能グラフィックスインタフェース７３９を介して、高性能グラフィックス回路７３８とデータを交換してもよい。代替的な実施形態において、図７に例示されている、任意の又は全てのＰｔＰリンクは、ＰｔＰリンクではなく、マルチドロップバスとして実装され得る。
【００４８】
チップセット７９０は、インタフェース回路７９６を介して、バス７２０と通信を行ってよい。バス７２０は、バスブリッジ７１８及びＩ／Ｏデバイス７１６のような、それを介して通信する１又は複数のデバイスを有してよい。バス７１０を介して、バスブリッジ７１８は、キーボード／マウス７１２（又はタッチスクリーン、トラックボールのような他の入力デバイス等）、（モデム、ネットワークインタフェースデバイス、又はコンピュータネットワーク７６０を通じて通信し得る、他の種類の通信デバイスのような）通信デバイス７２６、オーディオＩ／Ｏデバイス７１４、及び／又はデータストレージデバイス７２８のような他のデバイスと通信を行ってよい。データストレージデバイス７２８は、プロセッサ７７０及び／又は７８０によって実行され得るコード７３０を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分は、１又は複数のＰｔＰリンクで実装され得る。
【００４９】
図７に図示されているコンピュータシステムは、本明細書に記載されている様々な実施形態を実装するために利用され得る、コンピューティングシステムの一実施形態の概略図である。図７に図示されているシステムの様々なコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャで、又は任意の他の好適な構成で組み合わされ得ることが理解されるであろう。例えば、本明細書に開示されている実施形態は、スマートセルラーフォン、タブレットコンピュータ、パーソナルデジタルアシスタント、携帯型ゲーム機等のようなモバイルデバイスを含むシステム内に組み込まれ得る。これらのモバイルデバイスには、少なくともいくつかの実施形態においてＳｏＣアーキテクチャが設けられ得ることが理解されるであろう。
【００５０】
図８を参照すると、図８は、本開示の例示的なＡＲＭエコシステムＳＯＣ８００と関連付けられる簡略ブロック図である。本開示の少なくとも１つの例示的な実装例は、本明細書に記載されているアプリケーションのシミュレーションの特徴、及びＡＲＭコンポーネントを含んでよい。例えば、図８の例は、任意のＡＲＭコア（例えば、Ａ−９、Ａ−１５等）と関連付けられてよい。更に、アーキテクチャは、任意の種類のタブレット、スマートフォン（Ａｎｄｒｏｉｄ（登録商標）  フォン、ｉＰｈｏｎｅ（登録商標）を含む）、ｉＰａｄ（登録商標）、Ｇｏｏｇｌｅ  Ｎｅｘｕｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｓｕｒｆａｃｅ（登録商標）、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ（任意の種類のノートブックを含む）、Ｕｌｔｒａｂｏｏｋ（登録商標）システム、任意の種類のタッチ式入力デバイス等の一部であってよい。
【００５１】
図８のこの例において、ＡＲＭエコシステムＳＯＣ８００は、複数のコア８０６−８０７、Ｌ２キャッシュ制御８０８、バスインタフェースユニット８０９、Ｌ２キャッシュ８１０、グラフィックス処理ユニット（ＧＰＵ）８１５、相互接続８０２、ビデオコーデック８２０、及び液晶ディスプレイ（ＬＣＤ）Ｉ／Ｆ８２５を含み得、これらは、ＬＣＤに連結するモバイルインダストリプロセッサインタフェース（ＭＩＰＩ）／高解像度マルチメディアインタフェース（ＨＤＭＩ（登録商標））リンクと関連付けられ得る。
【００５２】
ＡＲＭエコシステムＳＯＣ８００は、加入者識別モジュール（ＳＩＭ）Ｉ／Ｆ８３０、ブートリードオンリメモリ（ＲＯＭ）８３５、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ８４０、フラッシュコントローラ８４５、シリアル周辺インタフェース（ＳＰＩ）マスタ８５０、好適な電力制御８５５、ダイナミックＲＡＭ（ＤＲＡＭ）８６０、及びＦｌａｓｈ８６５も含み得る。加えて、１又は複数の例示的な実施形態は、１又は複数の通信能力、インタフェース及びＢｌｕｅｔｏｏｔｈ（登録商標）８７０、３Ｇモデム８７５、全地球測位システム（ＧＰＳ）８８０及び８０２．１１Ｗｉ−Ｆｉ（登録商標）８８５の例のような特徴を含む。
【００５３】
動作において、図８の例は、比較的低い消費電力と共に、様々な種類のコンピューティング（例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャ等）を可能とする処理能力を提供できる。加えて、このようなアーキテクチャは、任意の数のソフトウェアアプリケーション（例えば、Ａｎｄｒｏｉｄ（登録商標）、Ａｄｏｂｅ（登録商標）  Ｆｌａｓｈ（登録商標）  Ｐｌａｙｅｒ、Ｊａｖａ（登録商標）  Ｐｌａｔｆｏｒｍ  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ（Ｊａｖａ（登録商標）  ＳＥ）、Ｊａｖａ（登録商標）ＦＸ、Ｌｉｎｕｘ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  Ｅｍｂｅｄｄｅｄ、Ｓｙｍｂｉａｎ及びＵｂｕｎｔｕ等）を可能にし得る。少なくとも１つの例示的な実施形態において、コアプロセッサは、連結された低レイテンシレベル２キャッシュを有するアウトオブオーダ・スーパースカラ・パイプラインを実装し得る。
【００５４】
図９は、一実施形態に係るプロセッサコア９００を例示する。プロセッサコア９００は、マイクロプロセッサ、埋込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、又は、コードを実行する他のデバイスのような、任意の種類のプロセッサ用のコアであってよい。図９において、１つのプロセッサコア９００のみが例示されているが、プロセッサは、図９に例示されているプロセッサコア９００の１つより多くを代替的に含んでよい。例えば、プロセッサコア９００は、図７のプロセッサ７７０及び７８０に関連して示され及び説明されている、プロセッサコア７７４ａ、７７４ｂ、７８４ａ及び７８４ｂの、１つの例示的な実施形態を表す。プロセッサコア９００は、シングルスレッドコアであってもよく、又は、少なくとも１つの実施形態に関して、プロセッサコア９００は、コア毎に１つより多くのハードウェアスレッドコンテキスト（又は「ロジカルプロセッサ」）を含み得るという点で、マルチスレッドコアであってもよい。
【００５５】
図９はまた、一実施形態に係る、プロセッサコア９００に連結されたメモリ９０２を例示する。メモリ９０２は、知られた又はそうでなければ当業者に利用可能な多種多様なメモリ（メモリ階層の様々な層を含む）の何れかであってよい。メモリ９０２は、プロセッサコア９００によって実行されるべき１又は複数の命令であり得るコード９０４を含み得る。プロセッサコア９００は、コード９０４によって示される、命令のプログラムシーケンスに従い得る。各命令は、フロントエンドロジック９０６に入り、１又は複数のデコーダ９０８によって処理される。デコーダは、その出力として、予め定義されたフォーマットで固定幅のマイクロオペレーションのようなマイクロオペレーションを生成してよく、又は元のコード命令を反映する他の命令、マイクロ命令、若しくは制御信号を生成してよい。フロントエンドロジック９０６はまた、レジスタリネーミングロジック９１０及びスケジューリングロジック９１２を含み、これらは概してリソースを割り当て、実行の命令に対応する動作をキューに登録する。
【００５６】
プロセッサコア９００は、１セットの実行ユニット９１６−１から９１６−Ｎを有する実行ロジック９１４を含んでもよい。いくつかの実施形態は、特定のファンクション又は複数のファンクションセット専用の多数の実行ユニットを含み得る。他の実施形態は、１つの実行ユニットのみを含んでもよく、又は特定のファンクションを実行できる１つの実行ユニットを含んでもよい。実行ロジック９１４は、コード命令によって指定される動作を実行する。
【００５７】
コード命令によって指定される動作の実行が完了した後、バックエンドロジック９１８は、コード９０４の命令をリタイアできる。１つの実施形態において、プロセッサコア９００は、アウトオブオーダ実行を許可するが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック９２０は、（例えばリオーダバッファ又は同様の）様々な知られた形式を取ってよい。このように、少なくとも、デコーダ、レジスタリネーミングロジック９１０によって利用されるハードウェアレジスタ及びテーブル、並びに実行ロジック９１４によって変更される任意のレジスタ（不図示）により生成される出力に関して、プロセッサコア９００は、コード９０４の実行中に変換される。
【００５８】
図９に例示されていないが、プロセッサは、プロセッサコア９００と共に他の要素をチップ上に含んでよく、少なくともそれらのうちいくつかは、図７に関連して本明細書に示され及び説明されている。例えば、図７に示されているように、プロセッサは、プロセッサコア９００と共にメモリ制御ロジックを含み得る。プロセッサは、Ｉ／Ｏ制御ロジックを含んでよく、及び／又はメモリ制御ロジックと統合されるＩ／Ｏ制御ロジックを含んでよい。
【００５９】
本明細書に提供されている例に関して、インタラクションは、２つ、３つ又はそれより多くのネットワーク要素に関して説明され得ることに留意されたい。しかしながら、これは単に、明確性及び例示目的のためになされているものである。特定の場合には、限定的な数のネットワーク要素のみを参照することによって、所与のセットのフローの機能のうち１又は複数を説明することがより容易になる場合がある。通信システム１００及びその教示は、容易に拡張可能であり、数多くのコンポーネント、並びにより複雑な／高性能の配置及び構成にも対応できることが理解されるべきである。従って、提供されている例は、潜在的に無数の他のアーキテクチャに適用されるので、通信システム１００の範囲を限定し、又はその広範な教示を阻むべきではない。
【００６０】
前述されたフロー図（すなわち図５及び図６）における動作は、考えられる相関シナリオ及びパターンのうち、通信システム１００によって実行され得る、又は通信システム１００内にある、いくつかのものだけを例示していることに留意することも重要である。これらの動作のうちいくつかのものは、適切な箇所で削除され若しくは除去されてよく、又は、これらの動作は、本開示の範囲から逸脱することなく、大幅に修正若しくは変更されてよい。加えて、これらの動作の多数は、１又は複数の追加的な動作と同時に又は並行して実行されていると説明されている。しかしながら、これらの動作のタイミングは、大幅に変更され得る。前述された動作のフローは、例示及び説明目的のために提供されている。任意の好適な配置、時系列、構成及びタイミングのメカニズムが、本開示の教示から逸脱することなく提供され得るという点で、大きな柔軟性が、通信システム１００によって提供される。
【００６１】
本開示は、特定の配置及び構成に関連して詳細に説明されているが、これらの例示的な構成及び配置は、本開示の範囲から逸脱することなく著しく変更され得る。更に、特定のコンポーネントが、特定の必要性及び実装に基づいて、組み合わされ、分離され、排除され、又は追加され得る。更に、通信システム１００は、通信プロセスを容易にする特定の要素及び動作を参照して例示されているが、これらの要素及び動作は、通信システム１００の意図される機能を実現する任意の好適なアーキテクチャ、プロトコル及び／又はプロセスによって置き換えられてよい。
【００６２】
多数の他の変更、代替、変形、改変及び修正が、当業者に確認され得て、本開示は、全てのそのような変更、代替、変形、改変及び修正を添付の特許請求の範囲内に含まれるものとして包含することが意図される。米国特許商標庁（ＵＳＰＴＯ）を補助するため、更に、本明細書に添付の特許請求の範囲の解釈において、本願に基づいて発行された任意の特許のあらゆる読者を補助するため、出願人は、（ａ）「の手段（ｍｅａｎｓ  ｆｏｒ）」又は「の段階（ｓｔｅｐ  ｆｏｒ）」という文言が、特定の特許請求の範囲において具体的に用いられない限り、出願日において本明細書に存在するよう、添付の特許請求の範囲の何れかに米国特許法第１１２条第６段落を援用することを出願人が意図しない、（ｂ）明細書におけるあらゆる記述によって、決して、本開示をそうでなければ添付の特許請求の範囲に反映されないように限定することを出願人が意図しない、ことに留意することを望んでいる。 
【００６３】
［他の留意事項及び例］
例Ｃ１は、少なくとも１つのプロセッサによって実行されるとき、アプリケーションを識別することと、アプリケーションを実行することと、アプリケーションの各ファンクションコールのためのパラメータを記録することと、エミュレーションテーブルに記録されたパラメータを格納することとを少なくとも１つの機械可読媒体に実行させる１又は複数の命令を有する少なくとも１つの機械可読媒体である。
【００６４】
例Ｃ２において、例Ｃ１の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
【００６５】
例Ｃ３において、例Ｃ１−Ｃ２の何れか１つの主題は、命令は、少なくとも１つのプロセッサによって実行されるとき、全体的なロギングデータを評価し、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定することを少なくとも１つの機械可読媒体に更に実行させることを任意で含んでよい。
【００６６】
例Ｃ４において、例Ｃ１−Ｃ３の何れか１つの主題は、命令は、少なくとも１つのプロセッサによって実行されるとき、各ファンクションコールの出力に影響を与えない任意のパラメータを除外することを少なくとも１つの機械可読媒体に更に実行させることを任意で含んでよい。
【００６７】
例Ｃ５において、例Ｃ１−Ｃ４の何れか１つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
【００６８】
例Ｃ６において、例Ｃ１−Ｃ５の何れか１つの主題は、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含むことを任意で含んでよい。
【００６９】
例Ｃ７において、例Ｃ１−Ｃ６の何れか１つの主題は、命令は、少なくとも１つのプロセッサによって実行されるとき、エミュレーションテーブルを電子デバイスに伝達することを少なくとも１つのプロセッサに更に実行させることを任意で含んでよい。
【００７０】
例Ｃ８において、例Ｃ１−Ｃ７の何れか１つの主題は、アプリケーションがサンドボックス環境で実行されることを任意で含んでよい。
【００７１】
例Ａ１において、装置が、ネットワークエミュレーションモジュールを含み得、ネットワークエミュレーションモジュールは、アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納するよう構成される。
【００７２】
例Ａ２において、例Ａ１の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
【００７３】
例Ａ３において、例Ａ１−Ａ２の何れか１つの主題は、ネットワークエミュレーションモジュールは更に、全体的なロギングデータを評価し、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定するよう構成されることを任意で含んでよい。
【００７４】
例Ａ４において、例Ａ１−Ａ３の何れか１つの主題は、ネットワークエミュレーションモジュールは更に、ファンクションコールの出力に影響を与えない任意のパラメータを除外するよう構成されることを任意で含んでよい。
【００７５】
例Ａ５において、例Ａ１−Ａ４の何れか１つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
【００７６】
例Ａ６において、例Ａ１−Ａ５の何れか１つの主題は、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含むことを任意で含んでよい。
【００７７】
例Ａ７において、例Ａ１−Ａ６の何れか１つの主題は、モニタリングモジュールは、エミュレーションテーブルを電子デバイスに伝達するよう更に構成されることを任意で含み得る。
【００７８】
例Ａ８において、例Ａ１−Ａ７の何れか１つの主題は、モニタリングモジュールは、サンドボックス環境でアプリケーションを実行するよう更に構成されることを任意で含み得る。 
【００７９】
例Ｍ１は、電子デバイス上のアプリケーションを識別することと、エミュレーションテーブルを用いてアプリケーションの実行をシミュレートすることであって、エミュレーションテーブルは、アプリケーションの各ファンクションコールのためのパラメータを含む、シミュレートすることとを含む方法である。
【００８０】
例Ｍ２において、例Ｍ１の主題は、パラメータが入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
【００８１】
例Ｍ３において、例Ｍ１−Ｍ２の何れか１つの主題は、マルウェアの存在のためのアプリケーションの実行のシミュレーションを分析することを任意で含んでよい。
【００８２】
例Ｍ４において、例Ｍ１−Ｍ３の何れか１つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
【００８３】
例Ｍ５において、例Ｍ１−Ｍ４の何れか１つの主題は、エミュレーションテーブルは、ネットワーク要素によって生成され、ネットワーク要素から電子デバイスへ通信されたことを任意で含んでよい。
【００８４】
例Ｍ６において、例Ｍ１−Ｍ５の何れか１つの主題は、エミュレーションテーブルは、アプリケーションを識別することと、そのアプリケーションを実行することと、そのアプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納することによって生成されたことを任意で含んでよい。
【００８５】
例Ｍ７において、例Ｍ１−Ｍ６の何れか１つの主題は、エミュレーションテーブルの生成の間、ロギングデータが評価され、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせが決定されたことを任意で含んでよい。
【００８６】
例Ｓ１は、アプリケーションのシミュレーションのためのシステムであり、システムは、アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納するよう構成されるネットワークエミュレーションモジュールを含み得る。
【００８７】
例Ｓ２において、例Ｓ１の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
【００８８】
例Ｘ１は、例Ａ１−Ａ８又は例Ｍ１−Ｍ７の何れか１つに示されるように、方法を実装するための、又は装置を実現するための機械可読命令を含む機械可読記憶媒体である。例Ｙ１は、例示的な方法Ｍ１−Ｍ７の何れかを実行するための手段を含む装置である。例Ｙ２において、例Ｙ１の主題は、プロセッサ及びメモリを含む方法を実行するための手段を任意で含んでよい。例Ｙ３において、例Ｙ２の主題は、機械可読命令を含むメモリを任意で含んでよい。
【図１】
0006583838.tif 000002
【図２】
0006583838.tif 000003
【図３】
0006583838.tif 000004
【図４】
0006583838.tif 000005
【図５】
0006583838.tif 000006
【図６】
0006583838.tif 000007
【図７】
0006583838.tif 000008
【図８】
0006583838.tif 000009
【図９】
0006583838.tif 000010