圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得部と、前記取得部によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出部と、前記算出部によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定部と、を有することを特徴とするデータ特定装置。前記特定部は、前記第1エントロピー値が第1の閾値よりも高い時点からなる高区間と、前記第2エントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が前記高区間よりも遅い低区間とを抽出し、前記高区間の開始時点から前記低区間の終了時点までの間を、前記圧縮又は暗号化された領域が前記メモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定することを特徴とする請求項1に記載のデータ特定装置。データ特定装置によって実行されるデータ特定方法であって、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得工程と、前記取得工程によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出工程と、前記算出工程によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定工程と、を含んだことを特徴とするデータ特定方法。コンピュータを請求項1又は2に記載のデータ特定装置として機能させるためのデータ特定プログラム。しかしながら、上述した従来技術では、アンパッキングに係る作業の効率化に一定の限界があった。具体的には、上述した従来技術では、複数のOEP候補が出力されることが多く、その中から正しいOEPを特定する作業が必要となり、アンパッキングの効率化に一定の限界があった。そこで、本願に開示する技術は、上述した従来技術の問題に鑑みてなされたものであって、アンパッキングに係る作業の効率化を可能にするデータ特定装置、データ特定方法及びデータ特定プログラムを提供することを目的とする。上述した課題を解決し、目的を達成するため、開示の装置は、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得部と、前記取得部によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出部と、前記算出部によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定部とを有することを特徴とする。開示の装置は、アンパッキングに係る作業の効率化を可能にする。以下に添付図面を参照して、本願の開示するデータ特定装置、データ特定方法及びデータ特定プログラムの実施例を詳細に説明する。なお、本願の開示するデータ特定装置、データ特定方法及びデータ特定プログラムは、以下の実施例により限定されるものではない。[実施例1に係るデータ特定装置の構成]実施例1に係るデータ特定装置の構成について説明する。図1は、実施例1に係るデータ特定装置100の構成の一例を説明するための図である。図1に示すように、実施例1に係るデータ特定装置100は、サブシステム1と、サブシステム2と、記憶領域60とを有する。サブシステム1、サブシステム2及び記憶領域60は、図1に示すように、ホストOSOperatingSystem20がインストールされたハードウェア10で動作する。ハードウェア10は、物理的な計算機であり、各種演算処理を実行するCPUCentralProcessingUnitや、各種情報を一時記憶するRAMRandomAccessMemory等を有する。ホストOS20は、ハードウェア10上で動作する各種アプリケーションに種々のサービスを提供する基本ソフトである。ホストOS20は、通常は単にOSと呼ばれるが、本明細書では、物理的な計算機上で動作するOSと、仮想計算機上で動作するOSとを区別するために、前者をホストOSと呼び、後者をゲストOSと呼ぶこととする。サブシステム1は、図1に示すように、下層レイヤーからハードウェア10、ホストOS20、VMMVirtualMachineMonitor:ハイパーバイザー30、ゲストOS40から構成され、ゲストOS40上で監視対象プロセス50が実行される。VMM30は、ハードウェアデバイスを全てソフトウェアにより実現した仮想ハードウェアにより構成されており、図1に示すように、メモリアクセス監視部31と、OEP候補生成部32と、エントロピー計算部33とを有する。ゲストOS40は、VMM30上にて動作させる仮想OSであり、ゲストOS40上で監視対象プロセス50が実行される。ここで、ゲストOS40上で実行される監視対象プロセス50について説明する。図2は、実施例1に係る監視対象プロセス50を説明するための図である。実施例1に係る監視対象プロセス50は、例えば、VMM30が有する仮想メモリに記憶されたプログラムが実行されたプロセスである。仮想メモリに記憶されるプログラムは、例えば、図2のAに示すように、元のプログラムであるオリジナルコードが圧縮又は暗号化され、展開用コードが付加されたプログラムである。このようなパッキングされたプログラムがマルウェアである場合には、プログラムがメモリに格納されると、自己解凍機能などにより以下に記す展開処理が実行された後、オリジナルコードが実行されることとなる。展開処理は、オリジナルコードが実行されるまでの前処理であり、例えば、図2のBに示すように、圧縮又は暗号化されたオリジナルコードを解凍又は復号し、メモリの他のアドレスにコピーする処理などである。展開処理においては、例えば、メモリからの読み込み及びメモリに対する書き込みが1バイトByteごとに実行される。展開用コードは、上述した展開処理を実行させるためのコードである。監視対象プロセス50は、上述した展開処理からメモリにコピーされたオリジナルコードの実行処理までの一連の処理に相当する。現在、ネットワーク上に配布されるマルウェアの大半は、このようなパッキングが施されており、マルウェア本体であるオリジナルコードを解析するために、オリジナルコードを抽出するアンパッキングが重要となっている。図1に戻って、メモリアクセス監視部31は、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する。具体的には、メモリアクセス監視部31は、監視対象プロセス50が図示しない仮想メモリ上で実行する展開処理に係る読み込み命令及び書き込み命令それぞれについて、データが読み書きされたメモリアドレス、読み書きされたデータの値、プログラムカウンタなどを取得する。ここで、メモリアクセス監視部31によって取得される読み書きされたデータの値について説明する。図3は、実施例1に係るメモリアクセス監視部31によって取得されるデータの値を説明するための図である。例えば、メモリアクセス監視部31は、図3に示すように、監視対象プロセス50によって実行される展開処理において、メモリから読み込まれる1バイトごとのデータについて、8つのビットbitで構成された値を1つの値として取得する。一例を挙げると、メモリアクセス監視部31は、図3に示す11010011を1つの値として取得する。すなわち、メモリアクセス監視部31は、1つのビットが0又は1のどちらかの値をとることから、メモリから読み込まれたデータの値として、28=256通りの値を取得することとなる。同様に、メモリアクセス監視部31は、監視対象プロセス50によって実行される展開処理において、メモリに対して書き込まれる1バイトごとのデータについて、8つのビットで構成された値を1つの値として取得する。そして、メモリアクセス監視部31は、データが読み書きされたメモリアドレス、プログラムカウンタなども同時に取得し、取得した情報を後述するエントロピー計算部33に送信する。図1に戻って、OEP候補生成部32は、監視対象プロセス50によって書き込み命令が実行された場合に、書き込み先のメモリアドレスに印を付加する。そして、OEP候補生成部32は、印が付加されたアドレスの値が実行された場合に、図1に示すように、当該アドレスをOEP候補として後述する記憶領域60に出力する。エントロピー計算部33は、メモリアクセス監視部31によって取得された第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、およびメモリアクセス監視部31によって取得された第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する。例えば、エントロピー計算部33は、図1に示すように、読み込みバッファと書き込みバッファとを有し、メモリアクセス監視部31によってデータの値が取得されるごとに、取得されたデータの値を読み込みバッファ又は書き込みバッファに格納する。そして、エントロピー計算部33は、バッファに格納されたデータの値を用いてエントロピー値を算出する。ここで、読み込みバッファ及び書き込みバッファは、それぞれ所定のサイズのFIFOFirstInFirstOut型のバッファである。すなわち、エントロピー計算部33は、バッファのサイズごとのエントロピー値を算出する。なお、読み込みバッファは、メモリアクセス監視部31によって取得された読み込みデータのデータ値を記憶し、エントロピー計算部33によってエントロピー値が算出される。また、書き込みバッファは、メモリアクセス監視部31によって取得された書き込みデータのデータ値を記憶し、エントロピー計算部33によってエントロピー値が算出される。エントロピー計算部33は、読み込まれたデータ及び書き込まれたデータそれぞれについて、以下の式1により読み込み命令又は書き込み命令が実行されるごとのデータのエントロピー値を算出する。例えば、エントロピー計算部33は、式1に示すように、256通りのデータの値を0から255とした場合の読み込みデータ又は書き込みデータのエントロピー値を算出する。そして、エントロピー計算部33は、読み込み命令及び書き込み命令が実行された時点ごとに、読み込みデータ及び書き込みデータのエントロピー値を算出する。なお、式1のpiは、{あるデータDにおける値iを取るバイト数/データDの総バイト数}で表される。図4は、実施例1に係るエントロピー計算部33によるエントロピー算出処理の一例を説明するための図である。図4においては、読み込みデータのエントロピー値の算出を示す。例えば、エントロピー計算部33は、図4のAに示すように、読み込みデータのバイト1の値11010011から順に取得されると、取得された値を読み込みバッファに格納する。そして、エントロピー計算部33は、図4のBに示すように、読み込みバッファのサイズ分のデータのエントロピー値を算出する。例えば、エントロピー計算部33は、図4のBに示すように、読み込み命令が実行された時点で読み込みバッファに格納されたバイト1から3までのデータのエントロピー値を算出する。エントロピー計算部33は、読み込み命令が実行されるごとに、当該命令が実行された時点で読み込みバッファに格納されたデータ値を用いてエントロピー値を算出する。同様に、エントロピー計算部33は、書き込みデータについても、メモリアクセス監視部31によって取得されたデータの値をバッファに格納し、バッファのサイズごとにデータのエントロピー値を算出する。エントロピー計算部33は、書き込み命令が実行されるごとに、当該命令が実行された時点で書き込みバッファに格納されたデータ値を用いてエントロピー値を算出する。そして、エントロピー計算部33は、算出した読み込みデータのエントロピー値及び書き込みデータのエントロピー値を算出した順にログとして記憶領域60に出力する。図1に戻って、記憶領域60は、OEP候補生成部32によって出力されたOEP候補を記憶するOEP候補記憶領域と、エントロピー計算部33によって出力された読み込みデータのエントロピー値及び書き込みデータのエントロピー値とを記憶するログ記憶領域とを有する。ログ記憶領域は、エントロピー計算部33によって出力された読み込みデータのエントロピー値及び書き込みデータのエントロピー値に加えて、書き込みデータのエントロピー値の算出に用いられたデータの書き込み先アドレスを記憶する。記憶領域60は、例えば、ハードディスク、光ディスクなどの記憶装置、または、RAMRandomAccessMemory、フラッシュメモリFlashMemoryなどの半導体メモリ素子である。サブシステム2は、図1に示すように、下層レイヤーからハードウェア10、ホストOS20、解析部70から構成される。解析部70は、図1に示すように、ログ解析部71と、フィルター72とを有し、記憶領域60のOEP候補記憶領域によって記憶されたOEP候補と、記憶領域60のログ記憶領域に記憶された読み込みデータのエントロピー値及び書き込みデータのエントロピー値とを用いて、OEPを特定する。ログ解析部71は、エントロピー計算部33によって算出された第1エントロピー値が所定の閾値よりも高くなった時点から、第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する。また、ログ解析部71は、第1エントロピー値が第1の閾値よりも高い時点からなる高区間と、前記第2エントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が前記高区間よりも遅い低区間とを抽出し、前記高区間の開始時点から前記低区間の終了時点までの間を、前記圧縮又は暗号化された領域が前記メモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定する。具体的には、ログ解析部71は、エントロピー計算部33によって算出され、ログ記憶領域に記憶された読み込みデータのエントロピー値及び書き込みデータのエントロピー値に基づいて、OEP及びオリジナルレコードが読み書きされた時間区間を特定する。より具体的には、ログ解析部71は、読み込みデータのエントロピー値が所定の閾値を上回った時点から書き込みデータのエントロピー値が所定の値を下回った時点までの時間区間の中で書き込み命令が実行された書き込み先のメモリアドレスを抽出して、抽出したメモリアドレスを記憶したフィルター72を生成する。ここで、実施例1に係るログ解析部71によって実行される処理について説明する。図5は、実施例1に係るログ解析部71による第1の処理の一例を説明するための図である。図5においては、読み込みデータに対するログ解析部71の処理について示す。例えば、ログ解析部71は、図5のAに示すように、i回目の読み込み命令が実行された場合におけるデータのエントロピー値Riが所定の閾値を上回ったか否かを判定する際に、以下に記すような処理を実行する。すなわち、ログ解析部71は、エントロピー値Riと、i回目の前後N/2回の読み込み命令が実行された場合におけるデータそれぞれのエントロピー値の平均Piと、所定の閾値CとがRi-Pi>Cを満たすか否かを判定する。一例を挙げて説明すると、例えば、N:300000、C:1.5であった場合には、ログ解析部71は、i回目の前150000回分のエントロピー値及びi回目の後ろ150000回分のエントロピー値の平均値を算出する。そして、ログ解析部71は、算出した平均値をRiの値から減算して、1.5を上回るか否かを判定する。ログ解析部71は、上述した処理を読み込みデータのエントロピー値を取得するごとに実行する。そして、ログ解析部71は、図5のBに示すように、Ri-Pi>Cを満たすようなiの連続区間を全て算出し、図5のCに示すように、算出した連続区間の集合を高区間集合として抽出する。図6は、実施例1に係るログ解析部71による第2の処理の一例を説明するための図である。図6においては、書き込みデータに対するログ解析部71の処理について示す。例えば、ログ解析部71は、図6のAに示すように、i回目の書き込み命令が実行された場合におけるデータのエントロピー値Wiが所定の閾値を下回ったか否かを判定する際に、以下に記すような処理を実行する。すなわち、ログ解析部71は、エントロピー値Wiと、i回目の前後N/2回の読み込み命令が実行された場合におけるデータそれぞれのエントロピー値の平均Qiと、所定の閾値Cとが-Wi-Qi>Cを満たすか否かを判定する。一例を挙げて説明すると、例えば、N:300000、C:1.5であった場合には、ログ解析部71は、i回目の前150000回分のエントロピー値及びi回目の後ろ150000回分のエントロピー値の平均値を算出する。そして、ログ解析部71は、算出した平均値をWiの値から減算して、減算した値に-マイナスを付加した値が1.5を上回るか否かを判定する。ログ解析部71は、上述した処理を書き込みデータのエントロピー値を取得するごとに実行する。そして、ログ解析部71は、図6のBに示すように、-Wi-Qi>Cを満たすようなiの連続区間を全て算出し、図6のCに示すように、算出した連続区間の集合を低区間集合として抽出する。なお、高区間集合及び低区間集合を抽出する際に用いられる区間は、エントロピー値が閾値よりも高い時点及び低い時点が続く区間であれば、どのような区間を用いてもよい。すなわち、上述した連続区間は、あくまでも一例であり、他の例を挙げると、例えば、エントロピー値が閾値よりも高い時点及び低い時点が離散的に続く区間を用いる場合であってもよい。さらに、ログ解析部71は、抽出した高区間集合と低区間集合とを用いて、OEPを特定するためのフィルターを生成する。図7は、実施例1に係るログ解析部71による第3の処理の一例を説明するための図である。例えば、ログ解析部71は、図7のAに示すように、高区間集合の中で一番早く出現した区間を区間Hとして抽出する。また、ログ解析部71は、図7のAに示すように、低区間集合の中で、区間Hの終点よりも始点及び終点が遅い区間の集合である集合Tを抽出する。そして、ログ解析部71は、図7のAに示すように、集合Tのなかで、一番早く出現した区間を区間Lとして抽出する。そして、ログ解析部71は、図7のBに示すように、区間Hの始点から区間Lの終点までの間に書き込み命令が実行された書き込み先アドレスを抽出する。その後、ログ解析部71は、抽出した書き込み先アドレスを記憶させたフィルターを生成する。ここで、読み込みデータのエントロピー値及び書き込みデータのエントロピー値を用いた処理において、以下に示す状態になった場合には、ログ解析部71は、判定のための閾値を下げて、再度処理を実行する。具体的には、ログ解析部71は、高区間集合又は低区間集合のいずれかがない場合、また、集合Tがない場合に、閾値Cからイテレーションごとの閾値の減少値δを減算し、減算後の値を新たな閾値として再度処理を実行する。すなわち、ログ解析部71は、上述した場合には、CC-δとして再度高区間集合及び低区間集合の抽出処理を実行する。例えば、ログ解析部71は、δとして0.1を用いる。また、ログ解析部71は、読み込みデータ及び書き込みデータともに、1回目からN/2回目までの間については、平均値の算出において不足する値にエントロピー値の最大値と最小値との中間値loge256/2を用いる。また、ログ解析部71は、終了前N/2回については、計算の対象外とする。図1に戻って、フィルター72は、記憶領域60によって記憶されたOEP候補を取得して、取得したOEP候補の中から自身が記憶する書き込み先アドレスに含まれないものを削除する。そして、フィルター72は、削除後に残ったOEP候補のなかから一番早く実行されたOEP候補をOEPとして特定し、特定したOEPを図示しない出力部に出力する。解析者は、フィルター72によって出力されたOEPの情報を用いることで、正しいオリジナルコードの解析を実行することができる。上述したように、実施例1に係るデータ特定装置100は、メモリから読み込まれるデータ及びメモリに対して書き込まれるデータのエントロピー値の変化に基づいて、パッキングされたプログラムのオリジナルコードの開始アドレスであるOEPを特定する。これは、読み込まれるデータと書き込まれるデータとが有する性質の違いを利用したものである。すなわち、データを解凍又は復号するためのメモリからデータを読み込む場合には、データは圧縮又は暗号化されているため規則性がなく、その結果、エントロピー値が高くなる。一方、メモリに対して書き込みが実行される場合には、データは、コードの終りにパディングと呼ばれる連続した0の値が書き込まれるケースが多く、その結果、エントロピー値が低くなる。すなわち、圧縮又は暗号化されたオリジナルコードに対して展開処理が実行されると、読み出しデータ及び書き込みデータのエントロピー値が上述したように推移することとなることから、読み込みデータのエントロピー値が高くなった時点から書き込みデータのエントロピー値が低くなった時点までの間に書き込まれたデータは、圧縮又は暗号化されたオリジナルコードである可能性が高い。そして、読み込みデータのエントロピー値が高くなった時点から書き込みデータのエントロピー値が低くなった時点までの間に出現した書き込み先アドレスのうち一番早いものが復元されたコードの開始アドレスであるOEPである可能性が高い。従って、実施例1に係るデータ特定装置100は、OEPを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。実施例1に係るデータ特定装置100に利用されるパッキングとエントロピー値との関係については、以下に示す非特許文献においても言及されており、データ内における各バイト値の数の偏りが少ないほど、そのデータのエントロピー値が高くなり、パッキングによって圧縮もしくは暗号化されている情報は一般に高いエントロピー値を持つことが知られている。非特許文献:RobertLydaJamesHamrockUsingEntropyAnalysistoFindEncryptedandPackedMalwareIEEESecurityandPrivacyv5n2p4045March2007[実施例1に係るデータ特定装置によるOEP特定処理の手順]次に、実施例1に係るデータ特定装置100によるOEP特定処理の手順について、図8を用いて説明する。なお、図8においては、監視対象プロセス50が実行された後の手順について示している。図8は、実施例1に係るデータ特定装置100によるOEP特定処理の手順を示すフローチャートである。図8に示すように、実施例1に係るデータ特定装置100においては、監視対象プロセス50が実行されると、メモリアクセス監視部31は、読み込みデータ及び書き込みデータの値を取得するステップS101。そして、OEP候補生成部32は、書き込み命令が実行された書き込み先のアドレスに印を付加し、印が付加されたアドレスの値が実行された場合に、当該アドレスをOEP候補として生成するステップS102。その後、エントロピー計算部33は、メモリアクセス監視部31によって読み込みデータの値及び書き込みデータの値が取得されるごとに、各データのエントロピー値を算出するステップS103。そして、ログ解析部71は、読み込みデータからの高区間集合の抽出と、書き込みデータからの低区間集合とを実行するステップS104。ここで、ログ解析部71は、高区間集合及び低区間集合が抽出されたか否かを判定するステップS105。高区間集合及び低区間集合が抽出された場合にはステップS105肯定、ログ解析部71は、高区間集合の中で一番早く出現する区間Hを抽出するステップS106。一方、高区間集合又は低区間集合のいずれかが抽出されなかった場合にはステップS105否定、ログ解析部71は、高区間集合及び低区間集合を抽出する際に用いる閾値を下げステップS109、再度高区間集合及び低区間集合の抽出を実行する。ステップS106において、区間Hを抽出すると、ログ解析部71は、低区間集合から区間Hよりも遅い集合Tの抽出を実行するステップS107。ここで、ログ解析部71は、集合Tが抽出されたか否かを判定するステップS108。集合Tが抽出された場合にはステップS108肯定、ログ解析部71は、集合Tの中で一番早く出現する区間Lを抽出するステップS110。一方、集合Tが抽出されなかった場合にはステップS108否定、ログ解析部71は、閾値を下げステップS109、再度高区間集合及び低区間集合の抽出を実行するステップS104。ステップS110において、区間Lを抽出すると、ログ解析部71は、区間Hの始点から区間Lの終点までの間の書き込み命令の書き込み先アドレスを抽出するステップS111。その後、フィルター72は、OEP候補生成部32によって生成されたOEP候補のうち、抽出した書き込み先アドレスに含まれないものを削除するステップS112。そして、フィルター72は、残った候補のうち、一番早いものをOEPと特定してステップS113、処理を終了する。[実施例1の効果]上述したように、実施例1によれば、メモリアクセス監視部31が、圧縮又は暗号化された領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される値と、メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される値とを取得する。エントロピー計算部33が、メモリアクセス監視部31によって取得された所定の容量のデータによって示される値を用いて、所定の回数の読み出し及び書き込みに相当するデータ量ごとに、当該データ量のデータのエントロピー値を算出する。ログ解析部71が、エントロピー計算部33によって算出された読み出しに係るエントロピー値が所定の閾値よりも高くなった時点から、書き込みに係るエントロピー値が所定の閾値よりも低くなった時点までの時間区間の中でメモリに対して最も早く書き込まれた所定の容量のデータの書き込み先を圧縮又は暗号化された領域の書き込み開始位置として特定する。従って、実施例1に係るデータ特定装置100は、OEPを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。また、実施例1によれば、ログ解析部71が、読み出しに係るエントロピー値が第1の閾値よりも高い時点からなる高区間と、書き込みに係るエントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が高区間よりも遅い低区間とを抽出し、高区間の開始時点から低区間の終了時点までの間を、圧縮又は暗号化された領域がメモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定する。実施例1に係るデータ特定装置100は、マルウェアに相当するオリジナルコードを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。例えば、従来技術においては、複数のOEP候補が出力される場合が多く、解析者が出力された複数のOEP候補から正しいOEPを特定する必要があった。そのため、オリジナルコードを抽出するアンパッキングに係る作業に手間がかかり、結果として、オリジナルコードの解析においても効率的に行うことが困難であった。開示の技術は、複数のOEP候補の中から、正しいOEPを特定することができ、アンパッキングに係る作業の効率化を可能にする。その結果、開示の技術は、オリジナルコードの解析についても効率的に行うことを可能にする。これまで実施例1について説明したが、本願が開示する技術は実施例1に限定されるものではない。すなわち、実施例1は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。上述した実施例1では、サブシステム1及び2が同一装置内に内蔵される場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、サブシステム1及び2がそれぞれ異なる装置内に内蔵される場合であってもよい。上述した実施例1では、読み出しデータのエントロピー値に対する閾値と、書き込みデータのエントロピー値に対する閾値とが同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、読み出しデータのエントロピー値に対する閾値と、書き込みデータのエントロピー値に対する閾値とで異なる値を用いる場合であってもよい。また、実施例1では、読み出しデータに対する処理及び書き込みデータに対する処理の双方において、イテレーションごとの閾値の減少値が同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、イテレーションごとの閾値の減少値が読み出しデータに対する処理及び書き込みデータに対する処理とで異なる場合であってもよい。上述した実施例1では、連続区間として始点と終点が異なる場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、始点と終点が同一である場合であってもよい。上述した実施例1では、1バイトのデータの値を取得して、エントロピー値を算出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、2バイトのデータの値を取得して、エントロピー値を算出する場合であってもよい。上述した実施例1では、監視対象プロセス50がVM上で実行される場合について説明した。これは、マルウェアの動的解析をVMM上で実行することにより、解析環境が感染しても容易に復旧することができる点や、耐デバッガ機能を有するマルウェアの解析に有利である点などの利点が得られるためである。すなわち、開示の技術は、これに限定されるものではなく、例えば、実施例1に記載したVMM30で実行される処理を物理的計算機上で実行する場合であってもよい。なお、耐デバッガ機能とは、デバッガを検知した場合に、そのプログラムを終了させる機能である。上述した実施例1では、読み出されるデータの容量と書き込まれるデータの容量とが同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、読み出されるデータの容量と書き込まれるデータの容量とが異なる場合であってもよい。システム構成等例えば、各装置の分散統合の具体的形態例えば、図1の形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散統合することができる。一例を挙げると、メモリアクセス監視部31とOEP候補生成部32とを一つの処理部として統合してもよく、一方、ログ解析部71を、エントロピー値を解析するエントロピー値解析部と、フィルターを生成するフィルター生成部とに分散してもよい。また、解析部70をデータ特定装置100の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、ログ解析部71を別の装置が有し、ネットワークに接続されて協働することで、上述したデータ特定装置100の機能を実現するようにしてもよい。データ特定プログラム上記実施例で説明したデータ特定装置100は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図1に示したデータ特定装置100と同様の機能を実現するデータ特定プログラムを実行するコンピュータの一例を説明する。図9は、実施例2に係るデータ特定プログラムを実行するコンピュータ1000を示す図である。図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPUCentralProcessingUnit1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。メモリ1010は、ROMReadOnlyMemory1011およびRAMRandomAccessMemory1012を含む。ROM1011は、例えば、BIOSBasicInputOutputSystem等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。ここで、図9に示すように、ハードディスクドライブ1090は、例えば、OSOperatingSystem1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。本実施例に係るデータ特定プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施例で説明したメモリアクセス監視部31と同様の情報処理を実行する取得手順と、エントロピー計算部33と同様の情報処理を実行する算出手順と、ログ解析部71と同様の情報処理を実行する特定手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。また、上記実施例で説明した記憶領域60に記憶されるデータのように、データ特定プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、取得手順と、算出手順と、特定手順とを実行する。なお、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、LANLocalAreaNetworkやWANWideAreaNetwork等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。