JP2013196512A - 変換装置、変換方法、変換プログラム - Google Patents
変換装置、変換方法、変換プログラム Download PDFInfo
- Publication number
- JP2013196512A JP2013196512A JP2012064500A JP2012064500A JP2013196512A JP 2013196512 A JP2013196512 A JP 2013196512A JP 2012064500 A JP2012064500 A JP 2012064500A JP 2012064500 A JP2012064500 A JP 2012064500A JP 2013196512 A JP2013196512 A JP 2013196512A
- Authority
- JP
- Japan
- Prior art keywords
- address
- branch instruction
- program
- jump destination
- instruction
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】変換装置が、変換対象であるプログラムに含まれる分岐命令のうち、分岐命令に対応する被演算子が示すジャンプ先のアドレスにジャンプすることを示す分岐命令を検出する検出部と、検出部によって検出された分岐命令が含まれるプログラムの箇所に、ジャンプ先のアドレスが予め定められたアドレスであるか否かを判定し、ジャンプ先のアドレスが予め定められたアドレスであれば分岐命令を実行し、ジャンプ先のアドレスが予め定められたアドレスでなければ分岐命令を実行しない処理を示す命令文を挿入する命令文挿入部と、を備える。
【選択図】図1
Description
図1は、本実施形態による変換装置100の構成を示すブロック図である。変換装置100は、記憶部110と、コンパイラ120と、プリアセンブラ130と、アセンブラ140とを備えたコンピュータ装置である。変換装置100は、ソースプログラムをコンパイルしてアセンブリプログラムを生成し、アセンブリプログラムを変換して機械語(マシンコード)によるオブジェクトプログラムを生成する。ここでは、ソースプログラムはC言語で記述されたプログラムであるとして説明する。
共有ライブラリには、プログラムの実行時に複数の関数から共有して利用されるユーザ独自の関数を実行するプログラム等が記憶される。
ヒープセグメントには、動的にメモリを割り付けることで動的変数を記憶することができ、アドレスが大きくなる方向に向かって領域が拡張される。
データセグメントには、静的変数、大域変数等のデータが記憶される。例えば、初期化なし静的変数であるBSS(block started by symbol)や、初期化あり静的変数であるデータ等が記憶される。
テキストセグメントには、機械語命令等が記憶される。
プリアセンブラ130は、コンパイラ120によって生成されて記憶部110に記憶されたアセンブリプログラムを読み出して変換し、セキュアアセンブリプログラムを生成して記憶部110に記憶させる。プリアセンブラ130は、アドレス範囲書き込み命令文挿入部131と、検出部132と、命令文挿入部133とを備えている。
ここでは、ソースプログラムに基づいてコンパイラ120によってアセンブリプログラムが生成され、記憶部110に記憶されているものとする。プリアセンブラ130は、記憶部110に記憶されている変換対象のアセンブリプログラムを読み出す(ステップS1)。アドレス範囲書き込み命令文挿入部131は、読み出したアセンブリプログラムの冒頭部分に、アドレス範囲書き込み命令文である第1の命令文を挿入する(ステップS2)。
コンピュータ200は、ディスクに記憶されているオブジェクトプログラムをメモリ上に読み出すと、制御ユニットが、オブジェクトプログラムに含まれる第1の命令文に基づく処理を実行し、テキストセグメントのアドレス範囲を示す値を汎用レジスタに書き込む。また、制御ユニットは、オブジェクトプログラムに含まれる命令を読み出し(ステップS11)、読み出す命令が定められた分岐命令でなければ(ステップS12:NO)、プリアセンブラ130によって命令文は挿入されていないため、通常のデコード処理を行い(ステップS16)、演算ユニットが演算する。
また、本実施形態では、アセンブリプログラムに対して、ジャンプ先のアドレスが予め定められたアドレスでなければプログラムの実行を強制終了する第4の命令文を挿入する例を示したが、第4の命令文には、さらにその時点の実行時のメモリ状態やジャンプ先のアドレスの値等をログファイル等に記憶させる処理を含ませることもできる。このようにすれば、どのような攻撃がされたかを事後的に解析することを支援できる。
110 記憶部
120 コンパイラ
130 プリアセンブラ
131 アドレス範囲書き込み命令文挿入部
132 検出部
133 命令文挿入部
140 アセンブラ
Claims (6)
- 変換対象であるプログラムに含まれる分岐命令のうち、当該分岐命令に対応する被演算子が示すジャンプ先のアドレスにジャンプすることを示す分岐命令を検出する検出部と、
前記検出部によって検出された分岐命令が含まれる前記プログラムの箇所に、前記ジャンプ先のアドレスが予め定められたアドレスであるか否かを判定し、当該ジャンプ先のアドレスが予め定められたアドレスであれば当該分岐命令を実行し、当該ジャンプ先のアドレスが予め定められたアドレスでなければ当該分岐命令を実行しない処理を示す命令文を挿入する命令文挿入部と、
を備えることを特徴とする変換装置。 - 前記プログラムに、機械語命令を記憶させるメモリ領域を示すアドレス範囲を記憶部に書き込む処理を示す命令文を挿入するアドレス範囲書き込み命令文挿入部を備え、
前記命令文挿入部は、前記検出部によって検出された分岐命令が含まれる前記プログラムの箇所に、前記被演算子が示すアドレスが前記記憶部に書き込まれたアドレス範囲内であるか否かを判定し、当該被演算子が示すアドレスが前記記憶部に書き込まれたアドレス範囲内であれば当該分岐命令を実行し、当該被演算子が示すアドレスが前記記憶部に書き込まれたアドレス範囲内でなければ当該分岐命令を実行しない処理を示す命令文を挿入する
ことを特徴とする請求項1に記載の変換装置。 - 前記命令文挿入部は、前記検出部が検出した分岐命令が含まれる前記プログラムの箇所に、前記検出部によって検出された分岐命令の被演算子が、共有ライブラリに含まれる関数を示すか否かを判定し、当該被演算子が、共有ライブラリに含まれる関数であれば当該分岐命令を実行し、当該被演算子が、共有ライブラリに含まれる関数でなければ当該分岐命令を実行しない処理を示す命令文を挿入する
ことを特徴とする請求項1または請求項2に記載の変換装置。 - 前記プログラムは、アセンブリプログラムである
ことを特徴とする請求項1から請求項3までのいずれか1項に記載の変換装置。 - 変換対象であるプログラムに含まれる分岐命令のうち、当該分岐命令に対応する被演算子が示すジャンプ先のアドレスにジャンプすることを示す分岐命令を検出するステップと、
検出した分岐命令が含まれる前記プログラムの箇所に、前記ジャンプ先のアドレスが予め定められたアドレスであるか否かを判定し、当該ジャンプ先のアドレスが予め定められたアドレスであれば当該分岐命令を実行し、当該ジャンプ先のアドレスが予め定められたアドレスでなければ当該分岐命令を実行しない処理を示す命令文を挿入するステップと、
を備えることを特徴とする変換方法。 - コンピュータに、
変換対象であるプログラムに含まれる分岐命令のうち、当該分岐命令に対応する被演算子が示すジャンプ先のアドレスにジャンプすることを示す分岐命令を検出するステップと、
検出した分岐命令が含まれる前記プログラムの箇所に、前記ジャンプ先のアドレスが予め定められたアドレスであるか否かを判定し、当該ジャンプ先のアドレスが予め定められたアドレスであれば当該分岐命令を実行し、当該ジャンプ先のアドレスが予め定められたアドレスでなければ当該分岐命令を実行しない処理を示す命令文を挿入するステップと、
を実行させる変換プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012064500A JP5820754B2 (ja) | 2012-03-21 | 2012-03-21 | 変換装置、変換方法、変換プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012064500A JP5820754B2 (ja) | 2012-03-21 | 2012-03-21 | 変換装置、変換方法、変換プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013196512A true JP2013196512A (ja) | 2013-09-30 |
JP5820754B2 JP5820754B2 (ja) | 2015-11-24 |
Family
ID=49395337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012064500A Expired - Fee Related JP5820754B2 (ja) | 2012-03-21 | 2012-03-21 | 変換装置、変換方法、変換プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5820754B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015044993A1 (ja) * | 2013-09-24 | 2015-04-02 | 株式会社 エーティーティーコンサルティング | プロセッサ、処理装置、プログラム作成方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006031363A (ja) * | 2004-07-15 | 2006-02-02 | Mitsubishi Research Institute Inc | バッファオーバーフロー脆弱性検出プログラム及びバッファオーバーフロー脆弱性検出方法 |
JP2006243833A (ja) * | 2005-02-28 | 2006-09-14 | Ntt Docomo Inc | プログラム実行装置及びプログラム実行方法 |
EP2256659A1 (en) * | 2009-05-27 | 2010-12-01 | NTT DoCoMo, Inc. | Method and apparatus for preventing modification of a program execution flow |
JP2011164972A (ja) * | 2010-02-10 | 2011-08-25 | Mitsubishi Electric Corp | プログラムローダ、データ処理装置、プログラムロード方法及びロードプログラム |
-
2012
- 2012-03-21 JP JP2012064500A patent/JP5820754B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006031363A (ja) * | 2004-07-15 | 2006-02-02 | Mitsubishi Research Institute Inc | バッファオーバーフロー脆弱性検出プログラム及びバッファオーバーフロー脆弱性検出方法 |
JP2006243833A (ja) * | 2005-02-28 | 2006-09-14 | Ntt Docomo Inc | プログラム実行装置及びプログラム実行方法 |
EP2256659A1 (en) * | 2009-05-27 | 2010-12-01 | NTT DoCoMo, Inc. | Method and apparatus for preventing modification of a program execution flow |
JP2011008778A (ja) * | 2009-05-27 | 2011-01-13 | Ntt Docomo Inc | プログラム実行フローの修正を防止する方法及び装置 |
JP2011164972A (ja) * | 2010-02-10 | 2011-08-25 | Mitsubishi Electric Corp | プログラムローダ、データ処理装置、プログラムロード方法及びロードプログラム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015044993A1 (ja) * | 2013-09-24 | 2015-04-02 | 株式会社 エーティーティーコンサルティング | プロセッサ、処理装置、プログラム作成方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5820754B2 (ja) | 2015-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963233B2 (en) | Generating and caching software code | |
US9530006B2 (en) | Method and system for performing a memory safety check of a program written in an unmanaged programming language | |
US10761905B2 (en) | Enhanced code callback | |
US10635823B2 (en) | Compiling techniques for hardening software programs against branching programming exploits | |
US9563424B2 (en) | Native code instruction selection | |
US7730463B2 (en) | Efficient generation of SIMD code in presence of multi-threading and other false sharing conditions and in machines having memory protection support | |
US9900324B1 (en) | System to discover and analyze evasive malware | |
JP2011508317A (ja) | コードエラーを減らすためのコントラクトプログラミング | |
KR20110087193A (ko) | 실행 가능 텍스트를 포함하는 문서의 처리 장치 및 방법 | |
JP4927231B1 (ja) | プログラム、情報機器、及び不正アクセス検出方法 | |
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
JP2005316599A (ja) | 割込制御装置 | |
JP5820754B2 (ja) | 変換装置、変換方法、変換プログラム | |
JP5777843B1 (ja) | プロセッサ、処理装置、プログラム作成方法 | |
JP2006048186A (ja) | 動的コンパイラの生成コードを保護する言語処理系 | |
JP6827244B1 (ja) | 監査装置、監査方法、監査プログラムおよび監査システム | |
JP2012018641A (ja) | ソフトウェア開発システム | |
US20230418950A1 (en) | Methods, Devices, and Systems for Control Flow Integrity | |
JP5003557B2 (ja) | 情報処理装置、情報処理方法、及び、情報処理プログラム | |
Reinders et al. | Error Handling | |
Voorhees et al. | Program Design and Security | |
Goyal et al. | Polymorphism and Virtual Functions | |
Dahlin | Software code optimisation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20130816 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140827 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150630 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150818 |
|
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: 20150908 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151005 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5820754 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |