JP2004326331A - 不正メモリアクセス検知方法及びそのプログラム - Google Patents
不正メモリアクセス検知方法及びそのプログラム Download PDFInfo
- Publication number
- JP2004326331A JP2004326331A JP2003118602A JP2003118602A JP2004326331A JP 2004326331 A JP2004326331 A JP 2004326331A JP 2003118602 A JP2003118602 A JP 2003118602A JP 2003118602 A JP2003118602 A JP 2003118602A JP 2004326331 A JP2004326331 A JP 2004326331A
- Authority
- JP
- Japan
- Prior art keywords
- program code
- memory
- language system
- memory area
- memory access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】JavaVM106の実行部108は、読み込まれたJavaのバイトコードを実行する。ネイティブメソッドライブラリ実行部113は、ネイティブメソッドライブラリを呼び出して実行させる。不正メモリアクセス検出部114は、ネイティブメソッドライブラリの実行中又は実行後に、メモリ確保部111が確保したメモリ領域についてネイティブメソッドライブラリによる不正なメモリアクセスを検出する。
【選択図】図1
Description
【発明の属する技術分野】
本発明は、不正メモリアクセス検知方法に係り、特に不正なメモリアクセスが発生しないシステムと、自由にメモリアクセスを行えるシステムとが混在する環境において好適な不正メモリアクセス検知方法に関する。
【0002】
【従来の技術】
オブジェクト指向言語として一般的に知られているJavaプログラムを実行する環境であるJavaVMは、Javaプログラムを実行する際に使用するメモリ領域の管理を独自に行っており、Javaプログラムが実行されている限りにおいては不正なメモリアクセスが発生しないシステムとなっている(Javaは、米国Sun Microsystems, Inc.の登録商標である)。しかしJavaプログラムを実行する上で必要に応じて呼び出される他言語(例えばC言語)で作成されたプログラムの実行中は、OSがメモリ領域の管理を行っているため、その間はJavaVMでは不正なメモリアクセスが発生したかどうかの検出ができない。そのためJavaプログラムから呼び出された他言語で作成されたプログラムが誤ってJavaVMの管理しているメモリ領域を不正にアクセスして更新してしまう可能性がある。しかしこのような不正メモリアクセスを早期に検出する技術は知られていない。
【0003】
なおこの種の技術として関連するものには、例えば特開平6−44129号公報(特許文献1)、特開平5−28053号公報(特許文献2)などがある。
【0004】
【特許文献1】
特開平6−44129号公報
【特許文献2】
特開平5−28053号公報
【0005】
【発明が解決しようとする課題】
上記の従来技術は、Javaプログラムを実行する上で必要に応じて呼び出される他言語で作成されたプログラムの実行時に、他言語プログラムがJavaVMで管理しているメモリ領域を不正にアクセスして更新した場合、その後に実行されるJavaプログラムがそのメモリ領域にアクセスし異常状態となるまでは不正なメモリアクセスが発生していたことを検知できず、問題のあるプログラムを特定することが困難であった。
【0006】
本発明の目的は、不正なメモリアクセスが発生しないシステムで動作するプログラムから呼ばれた自由にメモリアクセスを行えるシステムで動作するプログラムが不正なメモリアクセスをしたことを早期に検出することにある。
【0007】
【課題を解決するための手段】
本発明は、不正なメモリアクセスが発生しないシステムで動作しているプログラムから呼ばれた自由にメモリアクセスが行えるシステムで動作するプログラムが実行中又は実行後早期に不正なメモリアクセスが発生したことを検出する技術を特徴とする。
【0008】
【発明の実施の形態】
不正なメモリアクセスが発生しないシステムとしてJavaVMを例とし、そのシステムで動作するプログラムとしてJavaで記述したプログラムを例とし、自由にメモリアクセスを行えるシステムで動作するプログラムとしてC言語で記述したネイティブメソッドライブラリを使用する場合を例とする実施の形態について以下図面を用いて説明する。
【0009】
図1は、実施形態のJavaVMの構成とその入力ファイルを示す図である。101は記憶装置上に格納されているJavaソースプログラムである。102はJavaソースプログラムをJavaVMで実行できるように中間言語で記述されるバイトコードに変換するJavaコンパイラである。103はJavaコンパイラで作成したバイトコードが格納されているJavaクラスファイルである。104はバイトコードを実行する際に必要な他のバイトコード、すなわちクラスファイルを収めたクラスライブラリである。105はバイトコードから呼び出されるJava言語以外の言語で記述されたネイティブメソッドライブラリである。106は本発明を実施する言語システムであるJavaVMの本体である。107はJavaクラスファイル103のバイトコードをメモリにロードするバイトコード読み取り部である。108は入力されたバイトコードやネイティブメソッドライブラリ105を呼び出して、Javaプログラムを実際に実行する実行部である。実行部108は、バイトコードを実行する際に必要な他のバイトコードを収めたクラスファイルをロードするクラスライブラリロード部109、Java言語以外の言語で記述されたネイティブメソッドライブラリ105をメモリにロードするネイティブメソッドライブラリロード部110、Javaプログラムを実行する際にJavaVMが必要なメモリ領域を確保するメモリ確保部111、バイトコードを実行するバイトコード実行部112、ネイティブメソッドライブラリ105を実行するネイティブメソッドライブラリ実行部113、ネイティブメソッドライブラリの実行中、または実行後に不正なメモリアクセスが発生したかどうかを検出する不正メモリアクセス検出部114から構成される。
【0010】
なお図示していないが、JavaVM106はOS(オペレーティングシステム)の制御を受ける。このOSはネイティブのメモリ管理機能を有する。ネイティブメソッドライブラリは、このOSのもつメモリ管理機能を利用して自身のメモリ領域を確保する。言うまでもないが、図1のJavaコンパイラ102、JavaVM106及びOSは、CPU、メモリ、記憶装置、入力装置、表示装置などをもつコンピュータのCPUによって実行されるプログラムである。Javaソースプログラム101、Javaクラスファイル103、クラスライブラリ104及びネイティブメソッドライブラリ105は、この記憶装置に格納されるプログラムコードである。Javaクラスファイル103、クラスライブラリ104及びネイティブメソッドライブラリ105は、このコンピュータによって実行されるプログラムコードである。
【0011】
入力装置などからコマンドが投入されることによってJavaVM106が起動され、JavaVM106が実行開始される。バイトコード読み取り部107は、Javaクラスファイル103からバイトコードを読み込むと、実行部108に制御を移し、バイトコード実行部112が読み込まれたバイトコードを実行する。
【0012】
図2は、実行部108のうち本発明に関係する部分の処理手順を示すフローチャートである。ステップ201及び202は、バイトコードを実行する際に必要なクラスライブラリ104をメモリにロードするクラスライブラリロード部109の処理である。ステップ203及び204は、バイトコードを実行する際に必要なネイティブメソッドライブラリ105をメモリにロードするネイティブメソッドライブラリロード部110の処理である。ステップ205は、入力されたバイトコードをJavaVM内で実行する際に必要なメモリを確保するメモリ確保部111の処理である。ステップ206は、実際にバイトコードを実行するバイトコード実行部112の処理である。ステップ207及び208は、ネイティブメソッドライブラリを実行するネイティブメソッドライブラリ実行部113の処理である。ステップ209及び210は、ネイティブメソッドライブラリを実行したとき、不正なメモリアクセスが発生したかどうかを検出する不正メモリアクセス検出部114の処理である。
【0013】
バイトコードが入力されたとき、クラスライブラリロード部109は、ステップ201で他にも必要なバイトコードがあるかどうかを判断する。他にも必要なバイトコードがある場合は、ステップ202でバイトコードを収めたクラスライブラリ104からクラスライブラリをメモリにロードする。
【0014】
ネイティブメソッドライブラリロード部110は、ステップ203で入力されたバイトコードに、Java言語以外の言語で記述されたネイティブメソッドライブラリを呼び出す処理があるかどうかを判断する。ネイティブメソッドライブラリを呼び出す処理がある場合は、ステップ204でネイティブメソッドライブラリ105からネイティブメソッドライブラリをメモリにロードする。
【0015】
メモリ確保部111は、JavaVM106が独自に有するメモリ管理機能を利用して、ステップ205でJavaVM内でバイトコードを実行する際に必要なメモリを確保する。JavaVM106は、将来不正なメモリアクセスが発生した場合でも検知できるように、確保したメモリ領域を全てメモリ管理テーブルに登録する。またメモリ確保部111は、不必要になったメモリを集める処理も行う。
【0016】
バイトコード実行部112は、ステップ206で実際にバイトコードを実行する。ネイティブメソッドライブラリ実行部113は、ステップ207で現在実行しているバイトコードからJava言語以外の言語で記述されたネイティブメソッドライブラリを呼び出すか判断する。ネイティブメソッドライブラリを呼び出す場合は、ステップ208でネイティブメソッドライブラリを呼び出し、呼び出したネイティブメソッドライブラリに実行の制御を渡す。
【0017】
不正メモリアクセス検出部114は、ステップ209でネイティブメソッドライブラリの実行中、または実行後に不正なメモリアクセスが発生したかどうかを検出する。不正なメモリアクセスが発生した場合は、ステップ210で該当するネイティブメソッドライブラリを外部に報告する。不正メモリアクセス検出部114は、エラーメッセージを表示装置に表示するか又は指定されたファイルに出力する。以上のように実行部108の処理が終了すると、制御は再びバイトコード読み取り部107に戻される。
(1)実施例1
図3は、OSがメモリ保護機能をもちかつマルチスレッド制御を行うシステムにおいて、ステップ208から210の処理を実装する場合の処理のフローチャートである。ネイティブメソッドライブラリ実行部113は、ステップ301でこれから呼び出すネイティブメソッドライブラリの処理の中で、不正なメモリアクセスが発生しても検知できるように、ステップ205の処理で確保したJavaVM内で使用しているメモリ領域に書き込み禁止のプロテクトをかける。ネイティブメソッドライブラリ実行部113は、ステップ302でネイティブメソッドライブラリを呼び出す。
【0018】
ネイティブメソッドライブラリ実行中に、プロテクトがかけられたメモリ領域がアクセスされてメモリプロテクション例外が発生したとき、制御はJavaVM106に戻される。プロテクトがかけられたメモリ領域をアクセスしたスレッドがJavaVM内で動作しているスレッドの場合には、JavaVM106の例外処理プログラム(不正メモリアクセス検出部114)は、ステップ303で一旦メモリ領域のプロテクトを外し、ステップ304でプロテクトを外したメモリ領域について正常な更新を行う。ステップ305で再度メモリ領域にプロテクトをかける処理を行う。ステップ303〜305の処理は、他のスレッドがメモリ領域をアクセスしないようにアトミックに行われる。その後、そのまま元の処理に戻って処理を続行する。またプロテクトがかけられたメモリ領域をアクセスしたスレッドがネイティブメソッドライブラリのスレッドの場合は、ステップ306でネイティブメソッドライブラリのプログラムをエラーメッセージとして報告して処理を終了する。
【0019】
例外が発生せずにネイティブメソッドライブラリの実行が終了し、JavaVM106に制御が戻ってきたとき、ネイティブメソッドライブラリ実行部113は、ステップ307でメモリにかけたプロテクトを外す。
【0020】
もしJavaVM内で使用しているメモリ領域にプロテクトをかけない指示があった場合は、ステップ301、303、305、307の処理を実行しない。すなわちネイティブメソッドライブラリが不正なメモリアクセスをしないことが確認されたとき、オーバヘッドとなる処理を除去することができる。
【0021】
図4は、OSがメモリ保護機能をもちかつマルチスレッド制御を行うシステムで、ステップ302で呼び出したネイティブメソッドライブラリの実行中に、不正なメモリアクセスが発生したときの例を示す図である。
【0022】
図4は、不正なメモリアクセスが発生しないJavaVM106のシステムで動作するJavaプログラムから、自由にメモリアクセスを行えるシステムで動作するC言語で記述されたネイティブメソッドライブラリ402の処理が呼ばれた状態を示している。ネイティブメソッドライブラリ(funcA)402は、ポインタipのポイント先である領域403を更新するつもりが、誤ってライトプロテクトがかけられたメモリ領域404内の領域405を更新しようとした。この場合、更新しようとしたスレッドがネイティブメソッドライブラリで動作しているスレッドのためメモリプロテクション例外が発生し、JavaVM106の例外処理プログラムは、その時に実行していたネイティブメソッドライブラリ(funcA)を報告して終了する。もしライトプロテクトがかけられたメモリ領域404内の領域406を更新しようとしたスレッドがJavaVMで動作しているスレッドの場合は、JavaVM106は、そのプロテクトを外して領域406の更新を許し、再びメモリ領域404にライトプロテクトをかける。
(2)実施例2
図5は、OSがメモリ保護機能をもたずかつマルチスレッド制御を行うシステムにおいて、ステップ208から210の処理を実装する場合の処理のフローチャートである。ネイティブメソッドライブラリ実行部113は、ステップ501でステップ205の処理で確保したJavaVM内で使用しているメモリ領域についてその内容のチェックサムを求めて何かの記憶領域に退避する。この処理は、他のスレッドがメモリ領域を更新してチェックサムも更新しないようにアトミックに行われる。
【0023】
複数のスレッドがネイティブメソッドライブラリを実行している時に、不正なメモリアクセスが発生した場合、どのスレッドで実行しているネイティブメソッドライブラリに問題があるのか特定できなくなる。この状態を避けるためにネイティブメソッドライブラリ実行部113は、ステップ502で他のJavaVMのスレッドがネイティブメソッドライブラリ105を実行している場合は、そのスレッドが実行しているネイティブメソッドライブラリ105の実行が終わるまで待つ。その後ネイティブメソッドライブラリ実行部113は、ステップ503でネイティブメソッドライブラリを呼び出す。
【0024】
JavaVM内で動作しているスレッドがメモリを更新する場合は、ステップ504で本来のメモリ更新を許し、ステップ505でJavaVMのスレッドが更新した部分のみの更新前後の差分を計算し、新しいチェックサムによってステップ501で退避したチェックサムを更新する。この処理は、他のスレッドがメモリ領域を更新してチェックサムも更新しないようにアトミックに行われる。
【0025】
JavaVM内で動作しているスレッドがメモリを更新する時に、他のJavaVMのスレッドがネイティブメソッドライブラリを呼び出していない場合は、ステップ505の処理を行う必要はない。ネイティブメソッドライブラリのスレッドがメモリ領域を更新する場合は、不正なメモリアクセスがあってもそのまま処理を続行する。
【0026】
ネイティブメソッドライブラリから処理が戻ってきたとき、ネイティブメソッドライブラリ実行部113は、ステップ506でステップ205の処理で確保したJavaVM内で使用しているメモリ領域の内容について現在のチェックサムを求める処理をアトミックに行う。不正メモリアクセス検出部114は、ステップ507で退避しておいたチェックサムとステップ506で求めたチェックサムとを比較する。両者が不一致の場合は、ステップ508で直前に呼び出したネイティブメソッドライブラリをエラーメッセージとして外部に報告して処理を終了する。
【0027】
もしJavaVM内で使用しているメモリ領域のチェックサムを求めない指示があった場合は、ステップ501、502、505から508の処理は実行しない。
【0028】
図6は、OSがメモリ保護機能をもたずかつマルチスレッド制御を行うシステムで、ステップ503で呼び出したネイティブメソッドライブラリの実行中に、不正なメモリアクセスが発生したときの例を示す図である。
【0029】
図6は、不正なメモリアクセスが発生しないJavaVM106のシステムで動作するJavaプログラムから、自由にメモリアクセスを行えるシステムで動作するC言語で記述されたネイティブメソッドライブラリ402の処理が呼ばれた状態を示している。ネイティブメソッドライブラリ実行部113は、ネイティブメソッドライブラリ402を呼ぶ前にJavaVM内で使用しているメモリ領域404内の領域606にチェックサムを退避する(ステップ501)。ネイティブメソッドライブラリ(funcA)402は、ポインタipのポイント先である領域403を更新するつもりが、誤ってJavaVM内で使用しているメモリ領域404内の領域405を更新して、たまたま処理が正常に終了した。この場合、制御は再びネイティブメソッドライブラリ402の処理を呼び出したJavaプログラムの呼び出し元に戻ってくる。その直後、JavaVM内で使用しているメモリ領域404のチェックサムを求める処理(ステップ506)を実行し、求めたチェックサムと領域606に退避しておいたチェックサムの比較を行う(ステップ507)。JavaVM内で使用しているメモリ領域404内の領域405が不正に更新されているため比較結果が不一致となり、不正メモリアクセス検出部114は、直前に呼ばれたネイティブメソッドライブラリ402に問題があることを報告して終了する。もしJavaVMで動作しているスレッドがチェックサムによってライトプロテクトがかけられたメモリ領域404の領域406を更新した場合は、領域406の更新前後の差分を求め、領域606に退避してあるチェックサムの値を更新する(ステップ505)。
【0030】
なおチェックサムの値を格納する領域606は、メモリ領域404内に限られず、任意のメモリ又は記憶装置でよい。
(3)実施例3
図7は、OSがメモリ保護機能をもちかつマルチスレッド制御を行うシステムにおいて、JavaVMからネイティブメソッドライブラリを呼び出す時に、JavaVM内で動作している他のスレッドを停止させることができる場合のステップ208〜210を実装する処理のフローチャートである。実行部108は、ステップ701でこれからライトプロテクトをかけるJavaVM内で使用しているメモリ領域をJavaVMで起動している他のスレッドがアクセスしないように、現在起動しているJavaVM内の他のスレッドの実行を停止させる。実行部108は、ステップ702でこれから呼び出すネイティブメソッドライブラリの処理の中で、不正なメモリアクセスが発生しても検知できるように、ステップ205の処理で確保したJavaVM内で使用しているメモリ領域にプロテクトをかける。
【0031】
ネイティブメソッドライブラリ実行部113は、ステップ703でネイティブメソッドライブラリを呼び出す。ネイティブメソッドライブラリ実行中に、ライトプロテクトがかけられたメモリ領域がアクセスされてメモリプロテクション例外が発生した場合、ステップ704で、止めたJavaVM内の他のスレッドを再開させる。メモリ領域をアクセスしたスレッドはJavaVMのスレッドではないので、不正メモリアクセス検出部114は、ステップ705でその時に実行していたネイティブメソッドライブラリのプログラムを報告して処理を終了させる。
【0032】
正常にネイティブメソッドライブラリから処理が戻ってきたとき、実行部108は、ステップ706でメモリにかけたプロテクトを外し、ステップ707で、止めていたJavaVM内の他のスレッドを再開させる。
(4)実施例4
図8は、OSがメモリ保護機能をもたずかつマルチスレッド制御を行うシステムにおいて、JavaVMからネイティブメソッドライブラリを呼び出す時に、JavaVM内で動作している他のスレッドを停止させることができる場合のステップ208〜210を実装する処理のフローチャートである。実行部108は、ステップ801でこれからチェックサムを求めるJavaVM内で使用しているメモリ領域をJavaVM内で起動している他のスレッドがアクセスしないように、現在起動しているJavaVM内の他のスレッドを全て止める。ネイティブメソッドライブラリ実行部113は、ステップ802でステップ205の処理で確保したJavaVM内で使用しているメモリ領域のチェックサムを求めて何らかの記憶領域に退避する。
【0033】
ネイティブメソッドライブラリ実行部113は、ステップ803でネイティブメソッドライブラリを呼び出す。ネイティブメソッドライブラリのスレッドがメモリ領域を更新する場合は、不正なメモリ領域であってもそのまま処理は続行する。
【0034】
ネイティブメソッドライブラリから処理が戻ってきたとき、ネイティブメソッドライブラリ実行部113は、ステップ804で確保したJavaVM内で使用しているメモリ領域の現在のチェックサムを求める。次に実行部108は、ステップ805で、止めていたJavaVM内の他のスレッドを再開させる。
【0035】
不正メモリアクセス検出部114は、ステップ806で退避しておいたチェックサムとステップ804で求めたチェックサムとを比較する。両者が不一致の場合は、不正メモリアクセス検出部114は、ステップ807で直前に呼び出したネイティブメソッドライブラリをエラーメッセージとして外部に報告して処理を終了する。
【0036】
なお上記実施例2及び実施例4では、チェックサムを計算したが、チェックサムを計算する代わりにハッシュ関数を用いたりデータ圧縮した結果を用いるなど、上記メモリ領域の内容を入力とする関数手続きによって得られる結果のコード情報であって上記メモリ領域の内容に一意又は高い確率で対応するコード情報が得られるような関数手続きであれば何でもよい。もちろん上記メモリ領域の内容をそのままメモリなどの記憶装置に退避する場合も含まれる。
【0037】
以上の実施例において、必要とするJavaVM内のスレッド管理、アトミック処理等は、従来からJavaVMに備わっている機能であるため詳述しない。
【0038】
【発明の効果】
本発明によれば、不正なメモリアクセスが発生しないシステムで動作しているプログラムから呼ばれた自由にメモリアクセスを行えるシステムで動作するプログラムが実行中又は実行後早期に不正なメモリアクセスが発生したことを検出できる。
【図面の簡単な説明】
【図1】実施形態のJavaVMの構成図である。
【図2】実施形態の実行部108の処理手順を示すフローチャートである。
【図3】実施例1の処理手順を示すフローチャートである。
【図4】実施例1における不正メモリアクセスを説明する図である。
【図5】実施例2の処理手順を示すフローチャートである。
【図6】実施例2における不正メモリアクセスを説明する図である。
【図7】実施例3の処理手順を示すフローチャートである。
【図8】実施例4の処理手順を示すフローチャートである。
【符号の説明】
103…Javaクラスファイル、105…ネイティブメソッドライブラリ、106…JavaVM、113…ネイティブメソッドライブラリ実行部、114…不正メモリアクセス検知部。
Claims (10)
- 独自のメモリ管理機能を有する言語システムと、前記言語システムの制御下で実行され前記言語システムが確保した第1のメモリ領域にアクセスする第1のプログラムコードと、OSの制御下で直接実行され前記OSが確保した第2のメモリ領域にアクセスする第2のプログラムコードとが実行されるコンピュータにおいて、前記第2のプログラムコードによる前記第1のメモリ領域への不正なメモリアクセスを検知するための前記言語システムによって実行される方法であって、
前記言語システムは、前記第1のプログラムコードが前記第2のプログラムコードを呼び出す前に前記第1のメモリ領域についてメモリプロテクションを設定し、前記第2のプログラムコードを呼び出して実行させ、メモリプロテクション例外が発生したとき前記第2のプログラムコードによる不正メモリアクセスを外部に報告し、前記第2のプログラムコードの実行が終了して前記言語システムに制御が戻ったときに前記メモリプロテクションを解除することを特徴とする不正メモリアクセス検知方法。 - 前記言語システムは、さらに前記メモリプロテクション例外が発生したとき、前記第1のプログラムコードによる前記第1のメモリ領域への正常なメモリアクセスであることを検出した場合には、前記メモリプロテクションを解除し、前記正常なメモリアクセスを許し、再び前記メモリプロテクションを設定することを特徴とする請求項1記載の不正メモリアクセス検知方法。
- 前記第1のプログラムコードがマルチスレッド制御下で実行される場合に、前記言語システムは、あるスレッドが前記第2のプログラムコードを呼び出す間、他のスレッドの実行を停止させることを特徴とする請求項1記載の不正メモリアクセス検知方法。
- 独自のメモリ管理機能を有する言語システムと、前記言語システムの制御下で実行され前記言語システムが確保した第1のメモリ領域にアクセスする第1のプログラムコードと、OSの制御下で直接実行され前記OSが確保した第2のメモリ領域にアクセスする第2のプログラムコードとが実行されるコンピュータにおいて、前記第2のプログラムコードによる前記第1のメモリ領域への不正なメモリアクセスを検知するための前記言語システムによって実行される方法であって、
前記言語システムは、前記第1のプログラムコードが前記第2のプログラムコードを呼び出す前に前記第1のメモリ領域についてその内容に対応するコード情報を保存し、前記第2のプログラムコードを呼び出して実行させ、前記第2のプログラムコードの実行が終了して前記言語システムに制御が戻ったときに前記第1のメモリ領域の内容に対応するコード情報が保存されたコード情報と一致するか否かを判定し、不一致の場合に前記第2のプログラムコードによる不正メモリアクセスを外部に報告することを特徴とする不正メモリアクセス検知方法。 - 前記言語システムは、さらに前記第2のプログラムコードの呼び出し中に前記第1のプログラムコードによる前記第1のメモリ領域への正常なメモリ更新を検出したとき、更新された前記第1のメモリ領域の内容に対応するコード情報によって前記保存されたコード情報を更新することを特徴とする請求項4記載の不正メモリアクセス検知方法。
- 前記第1のプログラムコードがマルチスレッド制御下で実行される場合に、前記言語システムは、あるスレッドが前記第2のプログラムコードを呼び出す間、他のスレッドの実行を停止させることを特徴とする請求項4記載の不正メモリアクセス検知方法。
- 独自のメモリ管理機能を有する言語システムと、前記言語システムの制御下で実行され前記言語システムが確保した第1のメモリ領域にアクセスする第1のプログラムコードと、OSの制御下で直接実行され前記OSが確保した第2のメモリ領域にアクセスする第2のプログラムコードとが実行されるコンピュータにおいて、前記コンピュータに前記第2のプログラムコードによる前記第1のメモリ領域への不正なメモリアクセスを検知する前記言語システムの機能を実現させるためのプログラムであって、
前記コンピュータに、前記第1のプログラムコードが前記第2のプログラムコードを呼び出す前に前記第1のメモリ領域についてメモリプロテクションを設定する機能、前記第2のプログラムコードを呼び出して実行させる機能、メモリプロテクション例外が発生したとき前記第2のプログラムコードによる不正メモリアクセスを外部に報告する機能、および前記第2のプログラムコードの実行が終了して前記言語システムに制御が戻ったときに前記メモリプロテクションを解除する機能を実現させるためのプログラム。 - 前記コンピュータに、さらに前記メモリプロテクション例外が発生したとき、前記第1のプログラムコードによる前記第1のメモリ領域への正常なメモリアクセスであることを検出した場合には、前記メモリプロテクションを解除する機能、前記正常なメモリアクセスを許す機能、および再び前記メモリプロテクションを設定する機能を実現させることを特徴とする請求項7記載のプログラム。
- 前記第1のプログラムコードがマルチスレッド制御下で実行される場合に、前記コンピュータに、あるスレッドが前記第2のプログラムコードを呼び出す間、他のスレッドの実行を停止させる機能を実現させることを特徴とする請求項7記載のプログラム。
- 独自のメモリ管理機能を有する言語システムと、前記言語システムの制御下で実行され前記言語システムが確保した第1のメモリ領域にアクセスする第1のプログラムコードと、OSの制御下で直接実行され前記OSが確保した第2のメモリ領域にアクセスする第2のプログラムコードとが実行されるコンピュータにおいて、前記コンピュータに前記第2のプログラムコードによる前記第1のメモリ領域への不正なメモリアクセスを検知する前記言語システムの機能を実現させるためのプログラムであって、
前記コンピュータに、前記第1のプログラムコードが前記第2のプログラムコードを呼び出す前に前記第1のメモリ領域についてその内容に対応するコード情報を保存する機能、前記第2のプログラムコードを呼び出して実行させる機能、前記第2のプログラムコードの実行が終了して前記言語システムに制御が戻ったときに前記第1のメモリ領域の内容に対応するコード情報が保存されたコード情報と一致するか否かを判定する機能、および不一致の場合に前記第2のプログラムコードによる不正メモリアクセスを外部に報告する機能を実現させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003118602A JP4275451B2 (ja) | 2003-04-23 | 2003-04-23 | 不正メモリアクセス検知方法及びそのプログラム |
US10/829,205 US20040268332A1 (en) | 2003-04-23 | 2004-04-22 | Memory access control method and processing system with memory access check function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003118602A JP4275451B2 (ja) | 2003-04-23 | 2003-04-23 | 不正メモリアクセス検知方法及びそのプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004326331A true JP2004326331A (ja) | 2004-11-18 |
JP4275451B2 JP4275451B2 (ja) | 2009-06-10 |
Family
ID=33498101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003118602A Expired - Fee Related JP4275451B2 (ja) | 2003-04-23 | 2003-04-23 | 不正メモリアクセス検知方法及びそのプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040268332A1 (ja) |
JP (1) | JP4275451B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009522664A (ja) * | 2006-01-03 | 2009-06-11 | エヌイーシー ラボラトリーズ アメリカ インク | メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム |
WO2012172743A1 (ja) * | 2011-06-14 | 2012-12-20 | パナソニック株式会社 | 情報処理装置、情報処理方法、プログラム、集積回路 |
JP2015111448A (ja) * | 2009-10-15 | 2015-06-18 | エフティーエス コンピューターテクニク ジーエムビーエイチ | 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080089299A1 (en) * | 2006-10-13 | 2008-04-17 | Motorola, Inc. | Method and system for distributing content in Ad-hoc networks using super peers |
US8074116B2 (en) * | 2009-05-06 | 2011-12-06 | Microsoft Corporation | Exception raised notification |
EP2254070A1 (en) * | 2009-05-18 | 2010-11-24 | Nxp B.V. | Secure execution of native code |
US8977819B2 (en) * | 2010-09-21 | 2015-03-10 | Texas Instruments Incorporated | Prefetch stream filter with FIFO allocation and stream direction prediction |
US9053064B2 (en) * | 2012-12-10 | 2015-06-09 | Vmware, Inc. | Method for saving virtual machine state to a checkpoint file |
US9053065B2 (en) * | 2012-12-10 | 2015-06-09 | Vmware, Inc. | Method for restoring virtual machine state from a checkpoint file |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI102221B1 (fi) * | 1995-10-30 | 1998-10-30 | Nokia Telecommunications Oy | Tietokoneen muistiongelmien paljastaminen |
US5935242A (en) * | 1996-10-28 | 1999-08-10 | Sun Microsystems, Inc. | Method and apparatus for initializing a device |
US5896095A (en) * | 1997-05-07 | 1999-04-20 | Mas-Hamilton Group | Electronic lock with access |
US6374286B1 (en) * | 1998-04-06 | 2002-04-16 | Rockwell Collins, Inc. | Real time processor capable of concurrently running multiple independent JAVA machines |
US20020165912A1 (en) * | 2001-02-25 | 2002-11-07 | Storymail, Inc. | Secure certificate and system and method for issuing and using same |
US20020161961A1 (en) * | 2001-01-17 | 2002-10-31 | Ajile Systems, Inc. | Multiple virtual machine environment management system |
US20020099753A1 (en) * | 2001-01-20 | 2002-07-25 | Hardin David S. | System and method for concurrently supporting multiple independent virtual machines |
US20030229794A1 (en) * | 2002-06-07 | 2003-12-11 | Sutton James A. | System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container |
US7051324B2 (en) * | 2003-01-16 | 2006-05-23 | International Business Machines Corporation | Externalized classloader information for application servers |
-
2003
- 2003-04-23 JP JP2003118602A patent/JP4275451B2/ja not_active Expired - Fee Related
-
2004
- 2004-04-22 US US10/829,205 patent/US20040268332A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009522664A (ja) * | 2006-01-03 | 2009-06-11 | エヌイーシー ラボラトリーズ アメリカ インク | メモリ障害を処理するために、センサーネットワークで使用可能な方法及びシステム |
JP2015111448A (ja) * | 2009-10-15 | 2015-06-18 | エフティーエス コンピューターテクニク ジーエムビーエイチ | 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法 |
WO2012172743A1 (ja) * | 2011-06-14 | 2012-12-20 | パナソニック株式会社 | 情報処理装置、情報処理方法、プログラム、集積回路 |
US8938811B2 (en) | 2011-06-14 | 2015-01-20 | Panasonic Intellectual Property Management Co., Ltd. | Information processing apparatus, method, program, and integrated circuit |
JPWO2012172743A1 (ja) * | 2011-06-14 | 2015-02-23 | パナソニック株式会社 | 情報処理装置、情報処理方法、プログラム、集積回路 |
Also Published As
Publication number | Publication date |
---|---|
US20040268332A1 (en) | 2004-12-30 |
JP4275451B2 (ja) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7774636B2 (en) | Method and system for kernel panic recovery | |
US8234476B2 (en) | Information processing apparatus and method of updating stack pointer | |
US20050240701A1 (en) | Interrupt control apparatus | |
JP2009516310A (ja) | メモリページをプログラムに対応付けるページカラーリング | |
TWI786181B (zh) | 在例外遮罩更新指令之後允許未中止的交易處理 | |
KR20160019454A (ko) | 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호 | |
KR101064164B1 (ko) | 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법 | |
JP4275451B2 (ja) | 不正メモリアクセス検知方法及びそのプログラム | |
US20180373898A1 (en) | Secure mode state data access tracking | |
JP2004303114A (ja) | インタープリタおよびネイティブコード実行方法 | |
US6957367B2 (en) | System and method for controlling activity of temporary files in a computer system | |
JP2009009232A (ja) | コンピュータとカーネル保護方法並びにコンピュータソフトウエア | |
KR20200013049A (ko) | 명령 세트의 변경을 제어하는 장치 및 방법 | |
JP2001249848A (ja) | 先行特権レベルに基づく特権昇格 | |
US20150309885A1 (en) | Method and device for processing data and electronic apparatus | |
US7103880B1 (en) | Floating-point data speculation across a procedure call using an advanced load address table | |
JPH07152551A (ja) | コンピュータシステムおよびプログラム実行方法 | |
JP2009230479A (ja) | マイクロプロセッサ | |
JP3323169B2 (ja) | ソフトウェア開発支援装置、ソフトウェア開発支援方法、および、そのプログラムを記録した記録媒体 | |
JPH11134204A (ja) | スタック保護装置 | |
JP2005284925A (ja) | コンピュータシステムおよびプログラム更新方法 | |
CN110799940B (zh) | 内容数据管理 | |
JP2562838B2 (ja) | プロセッサ及びストアバッファ制御方法 | |
JP2018036695A (ja) | 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置 | |
US7325228B1 (en) | Data speculation across a procedure call using an advanced load address table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050819 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050819 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090210 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090304 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120313 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120313 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130313 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130313 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |