JPH08147155A - オブジェクトプログラムの命令の変更/挿入方法及びシステム - Google Patents

オブジェクトプログラムの命令の変更/挿入方法及びシステム

Info

Publication number
JPH08147155A
JPH08147155A JP28835294A JP28835294A JPH08147155A JP H08147155 A JPH08147155 A JP H08147155A JP 28835294 A JP28835294 A JP 28835294A JP 28835294 A JP28835294 A JP 28835294A JP H08147155 A JPH08147155 A JP H08147155A
Authority
JP
Japan
Prior art keywords
instruction
changed
program
change
label
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.)
Pending
Application number
JP28835294A
Other languages
English (en)
Inventor
Katsuhiko Noda
勝彦 野田
Motohiko Matsuda
元彦 松田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Steel Corp
Original Assignee
Sumitomo Metal Industries Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sumitomo Metal Industries Ltd filed Critical Sumitomo Metal Industries Ltd
Priority to JP28835294A priority Critical patent/JPH08147155A/ja
Publication of JPH08147155A publication Critical patent/JPH08147155A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 変更/挿入の自由度を高め、変更/挿入後の
リロケーション処理を容易にする。 【構成】 変更/挿入対象のオブジェクトプログラムを
逆アセンブルしてソースプログラムに変換するととも
に、命令が参照する他の命令の参照アドレスにラベルを
付し、命令に含まれる各参照アドレスを対応するラベル
にそれぞれ置換するディスアセンブル手段2と、ラベル
と該ラベルを付した命令のアドレスとを対応付けて記憶
しておく記憶手段3と、ソースプログラムから変更/挿
入対象の命令を検出し、変更対象の命令を変更後の命令
に置換し、又は挿入すべき命令を挿入すべき位置に挿入
し、ラベルを付した命令の前に命令を挿入した場合は、
ラベルを、挿入した命令の先頭に付け替える命令変更/
挿入手段4と、ラベルをアドレスに置換しながら、命令
を変更/挿入したソースプログラムをアセンブルしてオ
ブジェクトプログラムに変換するアセンブル手段5とか
らなる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えば、ユーザプログ
ラムの実行中に動的にメモリを割り当て/解放する機能
を提供するコンピュータシステムで、ソフトウェア開発
ツール,不具合調査ツール,品質検査/向上ツール等を
起動して行うコンピュータプログラムのデバッグ時に、
動的割り当てメモリへの不正アクセスを検出する場合の
ように、オブジェクトプログラムの命令を変更し、又は
その前後に新たな命令を挿入する方法及びシステムに関
する。
【0002】
【従来の技術】最近多く利用されるようになってきたC
言語、C ++言語などの特徴は、システムのサービスを
直接的に呼び出したり、メモリの操作などを直接的に記
述できるなどの点にあって柔軟性が高いが、システムの
サービスを直接的に呼び出したり、メモリを直接的に操
作することは、使用法が誤っていたり、プログラムに不
具合が存在する場合には、非常に危険である。このよう
な危険を回避するためにプログラムのデバッグが不可欠
であるが、コンピュータの演算速度の向上、記憶装置の
大容量化などから、ソフトウエアの規模は大きくなる傾
向にあり、不具合を検出することはより困難になりつつ
ある。
【0003】メモリアクセスに関する不具合としては以
下の3つの場合が挙げられる。 (1)動的割り当てメモリの範囲を超えたメモリアクセ
ス 例えば10バイトのメモリを1000番地に動的に割り当てた
場合、999 番地への書き込みは、前方の別なデータを破
壊することになる。また、1011番地への書き込みは、後
方のデータを破壊することになる。さらに、動的に割り
当てたメモリの範囲を超えた領域からの読み込みは予期
せぬデータの読み込みとなり、読み込まれたデータを元
に別な命令を実行することによる二次的不具合の原因と
なる。
【0004】(2)動的に割り当てたメモリへの書き込
み前の読み込み 動的に割り当てたメモリは、割り当てた時点の内容が不
定である。従って、動的割り当てメモリへ書き込みを行
う以前に読み込みを行った場合は、不定データの読み込
みとなり、読み込まれたデータを元に別な命令を実行す
ることによる二次的不具合の原因となる。
【0005】(3)解放済み動的割り当てメモリへのア
クセス プログラムは、処理上必要になった時点で、動的メモリ
の割り当てを行い、必要がなくなった時点で解放する。
そして、解放後にアクセスすることは、原則的に禁止さ
れているにもかかわらず、解放済みのメモリにアクセス
したり、解放済みのメモリに対して二重の解放要求を発
行したりすると、予期せぬ事態が発生する。
【0006】以上のような動的割り当てメモリへの不正
アクセス検出を実現する方法の一つとして、動的割り当
てメモリへ不正にアクセスし得る命令の前後共、又は前
後のいずれかにメモリアクセスをモニタする命令を挿入
する方法が考えられるが、命令を挿入する機能実現のた
めには、既存の言語及び言語処理系(コンパイラ)で実
行可能でなくてはならないので、オブジェクトコードに
対する変更であることが必要である。また、オブジェク
トコードに対する変更にともない、ジャンプ命令,メモ
リ参照命令に含まれる飛び先,参照先のアドレス指定部
分を変更するリロケーション処理が必要である。
【0007】図5は、米国特許 5,193,180号に開示され
ている、動的割り当てメモリへのアクセスをモニタする
ための再配置可能なオブジェクトファイルに対する命令
の変更/挿入システムのリロケーション処理に用いられ
る5つのテーブルの概念図である。5つのテーブルは、
モニタ命令挿入前の命令列を保持する古い命令列テーブ
ル(old object code table)20と、モニタ命令挿入後の
新しい命令列を保持する新しい命令列テーブル (new ob
ject code table)30と、古い命令列が新しい命令列テー
ブル30のどのアドレスへコピーされたかを記録する移動
先アドレステーブル(forward index table) 40と、古い
命令列でのジャンプの飛び先が新しい命令列でどのアド
レスになるかを記録する飛び先アドレステーブル (forw
ard controlindex table)50と、リロケーションにより
変更する必要があるオフセット値が存在する古い命令列
でのアドレス、そのオフセット値を持つ命令の古い命令
列での先頭アドレス、及びオフセット値の格納に割り当
てられている領域のバイト数を記録するオフセットテー
ブル (inter-item offset table)60とである。図中のオ
フセットテーブル60には“126 番地を先頭番地とする命
令の128 番地からの2バイトを変更する必要がある”と
いう内容が格納されている。
【0008】以上のような5つのテーブルを用いた前記
米国特許のリロケーション処理の手順を以下に説明す
る。まず、古い命令列テーブル20から1つの命令を取り
出して新しい命令列テーブル30にコピーする。そのと
き、命令の新しい命令列テーブル30におけるアドレスを
移動先アドレステーブル40に記録する。次に、命令の前
後又は前後のいずれかに挿入したい命令がある場合は、
その命令を新しい命令列テーブル30の該当位置にコピー
する。
【0009】また、ジャンプ命令等のジャンプ先となる
場合を考慮し、古い命令列テーブル20における各命令
の、新しい命令列テーブル30におけるアドレスを飛び先
アドレステーブル50に記録する。このとき、飛び先アド
レステーブル50に記録するアドレスは、新たな命令が挿
入されない場合は移動先アドレステーブル40のアドレス
と同一であるが、新たな命令が挿入された場合は、新た
な命令を含む命令列の先頭アドレスとなる(例:飛び先
アドレステーブル50の“ 130:188 ”)。
【0010】次に、新しい命令列テーブル30にコピーす
る命令を解釈し、命令がリロケーションにより変更を受
けるジャンプ命令,メモリ参照命令等の場合は、その命
令のオペランドを取り出してジャンプ先, 参照先を解析
し、その命令の先頭アドレス、オフセット値が記述され
ているアドレス、及びオフセット値の格納に割り当てら
れている領域のバイト数をオフセットテーブル60に記録
する。以上の処理を元のオブジェクトコードの命令毎に
繰り返して、命令を挿入した命令列が新しい命令列テー
ブル30にコピーされる。
【0011】さらに、リロケーションによりオフセット
値,ジャンプ先アドレスが変更を受ける命令の位置がオ
フセットテーブル60に記録されているので、移動先テー
ブル40及び飛び先アドレステーブル50を参照し、オフセ
ットテーブル60に記録されている命令を解釈してオペラ
ンドを取り出し、オペランドのオフセット値,ジャンプ
先アドレスを解析して変更する。
【0012】
【発明が解決しようとする課題】以上のように、前記米
国特許ではリロケーション処理における命令の解釈, 解
析時にバイナリ形式のオブジェクトコードを直接操作す
るため CPU及びOSに過度に依存することになり、命令の
変更,挿入に CPU及びOSの制約を受ける。また、機械語
命令,オブジェクトコード等を操作するため、処理に長
時間を要し、また処理の大部分が機械語及びオブジェク
トコードのフォーマットに依存するので、処理が煩雑で
ある。さらに、前記米国特許では、リロケーション処理
のために少なくとも5つのテーブルを管理しなければな
らないのでリロケーション処理を達成するためのプログ
ラムが複雑になる。
【0013】本発明はこのような問題点を解決するため
になされたものであって、変更/挿入対象のオブジェク
トプログラムをソースプログラムに逆アセンブルしてか
ら命令を変更/挿入し、さらに被参照命令のラベルを生
成して参照アドレスをラベルに置換することにより、 C
PU, OSの制約を受けずに変更/挿入の自由度が高く、パ
ターンマッチング等により変更/挿入対象の命令が短時
間で容易に検出でき、変更/挿入後のリロケーション処
理が容易なオブジェクトプログラムの命令の変更/挿入
方法及びシステムの提供を目的とする。
【0014】
【課題を解決するための手段】第1発明のオブジェクト
プログラムの命令の変更/挿入方法は、変更/挿入対象
のオブジェクトプログラムを逆アセンブルしてソースプ
ログラムに変換し、ソースプログラムを解析して他の命
令を参照する命令を該ソースプログラムの中から検出
し、命令が参照する各参照アドレスを識別するためのそ
れぞれに一意なラベルを生成して各参照アドレスの命令
に付すとともに、命令に含まれる前記各参照アドレスを
対応するラベルにそれぞれ置換し、ラベルと該ラベルを
付した命令のアドレスとを対応付けて記憶しておき、前
記ソースプログラムから変更/挿入対象の命令を検出
し、変更対象の命令を変更後の命令に置換し、又は挿入
すべき命令を挿入すべき位置に挿入し、前記ラベルを付
した命令の前に命令を挿入した場合は、該ラベルを、挿
入した命令の先頭に付け替え、ラベルをアドレスに置換
しながら、命令を変更/挿入したソースプログラムをア
センブルしてオブジェクトプログラムに変換することを
特徴とする。
【0015】第2発明のオブジェクトプログラムの命令
の変更/挿入方法は、第1発明における変更/挿入対象
の命令が動的に割り当てられたメモリへのアクセス命令
であり、また、変更/挿入した命令がメモリへの不正ア
クセスを検出する命令であることを特徴とする。
【0016】第3発明のオブジェクトプログラムの命令
の変更/挿入方法は、第1発明における変更/挿入対象
の命令を検出するステップは、変更/挿入対象の命令の
特徴的な部分とのパターンマッチングにより、ソースプ
ログラムから変更/挿入対象の命令を検出することを特
徴とする。
【0017】第4発明のオブジェクトプログラムの命令
の変更/挿入システムは、変更/挿入対象のオブジェク
トプログラムをディスアセンブルしてソースプログラム
に変換し、ソースプログラムを解析して他の命令を参照
する命令を該ソースプログラムの中から検出し、命令が
参照する各参照アドレスを識別するためのそれぞれに一
意なラベルを生成して各参照アドレスの命令に付すとと
もに、命令に含まれる前記各参照アドレスを対応するラ
ベルにそれぞれ置換するディスアセンブル手段と、ラベ
ルと該ラベルを付した命令のアドレスとを対応付けて記
憶しておく記憶手段と、前記ソースプログラムから変更
/挿入対象の命令を検出し、変更対象の命令を変更後の
命令に置換し、又は挿入すべき命令を挿入すべき位置に
挿入し、前記ラベルを付した命令の前に命令を挿入した
場合は、該ラベルを、挿入した命令に付け替える命令変
更/挿入手段と、ラベルをアドレスに置換しながら、命
令を変更/挿入したソースプログラムをアセンブルして
オブジェクトプログラムに変換するアセンブル手段とを
備えたことを特徴とする。
【0018】第5発明のオブジェクトプログラムの命令
の変更/挿入システムは、第4発明の変更/挿入対象の
命令が動的に割り当てられたメモリへのアクセス命令で
あり、また、変更/挿入した命令が該メモリへの不正ア
クセスを検出する命令であることを特徴とする。
【0019】第6発明のオブジェクトプログラムの命令
の変更/挿入システムは、第4発明の命令変更/挿入手
段が、変更/挿入対象の命令の特徴的な部分とのパター
ンマッチングにより、ソースプログラムから変更/挿入
対象の命令を検出することを特徴とする。
【0020】
【作用】第1及び第4発明のオブジェクトプログラムの
命令の変更/挿入方法及びシステムは、変更/挿入対象
のオブジェクトプログラムを逆アセンブルしてソースプ
ログラムに変換し、ソースプログラムを解析して他の命
令を参照する命令を該ソースプログラムの中から検出
し、命令が参照する各参照アドレスを識別するためのそ
れぞれに一意なラベルを生成して各参照アドレスの命令
に付すとともに、命令に含まれる前記各参照アドレスを
対応するラベルにそれぞれ置換し、ラベルと該ラベルを
付した命令のアドレスとを対応付けて記憶しておき、前
記ソースプログラムから変更/挿入対象の命令を検出
し、変更対象の命令を変更後の命令に置換し、又は挿入
すべき命令を挿入すべき位置に挿入し、前記ラベルを付
した命令の前に命令を挿入した場合は、該ラベルを、挿
入した命令の先頭に付け替え、ラベルをアドレスに置換
しながら、命令を変更/挿入したソースプログラムをア
センブルしてオブジェクトプログラムに変換する。従っ
て、 CPU, OSの制約を受けずに変更/挿入の自由度が高
く、変更/挿入後のリロケーション処理が容易である。
【0021】第2及び第5発明のオブジェクトプログラ
ムの命令の変更/挿入方法及びシステムは、動的に割り
当てられたメモリへのアクセス命令を検出し、メモリへ
の不正アクセスを検出する命令に変更し、又はメモリへ
のアクセス命令の前後又はいずれかにメモリへの不正ア
クセスを検出する命令を挿入し、動的に割り当てられて
メモリへの不正アクセスを検出するオブジェクトプログ
ラムを得る。
【0022】第3及び第6発明のオブジェクトプログラ
ムの命令の変更/挿入方法及びシステムは、変更/挿入
対象の命令の特徴的な部分とのパターンマッチングによ
り、ソースプログラムから変更/挿入対象の命令を検出
する。従って、オブジェクトプログラムにおけるバイナ
リコードの比較に比して、短時間で容易に検出できる。
【0023】
【実施例】以下、本発明をその実施例を示す図面に基づ
いて詳述する。図1は本発明のオブジェクトプログラム
の命令の変更/挿入システム(以下、本発明システムと
いう)の構成を示すブロック図である。図中、1は再配
置可能なオブジェクトプログラム11,動的メモリ割り当
て機能,解放機能等を備えたライブラリ等12からなるユ
ーザプログラムであって、記憶手段3は、原始言語で記
述された変更後の命令又は挿入すべき命令を記憶し、さ
らに後述するディスアセンブル手段2により生成される
ラベルとラベルが付された被参照アドレスとを対応付け
て記憶している。
【0024】ディスアセンブル手段2はオブジェクトプ
ログラム11を計算機固有の解析手順で解析し、計算機へ
の依存度が高いバイナリ形式のオブジェクトプログラム
11を、計算機への依存度が低いアセンブリ言語のソース
プログラム13に変換する。さらに、ディスアセンブル手
段2はオブジェクトコードファイルからなるユーザプロ
グラム1内に格納されているラベルに関するリロケーシ
ョン情報等を使って、ジャンプ命令及びメモリ参照命令
に現れる、被参照命令の各位置を示すラベルを再構成す
る。このとき名前を明示的に決定できないラベルには適
宜テンポラリの名前を与えて必要なラベルを生成する。
なお、計算機システムに既存のディスアセンブラをディ
スアセンブル手段2として利用してもよい。
【0025】命令変更/挿入手段4はアセンブリ言語の
命令列からなるソースプログラム13を解析し、変更/挿
入対象の命令の全体又は特徴的な部分とのパターンマッ
チングにより、ソースプログラム13の中から変更/挿入
対象の命令を検出する。命令変更/挿入手段4は、パタ
ーンマッチングを用いることにより命令コードをビット
単位で比較する必要がなく、また命令コード中のアドレ
ス情報はラベルの形で分離されているので実際のアドレ
ス値を直接扱う必要がない等の理由により処理が容易で
ある。
【0026】検出したソースプログラム13上の変更/挿
入対象の命令に対して、命令の変更/挿入を行う。この
とき、ラベルが付されている命令の前に命令を挿入した
場合は、挿入した命令の先頭にラベルを付け替える。オ
ブジェクトコードを直接操作する従来システムの場合に
は命令の変更/挿入段階でのリロケーション処理の比重
が大きいが、本発明システムではリロケーション処理は
後述するアセンブル手段5,リンク手段6にゆだねられ
ている。
【0027】アセンブル手段5は一般のアセンブラと同
様の機能を持ち、原始言語命令のバイナリ形式への変
換、ラベルをアドレスに置換するリロケーション情報の
生成等を行い、命令変更/挿入手段4により命令が変更
/挿入されたソースプログラム13′をオブジェクトプロ
グラム11′に変換する。
【0028】リンク手段6は一般のリンカと同様の機能
を持ち、必要なオブジェクトプログラムをリロケーショ
ン情報を使用してロード可能なプログラムに結合し、普
通は1つのユーザプログラム1′を生成する。
【0029】なお、各手段はファイルを介して順次処理
を行うようにしても、オン−メモリで処理を行うことが
可能であり効率的な環境であれば、ファイルを介さずに
処理を行うようにしてもよい。
【0030】図2は本発明システムに用いられるオブジ
ェクトプログラムの命令の変更/挿入方法(以下、本発
明方法という)の手順を示すフローチャートである。デ
ィスアセンブル手段2はオブジェクトプログラム11を逆
アセンブルしてソースプログラム13に変換し、他の命令
を参照する命令に含まれる参照アドレスを識別するため
のそれぞれに一意なラベルを生成して参照アドレスの命
令にラベルを付すとともに、他の命令を参照する命令に
含まれる参照アドレスをラベルに置換する(S1)。
【0031】命令変更/挿入手段4はソースプログラム
13を解析して、パターンマッチングにより、変更/挿入
対象の命令を検出し(S2)、検出した変更/挿入対象
の命令を変更し、又は検出した命令の前後共に、又は前
後のいずれかに新たな命令を挿入し、挿入対象の命令に
ラベルが付されている場合は挿入した命令の先頭にラベ
ルを付け替える(S3)。アセンブル手段5は、命令が
変更/挿入されたソースプログラム13を、ラベルをアド
レスに置換しながらソースプログラム13をオブジェクト
プログラム11′にアセンブルする(S4)。リンク手段
6は必要な複数のオブジェクトプログラムを結合して1
つのユーザプログラムを生成する(S5)。
【0032】次に、本発明システム又は本発明方法を、
動的割り当てメモリに対する不正アクセス検出に適用し
た場合の命令変更/挿入の手順について説明する。ま
ず、システムライブラリとして提供されている動的メモ
リ割り当て機能のライブラリルーチンを、メモリの割り
当て処理に不正アクセスの検出処理が付加されたルーチ
ンに変換する。
【0033】次に、動的割り当てメモリに対する不正ア
クセス検出対象のユーザプログラムが、モジュール毎の
オブジェクトプログラムとして、又は完全にリンクされ
たオブジェクトプログラムとして与えられる。ディスア
センブル手段2はこのオブジェクトプログラムをアセン
ブリ言語で記述されたソースプログラムに変換し、他の
命令から参照される被参照命令のラベルを生成する。命
令変更/挿入手段4はソースプログラムを解析してチェ
ックの必要なメモリ参照命令を検出し、必要に応じて命
令の変更又は新たな命令の挿入を行う。
【0034】検出したメモリ参照命令は、実際のメモリ
参照命令にメモリアクセスの正否をチェックする命令が
加わった命令列に変更される。メモリアクセスの正否を
チェックする命令はサブルーチンであってもよく、その
場合、メモリ参照命令の前後にチェック用のサブルーチ
ンを呼び出す命令列を追加すればよい。図3は、仮想的
なアセンブラ命令によるメモリ参照命令を示した図であ
る。“LABEL30: ld[reg10 + 20], reg11”は“レジスタ
10にオフセット値20を加えた番地アドレスの内容をレジ
スタ11にロードする”命令であって、オペランドの“ r
eg10+20 ”がメモリアドレスを指定しており、不正アク
セスの可能性があるので、不正アクセスチェック用の命
令を追加する。
【0035】図4は不正アクセスチェック用のサブルー
チン“pre-check-routine-for-load”及び“post-check
-routine-for-load ”を呼び出す命令が図3のメモリ参
照命令に付加された例を示すものである。なお、“cal
l”はサブルーチン“pre-check-routine-for-load”又
は“post-check-routine-for-load ”の呼び出し命令と
する。不正アクセス検出は、以下のような不正アクセス
を検出する。 ・動的に割り当てたメモリの範囲を超えたメモリアクセ
スの検出 ・動的に割り当てたメモリへの書き込み命令実行前の読
み込み命令実行の検出 ・解放済み動的割り当てメモリへのアクセスの検出
【0036】なお、本実施例ではメモリ参照命令自体は
変更されていないが、不正アクセスの検出方法によって
は参照命令自体を変更しなければならない可能性もあ
る。又はメモリ参照命令がどのようなメモリ参照を行う
かなどの解釈を行うことが必要になることもある。しか
し、いずれの場合であっても、変更/挿入される命令が
異なるだけであって、本発明システム及び方法の適用は
可能である。
【0037】変更/挿入を施されたソースプログラムは
アセンブル手段5によりオブジェクトプログラムに変換
され、オブジェクトプログラムは必要に応じてリンク手
段によりリンクされる。なお、変更はユーザプログラム
が実行される以前にバッチ的に実行される静的変更、又
はユーザプログラムの実行中に漸次実行する動的変更の
いずれであってもよい。
【0038】また、本実施例では本発明システムを動的
に割り当てられたメモリに対する不正アクセス検出に適
用し場合について説明したが、本発明方法の適用はこれ
に限らず一般的なオブジェクトプログラムの命令変更/
挿入に適用可能である。
【0039】
【発明の効果】以上のように、本発明方法及びシステム
は、ソースプログラムに対して変更/挿入を行い、参照
アドレスをラベルで扱うので、 CPU, OSの制約を受けず
に変更/挿入の自由度が高く、パターンマッチング等に
より変更/挿入対象の命令が短時間で容易に検出でき、
変更/挿入後のリロケーション処理が容易であるという
優れた効果を奏する。
【図面の簡単な説明】
【図1】本発明システムの構成を示すブロック図であ
る。
【図2】本発明方法の手順を示すフローチャートであ
る。
【図3】命令列挿入前のソースプログラム13の具体例を
示すプログラムである。
【図4】命令列挿入後のソースプログラム13の具体例を
示すプログラムである。
【図5】従来の命令列変更/挿入システムに用いられる
テーブルの概念図である。
【符号の説明】
1,1′ ユーザプログラム 2 ディスアセンブル手段 3 記憶手段 4 命令変更/挿入手段 5 アセンブル手段 6 リンク手段 11,11′ オブジェクトプログラム 13,13′ ソースプログラム

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトプログラムの命令を変更
    し、又はオブジェクトプログラムに新たな命令を挿入す
    る方法において、変更/挿入対象のオブジェクトプログ
    ラムを逆アセンブルしてソースプログラムに変換し、ソ
    ースプログラムを解析して他の命令を参照する命令を該
    ソースプログラムの中から検出し、命令が参照する各参
    照アドレスを識別するためのそれぞれに一意なラベルを
    生成して各参照アドレスの命令に付すとともに、命令に
    含まれる前記各参照アドレスを対応するラベルにそれぞ
    れ置換し、ラベルと該ラベルを付した命令のアドレスと
    を対応付けて記憶しておき、前記ソースプログラムから
    変更/挿入対象の命令を検出し、変更対象の命令を変更
    後の命令に置換し、又は挿入すべき命令を挿入すべき位
    置に挿入し、前記ラベルを付した命令の前に命令を挿入
    した場合は、該ラベルを、挿入した命令の先頭に付け替
    え、ラベルをアドレスに置換しながら、命令を変更/挿
    入したソースプログラムをアセンブルしてオブジェクト
    プログラムに変換することを特徴とするオブジェクトプ
    ログラムの命令の変更/挿入方法。
  2. 【請求項2】 変更/挿入対象の前記命令が動的に割り
    当てられたメモリへのアクセス命令であり、また、変更
    /挿入した命令が該メモリへの不正アクセスを検出する
    命令である請求項1記載のオブジェクトプログラムの命
    令の変更/挿入方法。
  3. 【請求項3】 変更/挿入対象の命令を検出するステッ
    プは、変更/挿入対象の命令の特徴的な部分とのパター
    ンマッチングにより、ソースプログラムから変更/挿入
    対象の命令を検出する請求項1記載のオブジェクトプロ
    グラムの命令の変更/挿入方法。
  4. 【請求項4】 オブジェクトプログラムの命令を変更
    し、又はオブジェクトプログラムに新たな命令を挿入す
    るシステムにおいて、変更/挿入対象のオブジェクトプ
    ログラムをディスアセンブルしてソースプログラムに変
    換し、ソースプログラムを解析して他の命令を参照する
    命令を該ソースプログラムの中から検出し、命令が参照
    する各参照アドレスを識別するためのそれぞれに一意な
    ラベルを生成して各参照アドレスの命令に付すととも
    に、命令に含まれる前記各参照アドレスを対応するラベ
    ルにそれぞれ置換するディスアセンブル手段と、ラベル
    と該ラベルを付した命令のアドレスとを対応付けて記憶
    しておく記憶手段と、前記ソースプログラムから変更/
    挿入対象の命令を検出し、変更対象の命令を変更後の命
    令に置換し、又は挿入すべき命令を挿入すべき位置に挿
    入し、前記ラベルを付した命令の前に命令を挿入した場
    合は、該ラベルを、挿入した命令に付け替える命令変更
    /挿入手段と、ラベルをアドレスに置換しながら、命令
    を変更/挿入したソースプログラムをアセンブルしてオ
    ブジェクトプログラムに変換するアセンブル手段とを備
    えたことを特徴とするオブジェクトプログラムの命令の
    変更/挿入システム。
  5. 【請求項5】 変更/挿入対象の前記命令が動的に割り
    当てられたメモリへのアクセス命令であり、また、変更
    /挿入した命令が該メモリへの不正アクセスを検出する
    命令である請求項4記載のオブジェクトプログラムの命
    令の変更/挿入システム。
  6. 【請求項6】 命令変更/挿入手段は、変更/挿入対象
    の命令の特徴的な部分とのパターンマッチングにより、
    ソースプログラムから変更/挿入対象の命令を検出する
    請求項4記載のオブジェクトプログラムの命令の変更/
    挿入システム。
JP28835294A 1994-11-22 1994-11-22 オブジェクトプログラムの命令の変更/挿入方法及びシステム Pending JPH08147155A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28835294A JPH08147155A (ja) 1994-11-22 1994-11-22 オブジェクトプログラムの命令の変更/挿入方法及びシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28835294A JPH08147155A (ja) 1994-11-22 1994-11-22 オブジェクトプログラムの命令の変更/挿入方法及びシステム

Publications (1)

Publication Number Publication Date
JPH08147155A true JPH08147155A (ja) 1996-06-07

Family

ID=17729101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28835294A Pending JPH08147155A (ja) 1994-11-22 1994-11-22 オブジェクトプログラムの命令の変更/挿入方法及びシステム

Country Status (1)

Country Link
JP (1) JPH08147155A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963741A (en) * 1997-01-29 1999-10-05 Nec Corporation Information processor which rewrites instructions in program to dynamically change program structure and method therefor
KR20020070809A (ko) * 2001-03-02 2002-09-11 인터내셔널 비지네스 머신즈 코포레이션 포스트-링크 코드 최적화
US6886156B2 (en) * 1999-11-30 2005-04-26 Stmicroelectronics Limited Disassembling object code
JP2009505275A (ja) * 2005-08-15 2009-02-05 ソニー エリクソン モバイル コミュニケーションズ, エービー モジュール内の実行アプリケーション・プログラムの安全性を検査するシステム、方法、及びコンピュータプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963741A (en) * 1997-01-29 1999-10-05 Nec Corporation Information processor which rewrites instructions in program to dynamically change program structure and method therefor
US6886156B2 (en) * 1999-11-30 2005-04-26 Stmicroelectronics Limited Disassembling object code
KR20020070809A (ko) * 2001-03-02 2002-09-11 인터내셔널 비지네스 머신즈 코포레이션 포스트-링크 코드 최적화
JP2009505275A (ja) * 2005-08-15 2009-02-05 ソニー エリクソン モバイル コミュニケーションズ, エービー モジュール内の実行アプリケーション・プログラムの安全性を検査するシステム、方法、及びコンピュータプログラム

Similar Documents

Publication Publication Date Title
US5535329A (en) Method and apparatus for modifying relocatable object code files and monitoring programs
US5999732A (en) Techniques for reducing the cost of dynamic class initialization checks in compiled code
US20030126590A1 (en) System and method for dynamic data-type checking
US6298479B1 (en) Method and system for compiling and linking source files
US20060195724A1 (en) Method for determining code coverage
JP4204768B2 (ja) ユーザに固有のインスツルメンテーションを支援する方法とシステム
US20050010911A1 (en) Shared library system and method of building the system
EP3427148B1 (en) Load module compiler
US20090083271A1 (en) Automatically Adding Bytecode to a Software Application to Determine Database Access Information
US20080005728A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US6351848B1 (en) Unitary data structure systems, methods, and computer program products, for global conflict determination
US5819252A (en) Method and apparatus for handling and detecting an invalid use of a data structure
US20210141907A1 (en) Method and device for patching vulnerability of binary
US7457927B2 (en) Memory dump of a computer system
US6968543B2 (en) Information processing apparatus
KR102209151B1 (ko) 바이너리 취약점 패치 방법 및 장치
US20080127038A1 (en) Apparatus and method for detecting self-executable compressed file
JPH08147155A (ja) オブジェクトプログラムの命令の変更/挿入方法及びシステム
US20120144371A1 (en) Using exception information
JP5891976B2 (ja) コンパイル実行・管理方法、装置、及びプログラム
US6941549B1 (en) Communicating between programs having different machine context organizations
JP3309792B2 (ja) スタックポインタトレース装置、スタックポインタトレース方法及び記録媒体
JP2005301415A (ja) コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム
EP0911743A1 (en) Converter for tag-delimited files
WO1999061970A2 (en) Global register systems, methods, and computer program products