JP2000076075A - 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置 - Google Patents

再配置可能な実行プログラムの生成方法及び実行プログラム生成装置

Info

Publication number
JP2000076075A
JP2000076075A JP10248128A JP24812898A JP2000076075A JP 2000076075 A JP2000076075 A JP 2000076075A JP 10248128 A JP10248128 A JP 10248128A JP 24812898 A JP24812898 A JP 24812898A JP 2000076075 A JP2000076075 A JP 2000076075A
Authority
JP
Japan
Prior art keywords
code
relocation
program
execution
encoded
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
Application number
JP10248128A
Other languages
English (en)
Other versions
JP3033562B2 (ja
Inventor
Mitsuhisa Kamei
光久 亀井
Kazuo Saito
和雄 齊藤
Hiroyuki Ishima
宏之 石間
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP10248128A priority Critical patent/JP3033562B2/ja
Publication of JP2000076075A publication Critical patent/JP2000076075A/ja
Application granted granted Critical
Publication of JP3033562B2 publication Critical patent/JP3033562B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 一部符号化したコード部分を含み且つ実行時
までは復号化しないように構成された実行プログラム・
コードをメモリ・ロード時に最適に再配置する再配置技
術を提供する。 【解決手段】 実行プログラムを符号化するときに
は、符号化対象コードに対する再配置情報と、それ以外
のコードに対する再配置情報とを識別できるようにして
おく。実行プログラムを起動して全体の再配置を行うと
きには、符号化対象コードに対する再配置は行わなず、
符号化されていないコード部分しか再配置しない。プロ
グラムの実行が進み、符号化対象コードを実行すべき段
階になったところで、まず符号化対象コードの復号化を
行い、次いで、再配置が必要ならば当該コード部分の再
配置を行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステム上で実行されるプログラム・コードをメモリにロ
ードするときにプログラム中のアドレス情報を再配置す
る再配置技術に係り、特に、一部符号化したコード部分
を含み且つ実行時までは復号化しないように構成された
実行プログラム・コードをメモリ・ロード時に最適に再
配置するための再配置技術に関する。
【0002】更に詳しくは、本発明は、符号化したコー
ド部分を含み且つ実行時まで復号化しないように構成さ
れたプログラムを、汎用コンパイラを用いても生成する
ことができる再配置技術に関する。
【0003】
【従来の技術】昨今の技術革新に伴い、ワークステーシ
ョン、汎用パーソナル・コンピュータなど各種情報処理
機器が開発され市販されている。かかる情報処理機器の
基本構造は、プロセッサと主メモリである。すなわち、
プロセッサは、主メモリにロードしたプログラム・コー
ドを実行し、その作業データを主メモリの作業領域に書
きこむようになっている。プロセッサは、一般に、オペ
レーティング・システムの制御下で各種プログラム・コ
ードを実行する。
【0004】プログラム・コードを主メモリ上にロード
する場所すなわちメモリ・アドレスを決める方式の1つ
として、ハードウェアやプロセスやジョブなどのある単
位の中でメモリ・アドレスを一意に決定する「絶対アド
レス方式」がある。絶対アドレス方式を利用するプログ
ラムが起動したとき、予定されたアドレスに当該プログ
ラムを割り当てられないという状況が発生すると、プロ
グラム中のアドレス情報を書き換える作業すなわち再配
置(リロケーション)が必要となる。また、割り当てる
アドレスを予め決めることなく、プログラムを起動する
度に再配置を行うことを前提としたオペレーティング・
システムもある。
【0005】オペレーティング・システムに含まれる標
準のプログラム・ローダでは、再配置のための機構が用
意されている。この再配置の機構は、再配置を行うとき
に書き換えが必要となる個所を記した再配置情報をプロ
グラム内に含ませておき、予定されていたベース・アド
レスと実際に割り当てられたベース・アドレスとの差分
に応じて適正なアドレスを求め、再配置情報に示されて
いる各個所のアドレス情報を書き換えることで実現され
る。
【0006】例えば特開平1−286035号公報に
は、プログラムの再配置処理に関する情報に従ってロー
ド時にプログラムの内容を書き換えるプログラム変更方
式について開示されている。同公報に係る方式では、実
行プログラムの再配置情報テーブルの各エントリには、
再配置情報が有効か無効化を示すためのフラグが用意さ
れている。再配置情報が無効になっているときには、プ
ログラム・コードの対応する部分には再配置によるアド
レス情報の書き換えを禁止するようになっている。同公
報に開示された発明は、プログラム・コード内のアドレ
ス情報をアドレス以外の情報に書き換えることによっ
て、効率的なプログラム変更を実現している。
【0007】ところで、最近では、プログラムの格納に
必要な記憶容量を小さくするためにプログラム・コード
を圧縮したり、解析による不正利用を防止するためにプ
ログラム・コードを暗号化したり、あるいはその他の目
的のために、プログラム・コードを符号化することが多
くなってきた。
【0008】プログラム全体を符号化する場合には、プ
ログラムの実行に際しては、プログラム・コードを一旦
復号化した後にオペレーティング・システムのローダに
再配置を委ねるようにすれば、プログラムの正常な実行
を担保することができた。
【0009】他方、プログラム全体ではなく一部にのみ
符号化を適用する手法もある。例えば、プログラム・サ
イズが巨大な場合、プログラム全体を圧縮してしまう
と、起動時には伸長処理のために長時間を要してしま
う。このため、プログラムを部分的にしか圧縮せず、起
動後に必要に応じて適宜伸長して実行するようにしてい
る。このようにすれば、プログラム全体を圧縮する方式
に比し、プログラムの起動が速くなり、且つ、圧縮部分
を実行する必要がない場合には伸長処理も不要になるの
で全体の処理時間も短縮されるという利点がある。ある
いは、プログラムを部分的に暗号化し、且つ、実際に実
行する必要があるまでは暗号化部分を復号化しないよう
に構成することで、解析によるプログラムの不正利用を
好適に防止することもできる。
【0010】しかしながら、オペレーティング・システ
ムに標準のプログラム・ローダは、プログラムを起動す
る際には、符号化されているか否かに拘らず再配置処理
を実行するようにデザインされている。全体の一部のみ
を符号化したプログラム・ファイルに対して標準のプロ
グラム・ローダを適用して再配置を行うと、符号化部分
に含まれているアドレス情報を再配置しようとして、符
号化された状態のプログラム・コードを書き換えてしま
う。プログラム・コード内のアドレス情報が符号化され
た状態では、アドレス情報が現れていないために、書き
換えに失敗して、プログラム・コードを破壊してしま
う。その結果、復号化してもプログラムが正常に実行さ
れないという問題がある。
【0011】例えば上述した特開平1−286025号
公報に開示されたプログラム変更方式は、アドレスの再
配置処理を抑制するものであり、これを適用することに
よって、符号化対象コードに対する再配置処理を抑止す
ることは可能である。しかしながら、符号化対象コード
は再配置されないまま取り残されるだけのことであり、
復号化処理によって現れたアドレスに対して再配置後の
正しいアドレス情報に書き換えることができない。結局
のところ、プログラムは依然として正常に実行できない
ままとなってしまう。
【0012】以上を要言すれば、符号化したコード部分
を含み且つ実行の必要があるまで復号化しないように構
成された実行プログラムをメモリ・ロード時に好適に再
配置する技術は、これまでに開示されていない。
【0013】さらに、このような機能を持つプログラム
を実現できたとしても、従来の汎用コンパイラでは生成
することができない。言い換えれば、このようなプログ
ラムを生成するためには、特殊なコンパイラをデザイン
しなければならず、多大なコストがかかってしまう。
【0014】
【発明が解決しようとする課題】本発明の目的は、符号
化したコード部分を含み且つ実行の必要があるまで復号
化しないように構成された実行プログラムをメモリ・ロ
ード時に最適に再配置処理することができる、優れた再
配置技術を提供することにある。
【0015】本発明の更なる目的は、プログラムの再配
置を要するコンピューティング環境において、プログラ
ムの一部を符号化しておき、プログラムの起動後に符号
化コード部分を復号化して正常に実行することができる
プログラムを提供することにある。
【0016】本発明の更なる目的は、符号化したコード
部分を含み且つ実行の必要があるまで復号化しないよう
に構成されたプログラムを、汎用コンパイラを用いても
生成することができる技術を提供することにある。
【0017】
【課題を解決するための手段】本発明は、上記課題を参
酌してなされたものであり、その第1の側面は、再配置
を可能ならしめるための再配置情報を持ち、プログラム
・コードの一部に符号化を予定された符号化対象コード
を含むタイプの実行プログラムを生成する方法であっ
て、(a)メモリ・ロード時における符号化対象コード
の再配置処理を禁止すべく、符号化対象コードに関する
再配置情報を無効化するステップと、(b)符号化対象
コードを符号化するステップと、(c)符号化された符
号化対象コードを復号化するための復号化処理部を実行
プログラムに付与するステップと、(d)復号化された
符号化対象コードに対して再配置処理を行う再配置処理
部を実行プログラムに付与するステップと、を含むこと
を特徴とする実行プログラムの生成方法である。
【0018】また、本発明の第2の側面は、再配置を可
能ならしめるための再配置情報を格納した再配置情報セ
クションを含む複数のセクションからなり、プログラム
・コードの一部に符号化を予定された符号化対象コード
を含むタイプの実行プログラムを生成する方法であっ
て、(a)再配置情報のうち符号化対象コードに関する
再配置情報エントリを、メモリ・ロードにロードされる
他のセクションに複写するステップと、(b)メモリ・
ロード時における符号化対象コードの再配置処理を禁止
すべく、符号化対象コードに関する再配置情報エントリ
を再配置情報セクションから削除するステップと、
(c)符号化対象コードを符号化するステップと、
(d)符号化された符号化対象コードを復号化するため
の復号化処理部を実行プログラムに付与するステップ
と、(e)復号化された符号化対象コードに対して再配
置処理を行う再配置処理部を実行プログラムに付与する
ステップと、を含むことを特徴とする実行プログラムの
生成方法である。
【0019】本発明の第1又は第2の側面に係る実行プ
ログラムの生成方法において、前記符号化は圧縮処理で
あり、復号化は圧縮されたデータの伸長処理であっても
よい。あるいは、前記符号化は暗号化処理であり、復号
化は暗号化データの復号処理であってもよい。
【0020】また、本発明の第3の側面は、実行コード
を集めた実行コード・セクションと、再配置を可能なら
しめるための再配置情報セクションとを持ち、実行コー
ド・セクションの一部に圧縮処理の適用を予定された符
号化対象コードを含むタイプの実行プログラムを生成す
る方法であって、(a)メモリ・ロード時における符号
化対象コードの再配置処理を禁止すべく、再配置情報セ
クションに格納された再配置情報のうち符号化対象コー
ドに関する再配置情報エントリを無効化するステップ
と、(b)符号化対象コードを圧縮するステップと、
(c)符号化対象コードの圧縮により空きができた領域
の分だけ、実行コード・セクション以降のセクションの
領域を前につめるステップと、(d)圧縮された符号化
対象コードを伸長処理するための復号化処理部を実行コ
ード・セクションに挿入するステップと、(e)復号化
された符号化対象コードに対して再配置処理を行う再配
置処理部を実行コード・セクションに挿入するステップ
と、を含むことを特徴とする実行プログラムの生成方法
である。
【0021】本発明の第1、第2、又は第3の側面に係
る実行プログラムの生成方法において、前記復号化処理
部と前記再配置処理部は、実行プログラムをメモリにロ
ードした後符号化対象コードを最初に実行するときに、
符号化対象コードに適用されるようにしてもよい。
【0022】また、本発明の第4の側面は、再配置を可
能ならしめるための再配置情報を格納した再配置情報セ
クションを含む複数のセクションからなり、プログラム
・コードの一部に符号化を予定された符号化対象コード
を含むタイプの実行プログラムを生成する装置であっ
て、(a)コーディングされた高級言語形式のソース・
プログラム・コードをオブジェクト・プログラム・コー
ドに変換するためのコンパイラと、(b)コーディング
されたプログラム・コード中で、符号化すべき範囲を特
定するための符号化対象コード検出手段と、(c)前記
符号化対象コード検出手段によって特定された符号対象
範囲のコードを符号化するための符号化処理手段と、
(d)符号化された符号化対象コードを復号化するため
の復号処理手段を実行プログラム中に与えるための復号
処理付与手段と、(e)復号化された符号化対象コード
に関するアドレス情報を再配置するための再配置処理手
段を実行プログラム中に与えるための再配置処理付与手
段と、(f)実行プログラム全体に関する再配置情報を
生成して、実行プログラムに与えるための再配置生成手
段と、を含むことを特徴とする実行プログラムの生成装
置である。
【0023】本発明の第4の側面に係る実行プログラム
の生成装置において、前記符号化は圧縮処理であり、復
号化は圧縮されたデータの伸長処理であってもよい。あ
るいは、前記符号化は暗号化処理であり、復号化は暗号
化データの復号処理であってもよい。
【0024】また、前記復号化処理手段と前記再配置処
理手段は、実行プログラムをメモリにロードした後符号
化対象コードを最初に実行するときに、符号化対象コー
ドに適用されるようにしてもよい。
【0025】また、本発明の第5の側面は、再配置を可
能ならしめるための再配置情報を持ち、プログラム・コ
ードの一部に符号化を予定された符号化対象コードを含
むタイプの実行プログラムを実行する方法であって、
(a)実行プログラムをメモリ空間上に割り付けるステ
ップと、(b)実行プログラムのメモリ・ロード時にお
いて、符号化対象コード以外について再配置を行うステ
ップと、(c)メモリ・ロードされた実行プログラムを
実行するステップと、(d)符号化対象コードを実行す
るときには、その前に、符号化された符号化対象コード
を復号化するステップと、(e)復号化された符号化対
象コードに対して再配置処理を行うステップと、(f)
復号化された符号化対象コードを実行するステップと、
を含むことを特徴とする実行プログラムの実行方法であ
る。
【0026】本発明の第5の側面に係る実行プログラム
の実行方法において、前記符号化は圧縮処理であり、復
号化は圧縮されたデータの伸長処理であってもよい。あ
るいは、前記符号化は暗号化処理であり、復号化は暗号
化データの復号処理であってもよい。
【0027】また、実行プログラムは、符号化対象コー
ドがメモリ・ロード後既に呼び出されたことがあるか否
かを示す復号実施フラグを含み、前記復号実施フラグの
設定に応じて前記(d)復号化するステップと前記
(e)再配置処理するステップを実行するようにしても
よい。
【0028】また、本発明の第6の側面は、コンピュー
タ・システム上で実行可能な実行プログラムであって、
(a)一部に符号化された符号化対象コードを含む実行
コードと、(b)メモリ・ロード時における符号化対象
コードに対する再配置処理を抑制可能な形式で記述され
た再配置情報と、(c)符号化された符号化対象コード
を復号化するための復号処理部と、(d)復号化された
符号化対象コードに対して再配置処理を行う再配置処理
部と、を含むことを特徴とする実行プログラムである。
【0029】また、本発明の第7の側面は、コンピュー
タ・システム上で実行可能な実行プログラムを有形的に
格納したコンピュータ可読記憶媒体であって、前記実行
プログラムは、(a)一部に符号化された符号化対象コ
ードを含む実行コードと、(b)メモリ・ロード時にお
ける符号化対象コードに対する再配置処理を抑制可能な
形式で記述された再配置情報と、(c)符号化された符
号化対象コードを復号化するための復号処理部と、
(d)復号化された符号化対象コードに対して再配置処
理を行う再配置処理部と、を含むことを特徴とするコン
ピュータ可読記憶媒体である。
【0030】
【作用】本発明を実装した実行プログラムは、符号化し
た符号化対象コードと、それ以外の符号化されていない
コードとで構成される。
【0031】実行プログラムを符号化するときには、符
号化対象コードに対する再配置情報と、それ以外のコー
ドに対する再配置情報とを識別できるようにしておく。
【0032】実行プログラムは、符号化対象コードを実
行する直前に、符号化対照コードを復号化するととも
に、符号化対照コードについての再配置を実施するよう
にデザインされている。これは、符号化対照コードを復
号化するための「復号化関数」と、符号化対照コードに
関する再配置情報を参照してその再配置を実施する「ロ
ード後再配置実施関数」とを、実行プログラム内に装備
することによって実現される。
【0033】実行プログラムを起動して全体の再配置を
行うときには、符号化対象コードに対する再配置は行わ
なず、符号化されていないコード部分しか再配置しな
い。そして、プログラムの実行が進み、符号化対象コー
ドを実行すべき段階になったところで、まず符号化対象
コードの復号化を行い、次いで、再配置が必要ならば当
該コード部分の再配置を行うので、正常に実行すること
ができる。
【0034】本発明のさらに他の目的、特徴や利点は、
後述する本発明の実施例や添付する図面に基づくより詳
細な説明によって明らかになるであろう。
【0035】
【発明の実施の形態】本発明を実現したプログラム・コ
ードは、例えば、所定のオペレーティング・システムを
インストールした汎用コンピュータ・システム上に実行
可能である。汎用コンピュータ・システムは、一般に、
プログラム・コードを実行するプロセッサと、プログラ
ム・コードをロードしたり作業データを一時格納するた
めのメモリと、ディスプレイやキーボード/マウスなど
のユーザ入出力装置と、プログラム・ファイルやデータ
・ファイルなどを不揮発的に保管するハード・ディスク
・ドライブなどの外部記憶装置を含んでいる。但し、コ
ンピュータ・システムの構成自体は本発明の要旨を構成
しないので、この明細書ではこれ以上説明しない。
【0036】以下、本発明を実現した実行プログラム・
コードやコンピュータ・システム上における該プログラ
ム・コードの動作特性などについて、図面を参照しなが
ら詳解する。
【0037】《第1の実施例》実行ファイルを圧縮する
場合、通常は、ファイル全体をまとめて圧縮する。しか
し、サイズは大きいが少ない頻度でしか実行されないル
ーチンを含むようなプログラムの場合には、かかるルー
チンのみを部分的に圧縮して、実行時にのみ該ルーチン
部分を復号化して利用するような方式を採用する。この
ような方式によれば、ルーチンを実行しないときには復
号化作業が必要でなくなるため、無駄な処理を省略する
ことができる。また、データを初めて参照するときに復
号化作業を行うようにしておくことで、少ない頻度でし
か参照されない膨大な量のデータを持つプログラムにつ
いても同様の方式を採用することができる。
【0038】ここで述べる第1の実施例は、実行プログ
ラムを部分的に圧縮する場合の例であり、実行プログラ
ムのコンパイル処理のために汎用のコンパイラを利用す
ることができる。
【0039】図1には、第1の実施例を適用する実行プ
ログラムのコード・イメージを概念的に示している。
【0040】同図に示すように、実行プログラムは、複
数のセクションから構成されるが、本発明を実現するた
めには、少なくとも、実行コードを含む実行コード・セ
クションと、アドレスの再配置情報を記述するための再
配置情報セクションを含んでいる。
【0041】また、本実施例の実行プログラムは、実行
ファイル情報と、データ・セクションも備えている。
【0042】実行ファイル情報は、該実行プログラムに
関するファイル情報の集まりを格納したセクションであ
り、プログラムの先頭に配置されている。この実行ファ
イル情報の中には、実行プログラムの先頭がロードされ
るべきアドレス(すなわちコンパイル時に前提としたベ
ース・アドレス)が含まれる。図1の例では、ベース・
アドレスが16進数表記で0x4000に割り当てられ
ている。
【0043】また、実行ファイル情報は、このプログラ
ムに含まれる実行コード・セクションやデータ・セクシ
ョン、再配置情報セクションなどの各セクションに関す
る、記録されているファイル内の位置、大きさ、メモリ
に割り付ける時のベースアドレスからのオフセット、書
き込み可能であるか実行可能であるかなどの属性などの
情報も保持している。
【0044】データ・セクションには、静的に記憶領域
が確保されているデータを記憶するための領域である。
【0045】一般に、実行コード・セクションのコード
の中には、実行プログラム内における他の情報の場所を
示すための絶対アドレス情報が含まれている。図1の例
では、ベース・アドレスからの相対アドレスが0x14
Cの命令(すなわち、ベース・アドレスが0x4000
であれば、0x414C番地にロードされる命令)にデ
ータ・セクションの絶対アドレス0x44A8のデータ
を読み込む命令が存在している。0x414C番地に
は、命令の種別を示すオペコードが置かれ、0x414
D番地以降にアドレス情報が置かれている。
【0046】実行プログラムに含まれているこのような
絶対アドレス情報は、ベース・アドレスが0x4000
番地になることを前提として定義されている。従って、
ベース・アドレスを0x4000番地以外のアドレスに
ロードする場合には、再配置処理が必要となる。そこ
で、再配置処理に必要なアドレス情報等を再配置情報セ
クションに保管するようにしている。
【0047】再配置情報セクションに保持されている再
配置情報は、実行プログラム内の絶対アドレス情報が保
持されている位置毎に1つのエントリを設けている。各
エントリは、絶対アドレス情報を保持している位置のベ
ース・アドレスからの差分(すなわち相対アドレス)を
書き込むフィールドと、そのアドレス情報が有効か無効
かを示すフラグとを含んでいる。有効/無効フラグの使
用形態については後に詳解する。
【0048】図1の例では、絶対アドレス0x414C
番地にロードされる命令には、データ・セクションの絶
対アドレス0x44A8のデータを読み込む命令が存在
している。0x414C番地には命令の種別を示すオペ
コードが置かれ、0x414D番地以降にアドレス情報
が置かれている(前述)。再配置情報セクションの該当
するエントリでは、0x414D番地に置かれているア
ドレス情報を、ベース・アドレス0x4000番地から
のオフセットである0x14Dによって指し示してい
る。
【0049】実行プログラムをメモリにロードするとき
に再配置が必要となる場合には、プログラム・ローダ
は、実行プログラムの再配置情報を参照して、アドレス
情報を書き換えて、アドレスの整合性を維持してからプ
ログラムを実行するするようになっている。
【0050】ここで、図1の例において、実行プログラ
ムのベース・アドレスを0x4000番地に割り当てる
ことができなくて、代わりにベース・アドレス0x50
00番地に割り当てた場合について説明する。
【0051】実行プログラムが予期していたベース・ア
ドレス0x4000と、実際にメモリ内で割り当てられ
たベース・アドレス0x5000との差分は0x100
0であるので、実行コード・セクションに含まれている
各絶対アドレス情報にこの差分を加算して、正常なアド
レス情報に書き換えなければならない。このアドレス書
き換え処理は、再配置情報の各エントリを参照して、保
管されているオフセット・アドレスに従って絶対アドレ
スが書き込まれている位置を逐次見出し、書き換えてい
くことで実現される。例えば、再配置情報が指し示すオ
フセットが0x14Dには読み込むべきデータの絶対ア
ドレス0x44A8が含まれていたが、ベース・アドレ
スが0x5000となった現在では、0x514D番地
に置かれているアドレス情報に差分0x1000が加算
されて、0x54A8番地のデータを読み込む命令に書
き換わる。
【0052】図2には、本発明である実行プログラムを
作成するための処理手順を、フローチャートの形式で図
解している。以下、各ステップについて説明する。
【0053】まず、実行コード・セクションに置かれる
コードの作成すなわちコーディングを行う(ステップ1
00)。実行コード中には、符号化対象コードと、され
た符号化対象コードを復元するための復号実行コード
と、符号化対象コードの再配置を実行するためのロード
後再配置実行コードが含まれる。
【0054】復号実行コードとロード後再配置実行コー
ドを関数という形で作成してもよい。また、これらの関
数を、予め作成しておいたライブラリという形式で提供
することも可能である。但し、復号実行コードを提供す
る関数(仮に「復号関数」と呼ぶ)は、復号を実施する
範囲(すなわち符号化対象コードの範囲)に関する情報
を関数呼び出しのときに受け取るようにする必要があ
る。また、ロード後再配置実行コードを提供する関数
(仮に「再配置関数」と呼ぶ)は、符号化対象コードを
復号化した後に再配置を実施するときに、符号化対象コ
ードについての再配置情報を参照する必要がある。この
ため、ロード後再配置情報を、その情報へのポインタを
渡すなどの方法で、関数の呼び出し時に指定しておかな
ければならない。
【0055】符号化対象コードは、サイズ削減の目的
(前述)により、後に圧縮などの符号化処理を施すこと
が予定されているコード部分である。符号化を施すべき
符号化対象コードの範囲を決定する方法は任意でよい。
但し、本実施例では、符号化対象コードを実行コード・
セクションの最後に置くようにしている。セクションの
最後に置く理由は、実行ファイルを小さなサイズにする
ためである。実行コードをファイル上に記録するときに
は、圧縮によってコードを小さくした分だけコードをつ
めて書き込む。ここで、圧縮によって空いた空間をセク
ションの境界に配置すれば、セクション単位でつめるこ
とができる。すなわち、セクションの途中でつめる場合
に比べて、プログラムの書き替えが最小限に済む。
【0056】ソース・ファイル上で行った関数定義の順
序関係を実行コード上でも維持するタイプのコンパイラ
では、符号化対象コードを持つ関数の定義をソース・フ
ァイルの末尾で行うことで、符号化対象コードを実行コ
ード・セクションの最後に置くことができる。これ以外
のタイプのコンパイラに関しては、コードの順序関係を
変更するような最適化処理を抑止するように設定しなけ
ればならないであろう。
【0057】また、実行プログラムをロード後初めて符
号化対象コードを実行する前には、復号関数と再配置関
数を実行するようにする。この具体的な方法としては、
復号が既に実施されたか否かを示す復号実施フラグを実
行プログラム中に用意しておくことが挙げられる。符号
化対象コードが実行される前に、この復号実施フラグを
参照して、未だ復号されていない場合にのみ、復号関数
と再配置関数を呼び出すようにする。復号実施フラグの
初期状態は、復号されていないことを示す状態にすべき
である。
【0058】上記のようにしてプログラムが作成できた
ら(ステップ100)、次いで、実行可能なコードにコ
ンパイルする(ステップ200)。コンパイル処理は、
汎用のコンパイラをそのまま利用することができる。コ
ンパイル処理は従来技術でよいので、本明細書ではこれ
以上説明しない。最後に、符号化とリロケーションの対
応処理を行う(ステップ300)。
【0059】図3には、図2のステップ300において
実行される処理手順の詳細をフローチャートの形式で示
している。以下、各ステップについて詳解する。
【0060】まず、符号化対象コードの範囲を取得する
(ステップ301)。第1の実施例では、符号化対象コ
ードは実行コード・セクションの末尾になる(上述)。
【0061】次に、標準のローダによってローディング
されるときに符号化対象コード部分に対して再配置が行
われないように、再配置情報を変更する。この具体的な
方法は、全体の再配置情報の先頭エントリから再配置情
報を1つずつ読み出し(ステップ302)、その再配置
情報が指し示す対象が、符号化対象コードに含まれるか
どうか判定して(ステップ303)、符号化対象コード
に含まれる場合には、そのエントリについての再配置情
報を無効化する(ステップ304)。無効化は、エント
リの有効/無効フラグ(前述)に無効を示すフラグを設
定すればよい。そして、全ての再配置情報エントリにつ
いて上記と同様の処理を繰り返し行う(ステップ30
5)。
【0062】本実施例では、再配置情報セクションもメ
モリ上にロードされることを前提にしており、符号化対
象コードについての再配置情報もメモリ上に存在する。
これに対し、再配置情報セクションをメモリ上にロード
しないタイプのオペレーティング・システムでは、符号
化対象コードに対する再配置情報を記述したロード後再
配置情報を、実行コード・セクションやデータ・セクシ
ョンのように、メモリにロードされるセクションに複写
する必要がある。
【0063】全ての再配置情報に付きステップ304に
おける無効化処理が終了したら、符号化対象コードを圧
縮符号化する(ステップ306)。コードが圧縮された
分だけ領域に空きができる。ファイルに記録するときに
はサイズが小さくなるように、実行コード・セクション
以降のセクションを、空きができた領域の大きさだけ前
につめて記録する(ステップ307)。
【0064】ステップ307によって、セクションが保
持される場所がずれるため、実行ファイル情報の一部と
して記録されている実行ファイル内のセクション開始位
置を、前につめた新しい値に書き換える (ステップ3
08)。
【0065】図3で示した処理手順に従って、本実施例
に係る実行プログラム・ファイルが好適に作成される。
図4には、作成された実行プログラム・ファイルの構成
を模式的に図解しているが、該ファイルは、再配置情報
セクションと、実行コード・セクションと、データ・セ
クションとを含んでいる。
【0066】再配置情報セクションには、コード全体に
ついての再配置情報が、符号化対象コードに対応した再
配置情報であるかそれ以外のコードに対する再配置情報
であるのかを識別できるような形式で保管されている。
【0067】また、実行コード・セクションには、圧縮
符号化された符号化対象コードと、復号実行コードを含
む復号関数と、ロード後再配置実行コードを含む再配置
関数とを含み、符号化対象コードは当該コード・セクシ
ョンの末尾に配置されている。実行プログラムは、符号
化対象コードを実行する前に復号関数と再配置関数を実
行するように構成されている。
【0068】また、本実施例のデータ・セクション内に
は、符号化対象コードが既に復号されているか否かを示
す復号実施フラグが用意されている。
【0069】本実施例では、汎用のコンパイラの後処理
として、再配置情報の修正と符号化対象コードの圧縮を
行う実施例を示した。しかし、コンパイラに同様の機能
を組み込み、コンパイル作業と同時に本実施例と同様の
構成のプログラムを生成することも可能である。この場
合には、コンパイル作業で再配置情報を作成する時に、
符号化対象コードに含まれるか判定することで、最終的
な再配置情報を直接作成できるので、本実施例に比べて
処理効率が向上するという利点を持つ。
【0070】次に、作成された実行プログラムを実行す
る処理手順について説明する。
【0071】プログラムのローダは、実行プログラムを
ロードするとき、再配置を行う必要がある場合、すなわ
ち予期していたベース・アドレス以外にプログラムがロ
ードされた場合には、再配置処理を行う。但し、本実施
例では、符号化対象コードに対する再配置情報が無効化
されているので、符号化対象コード以外のコードに対し
てのみ再配置が行われる。そして、プログラムがロード
された後に、プログラムは実行に移る。
【0072】符号化対象コードを実行するときには、そ
の前に、復号実施フラグを参照して、符号化対象コード
が既に復号されているかどうかを判定する。未だ復号さ
れていない場合には、復号関数と再配置関数が呼び出さ
れて、符号化対象コードに対して適用される。復号関数
では、復号する範囲を取得して、復号対象コードを復号
する。また、実行プログラムのロード時に再配置が行わ
れた場合には、復号化された符号化対象コードに対して
再配置の必要がある。再配置関数では、再配置情報セク
ションのうち、符号対象コードの範囲内で再配置の実行
が無効になっているエントリを参照して、ローダが行う
再配置と同様の再配置処理を行う。さらに、復号化フラ
グを復号されている状態に変更する。これらの処理後
に、復号化された符号化対象コードを実行する。
【0073】符号化対象コードが2回目以降に呼び出さ
れる場合は、復号されているか示す復号実施フラグを参
照すると、既に復号されていると判定できる。このた
め、復号関数と再配置関数を実行せずに復号化された符
号化対象コードをそのまま実行する。これ以降は、通常
のプログラムの実行と同様にしてプログラムの実行は進
む。
【0074】以上の説明で、本実施例に係る実行プログ
ラムの実行を、通常のプログラムの実行メカニズムに従
って進めることが可能であることを、充分理解できるで
あろう。
【0075】《第2の実施例》 第1の実施例は実行プ
ログラム・コードの一部を圧縮する場合に本発明を適用
したものである。これに対し、第2の実施例は、実行プ
ログラムを暗号化する場合に本発明を適用する実施例で
ある。
【0076】本実施例における実行プログラムを作成す
る処理手順も図2と同様である。すなわち、プログラム
の中で暗号化を施すコードを考慮してプログラミングを
行う(ステップ100)。
【0077】プログラミング時に行う作業の1つとし
て、暗号化を施すコードである符号化対象コードを決定
する。実行コードの一部を暗号化する目的は、コードに
含まれるセキュリティ情報を保護することにある。符号
化対象コードの復号を行う復号実行コードと、符号化対
象コードの再配置を実行するロード後再配置実行コード
を実行コード・セクションに挿入しておくことで、実行
プログラム・コードは、符号化対象コードの実行前に、
復号化処理及び復号化された部分の再配置処理を行うよ
うに構成される。
【0078】符号化対象コードに対して再配置処理を施
すためには、符号化対象コードに対する再配置情報を記
述したロード後再配置情報を参照する必要がある。ロー
ド後再配置情報を確保する1つの方法は、第1の実施例
で述べたように、再配置情報セクションもメモリ上にロ
ードされることである。また、その他の方法は、メモリ
にロードされる他のセクション(例えば実行コード・セ
クションやデータ・セクション)に、ロード後再配置情
報を複写する領域を確保することである。
【0079】上記のようにしてプログラムが出来上がっ
たら、通常のコンパイラを用いて実行可能なコード体系
にコンパイルする(ステップ200)。そして、コンパ
イルされたプログラムに対して、符号化と再配置情報の
変更を行う(ステップ300)。
【0080】ステップ300において行われる再配置情
報の変更処理は、第1の実施例と同様に、図3で示した
フローチャートに従って実現することができる。この場
合、再配置情報セクションもメモリ上にロードされるこ
とを前提としている。以下、図3を再び参照しながら説
明する。
【0081】まず、符号化対象コードの範囲を取得する
(ステップ301)。
【0082】次に、標準のローダによってローディング
されるときに符号化対象コード部分に対して再配置が行
われないように、再配置情報を変更する。この具体的な
方法は、全体の再配置情報の先頭エントリから再配置情
報を1つずつ読み出し(ステップ302)、その再配置
情報が指し示す対象が、符号化対象コードに含まれるか
どうか判定して(ステップ303)、符号化対象コード
に含まれる場合には、そのエントリについての再配置情
報を無効化する(ステップ304)。無効化は、エント
リの有効/無効フラグ(前述)に無効を示すフラグを設
定すればよい。そして、全ての再配置情報エントリにつ
いて上記と同様の処理を繰り返し行う(ステップ30
5)。
【0083】全ての再配置情報に付きステップ304に
おける無効化処理が終了したら、符号化対象コードを暗
号化する(ステップ306)。但し、コードを圧縮する
第1の実施例とは相違し、暗号化によってコードのサイ
ズは小さくならないので、ステップ307及び308は
実行しない。
【0084】図5には、ステップ300において行われ
る再配置情報変更処理の他の例を、フローチャートの形
式で示している。この例では、符号化対象コードに対す
る再配置情報を記述したロード後再配置情報を複写する
ための領域を、メモリにロードされるロード後再配置実
施コード・セクションの中に確保するようになってい
る。以下、各ステップについて詳解する。
【0085】まず、符号化対象コードの範囲を取得し
(ステップ351)、その範囲のコードを暗号化する
(ステップ352)。
【0086】次いで、全体の再配置情報から、暗号化を
行う符号化対象コードに関する再配置情報エントリを抜
き出して(ステップ353)、ロード後再配置実施コー
ドに確保しておいたロード後再配置情報の記憶領域に複
写する(ステップ354)。
【0087】次いで、再配置情報セクションの中からロ
ード後再配置情報に関するエントリを全て消去する(ス
テップ355)。再配置情報からこれらエントリがなく
なった結果として、実行プログラムのメモリ・ロード時
に実行される再配置処理において、符号化対象コードに
関するアドレス情報の再配置処理を確実に禁止すること
ができる。また、エントリを消去しなくても、ロード時
に再配置の実行を無効化するようにフラグなどの属性情
報を書き換えるだけでも同様の効果を持つ。
【0088】図6には、上記の手順に従って作成された
実行プログラム・ファイルの構成を模式的に図解してい
る。該ファイルは、実行ファイル情報、実行コード・セ
クション、データ・セクション、プログラム全体の再配
置情報を記述した再配置情報セクションを含んでいる。
【0089】実行コード・セクションには、暗号化され
た符号化対象コード、符号化対象コードを実行する前に
暗号化コードを復号する復号実行コード、及び、復号さ
れた符号化対象コードに対して再配置を行うロード後再
配置実行コードが含まれている。また、符号化対象コー
ドに関するロード後再配置情報は、データ・セクション
内に確保された領域に格納される。
【0090】再配置情報セクションには、コード全体に
ついての再配置情報が、符号化対象コードに対応した再
配置情報であるかそれ以外のコードに対する再配置情報
であるのかを識別できるような形式で保管されている。
【0091】次に、本実施例に係る実行プログラムを実
行する様子について説明する。
【0092】プログラムのローダは、実行プログラムを
ロードするときに、コードに含まれるアドレス情報の再
配置処理を行う。
【0093】符号化対象コードに関する再配置情報エン
トリは全て、再配置情報セクションから削除され、又は
無効化されているので、符号化対象コード以外のコード
に対してのみ再配置が行われる。
【0094】プログラムがロードされた後に、プログラ
ムは実行に移る。符号化対象コードの部分を実行する前
に、復号実行コードを適用することで符号化対象コード
を復号して、さらにその後に、復号した符号対象コード
に関するロード後再配置情報を参照して、復号した符号
対象コードについての再配置処理を行う。
【0095】そして、復号したコードを実行し、実行後
に破棄実行コードによってコードを破棄する。破棄する
ことにより、コードのセキュリティを保護することがで
きる。
【0096】以上の処理手順に従えば、通常のプログラ
ム実行メカニズムの上で、本実施例に係る実行プログラ
ムの実行を進めることが可能である、ということを充分
理解できるであろう。
【0097】図7には、第1又は第2の実施例に係る実
行プログラムを好適に生成することができる実行プログ
ラム生成装置100の構成を模式的に示したブロック図
である。同図に示すように、実行プログラム生成装置1
00は、コンパイラ11と、符号化対象コード検出手段
12と、符号化処理手段13と、復号処理付与手段14
と、再配置処理付与手段15と、再配置生成手段16と
で構成される。実行プログラム生成装置100の実体
は、同様の機能を実現するソフトウェア・プログラムを
インストールした汎用コンピュータ・システムである。
【0098】コンパイラは、コーディングされた高級言
語形式のソース・プログラム・コードをオブジェクト・
プログラム・コードに変換するためのものである。既に
述べたように、コンパイラ11は現在普及している汎用
タイプのコンパイラでもよい。
【0099】符号化対象コード検出手段12は、コーデ
ィングされたプログラム・コード中で、符号化(すなわ
ち圧縮又は暗号化)すべき範囲を指定するための手段で
ある。指定方法は任意である。
【0100】符号化処理手段13は、符号化対象コード
検出手段12によって指定された符号対象範囲のコード
を符号化するためのものである。本発明を実現する上
で、符号化、すなわち圧縮若しくは暗号化する方式自体
は問わない。
【0101】復号処理付与手段14は、符号化された符
号化対象コードを、その実行前に復号化するための復号
処理手段を実行プログラム中に与えるための手段であ
る。復号処理手段とは、上記実施例の復号実行コードや
復号関数のことであり、符号化対象コードの実行時に符
号化コードを伸長若しくは復号化する。復号実行コード
は、符号化対象コードと同様に実行コード・セクション
内に挿入される。
【0102】再配置処理付与手段15とは、復号化され
た符号化対象コードに関するアドレス情報を再配置する
ための再配置処理手段を実行プログラム中に与えるため
の手段である。再配置処理手段とは、上記実施例のロー
ド後采配質実施コードや再配置関数のことである。再配
置処理手段は、符号化対象コードの実行時において、復
号実行コードを適用して復号化した後に、復号化された
符号化対象コードに対して適用される。
【0103】再配置生成手段16は、実行プログラム全
体に関する再配置情報を生成して、実行プログラムに与
えるためのものである。再配置情報は、再配置処理に必
要なアドレス情報等で構成される。上記実施例では、再
配置情報は、実行プログラム内の絶対アドレス情報が保
持されている位置毎に1つのエントリを設けている。各
エントリは、絶対アドレス情報を保持している位置のベ
ース・アドレスからの差分(すなわち相対アドレス)を
書き込むフィールドと、そのアドレス情報が有効か無効
かを示すフラグとを含んでいる。再配置生成手段16に
よって生成された再配置情報は、再配置情報セクション
に格納される。
【0104】[追補]以上、特定の実施例を参照しなが
ら、本発明について詳解してきた。しかしながら、本発
明の要旨を逸脱しない範囲で当業者が該実施例の修正や
代用を成し得ることは自明である。
【0105】本実施例では、汎用のコンパイラの後処理
として、再配置情報の修正と符号化対象コードの圧縮/
暗号化を行うようになっている。しかし、コンパイラに
同様の機能を組み込み、コンパイル作業と同時に上記の
実施例と同様の構成及び作用を持つプログラムを生成す
ることも可能である。この場合には、コンパイル作業で
再配置情報を作成するときに、符号化対象コードに含ま
れるか否かを判定することで最終的な再配置情報を直接
作成できるので、上記の実施例よりも更に処理効率が向
上するであろう。
【0106】要するに、例示という形態で本発明を開示
してきたのであり、限定的に解釈されるべきではない。
本発明の要旨を判断するためには、冒頭に記載した特許
請求の範囲の欄を参酌すべきである。
【0107】
【発明の効果】以上詳記したように、本発明によれば、
符号化したコード部分を含み且つ実行の必要があるまで
復号化しないように構成された実行プログラムをメモリ
・ロード時に最適に再配置処理することができる、優れ
た再配置技術を提供することができる。
【0108】また、本発明によれば、プログラムの再配
置を要するコンピューティング環境において、プログラ
ムの一部を符号化しておき、プログラムの起動後に符号
化コード部分を復号化して正常に実行することができる
プログラムを提供するができる。
【0109】また、本発明によれば、符号化したコード
部分を含み且つ実行の必要があるまで復号化しないよう
に構成されたプログラムを、汎用コンパイラを用いても
生成することができる技術を提供することができる。
【図面の簡単な説明】
【図1】 実行ファイルのメモリ・イメージを概念的に
示した図である。
【図2】 実行プログラムを作成するためのフローチャ
ートである。
【図3】 第1の実施例における符号化と再配置情報変
更のための処理手順を図解したフローチャートである。
【図4】 第1の実施例における実行ファイルの構成を
模式的に示した図である。
【図5】 第2の実施例における符号化と再配置情報変
更のための所に手順を図解したフローチャートである。
【図6】 第2の実施例における実行ファイルの構成を
模式的に示した図である。
【図7】 本発明を実現可能な実行プログラム生成装置
の概念図である。
【符号の説明】
11…コンパイラ 12…符号化対象コード検出手段 13…符号化処理手段 14…復号処理付与手段 15…再配置処理付与手段 16…再配置生成手段 100…実行プログラム生成装置
【手続補正書】
【提出日】平成11年11月12日(1999.11.
12)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0018
【補正方法】変更
【補正内容】
【0018】また、本発明の第2の側面は、再配置を可
能ならしめるための再配置情報を格納した再配置情報セ
クションを含む複数のセクションからなり、プログラム
・コードの一部に符号化を予定された符号化対象コード
を含むタイプの実行プログラムを生成する方法であっ
て、(a)再配置情報のうち符号化対象コードに関する
再配置情報エントリを、メモリにロードされる他のセク
ションに複写するステップと、(b)メモリ・ロード時
における符号化対象コードの再配置処理を禁止すべく、
符号化対象コードに関する再配置情報エントリを再配置
情報セクションから削除するステップと、(c)符号化
対象コードを符号化するステップと、(d)符号化され
た符号化対象コードを復号化するための復号化処理部を
実行プログラムに付与するステップと、(e)復号化さ
れた符号化対象コードに対して再配置処理を行う再配置
処理部を実行プログラムに付与するステップと、を含む
ことを特徴とする実行プログラムの生成方法である。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0025
【補正方法】変更
【補正内容】
【0025】また、本発明の第5の側面は、再配置を可
能ならしめるための再配置情報を持ち、プログラム・コ
ードの一部に符号化された符号化対象コードを含むタイ
プの実行プログラムを実行する方法であって、(a)実
行プログラムをメモリ空間上に割り付けるステップと、
(b)実行プログラムのメモリ・ロード時において、符
号化対象コード以外について再配置を行うステップと、
(c)メモリ・ロードされた実行プログラムを実行する
ステップと、(d)符号化対象コードを実行するときに
は、その前に、符号化された符号化対象コードを復号化
するステップと、(e)復号化された符号化対象コード
に対して再配置処理を行うステップと、(f)復号化さ
れた符号化対象コードを実行するステップと、を含むこ
とを特徴とする実行プログラムの実行方法である。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0029
【補正方法】変更
【補正内容】
【0029】また、本発明の第7の側面は、コンピュー
タ・システム上で実行可能な実行プログラムを格納した
コンピュータ可読記憶媒体であって、前記実行プログラ
ムは、(a)一部に符号化された符号化対象コードを含
む実行コードと、(b)メモリ・ロード時における符号
化対象コードに対する再配置処理を抑制可能な形式で記
述された再配置情報と、(c)符号化された符号化対象
コードを復号化する復号処理機能をコンピュータ上で実
現するためのプログラム部分と、(d)復号化された符
号化対象コードに対して再配置処理を行う再配置処理機
能をコンピュータ上で実現するためのプログラム部分
と、を含むことを特徴とするコンピュータ可読記憶媒体
である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0032
【補正方法】変更
【補正内容】
【0032】実行プログラムは、符号化対象コードを実
行する直前に、符号化対象コードを復号化するととも
に、符号化対象コードについての再配置を実施するよう
にデザインされている。これは、符号化対象コードを復
号化するための「復号化関数」と、符号化対象コードに
関する再配置情報を参照してその再配置を実施する「ロ
ード後再配置実施関数」とを、実行プログラム内に装備
することによって実現される。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0053
【補正方法】変更
【補正内容】
【0053】まず、実行コード・セクションに置かれる
コードの作成すなわちコーディングを行う(ステップ1
00)。実行コード中には、符号化対象コードと、符号
化された符号化対象コードを復元するための復号実行コ
ードと、符号化対象コードの再配置を実行するためのロ
ード後再配置実行コードが含まれる。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0102
【補正方法】変更
【補正内容】
【0102】再配置処理付与手段15とは、復号化され
た符号化対象コードに関するアドレス情報を再配置する
ための再配置処理手段を実行プログラム中に与えるため
の手段である。再配置処理手段とは、上記実施例のロー
ド後再配置実施コードや再配置関数のことである。再配
置処理手段は、符号化対象コードの実行時において、復
号実行コードを適用して復号化した後に、復号化された
符号化対象コードに対して適用される。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 石間 宏之 神奈川県足柄上郡中井町境430 グリーン テクなかい 富士ゼロックス株式会社内 Fターム(参考) 5B076 BA02 BA05 BB14 FA01

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】再配置を可能ならしめるための再配置情報
    を持ち、プログラム・コードの一部に符号化を予定され
    た符号化対象コードを含むタイプの実行プログラムを生
    成する方法であって、(a)メモリ・ロード時における
    符号化対象コードの再配置処理を禁止すべく、符号化対
    象コードに関する再配置情報を無効化するステップと、
    (b)符号化対象コードを符号化するステップと、
    (c)符号化された符号化対象コードを復号化するため
    の復号化処理部を実行プログラムに付与するステップ
    と、(d)復号化された符号化対象コードに対して再配
    置処理を行う再配置処理部を実行プログラムに付与する
    ステップと、を含むことを特徴とする実行プログラムの
    生成方法。
  2. 【請求項2】再配置を可能ならしめるための再配置情報
    を格納した再配置情報セクションを含む複数のセクショ
    ンからなり、プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する方法であって、(a)再配置情報のうち符号
    化対象コードに関する再配置情報エントリを、メモリ・
    ロードにロードされる他のセクションに複写するステッ
    プと、(b)メモリ・ロード時における符号化対象コー
    ドの再配置処理を禁止すべく、符号化対象コードに関す
    る再配置情報エントリを再配置情報セクションから削除
    するステップと、(c)符号化対象コードを符号化する
    ステップと、(d)符号化された符号化対象コードを復
    号化するための復号化処理部を実行プログラムに付与す
    るステップと、(e)復号化された符号化対象コードに
    対して再配置処理を行う再配置処理部を実行プログラム
    に付与するステップと、を含むことを特徴とする実行プ
    ログラムの生成方法。
  3. 【請求項3】前記符号化は圧縮処理であり、復号化は圧
    縮されたデータの伸長処理であることを特徴とする請求
    項1又は2のいずれかに記載の実行プログラムの生成方
    法。
  4. 【請求項4】前記符号化は暗号化処理であり、復号化は
    暗号化データの復号処理であることを特徴とする請求項
    1又は2のいずれかに記載の実行プログラムの生成方
    法。
  5. 【請求項5】実行コードを集めた実行コード・セクショ
    ンと、再配置を可能ならしめるための再配置情報セクシ
    ョンとを持ち、実行コード・セクションの一部に圧縮処
    理の適用を予定された符号化対象コードを含むタイプの
    実行プログラムを生成する方法であって、(a)メモリ
    ・ロード時における符号化対象コードの再配置処理を禁
    止すべく、再配置情報セクションに格納された再配置情
    報のうち符号化対象コードに関する再配置情報エントリ
    を無効化するステップと、(b)符号化対象コードを圧
    縮するステップと、(c)符号化対象コードの圧縮によ
    り空きができた領域の分だけ、実行コード・セクション
    以降のセクションの領域を前につめるステップと、
    (d)圧縮された符号化対象コードを伸長処理するため
    の復号化処理部を実行コード・セクションに挿入するス
    テップと、(e)復号化された符号化対象コードに対し
    て再配置処理を行う再配置処理部を実行コード・セクシ
    ョンに挿入するステップと、を含むことを特徴とする実
    行プログラムの生成方法。
  6. 【請求項6】前記復号化処理部と前記再配置処理部は、
    実行プログラムをメモリにロードした後符号化対象コー
    ドを最初に実行するときに、符号化対象コードに適用さ
    れることを特徴とする請求項1、2又は5のいずれかに
    記載の実行プログラムの生成方法。
  7. 【請求項7】再配置を可能ならしめるための再配置情報
    を格納した再配置情報セクションを含む複数のセクショ
    ンからなり、プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する装置であって、(a)コーディングされた高
    級言語形式のソース・プログラム・コードをオブジェク
    ト・プログラム・コードに変換するためのコンパイラ
    と、(b)コーディングされたプログラム・コード中
    で、符号化すべき範囲を特定するための符号化対象コー
    ド検出手段と、(c)前記符号化対象コード検出手段に
    よって特定された符号対象範囲のコードを符号化するた
    めの符号化処理手段と、(d)符号化された符号化対象
    コードを復号化するための復号処理手段を実行プログラ
    ム中に与えるための復号処理付与手段と、(e)復号化
    された符号化対象コードに関するアドレス情報を再配置
    するための再配置処理手段を実行プログラム中に与える
    ための再配置処理付与手段と、(f)実行プログラム全
    体に関する再配置情報を生成して、実行プログラムに与
    えるための再配置生成手段と、を含むことを特徴とする
    実行プログラムの生成装置。
  8. 【請求項8】前記符号化は圧縮処理であり、復号化は圧
    縮されたデータの伸長処理であることを特徴とする請求
    項7に記載の実行プログラムの生成装置。
  9. 【請求項9】前記符号化は暗号化処理であり、復号化は
    暗号化データの復号処理であることを特徴とする請求項
    7に記載の実行プログラムの生成装置。
  10. 【請求項10】前記復号化処理手段と前記再配置処理手
    段は、実行プログラムをメモリにロードした後符号化対
    象コードを最初に実行するときに、符号化対象コードに
    適用されることを特徴とする請求項7に記載の実行プロ
    グラムの生成装置。
  11. 【請求項11】再配置を可能ならしめるための再配置情
    報を持ち、プログラム・コードの一部に符号化された符
    号化対象コードを含むタイプの実行プログラムを実行す
    る方法であって、(a)実行プログラムをメモリ空間上
    に割り付けるステップと、(b)実行プログラムのメモ
    リ・ロード時において、符号化対象コード以外について
    再配置を行うステップと、(c)メモリ・ロードされた
    実行プログラムを実行するステップと、(d)符号化対
    象コードを実行するときには、その前に、符号化された
    符号化対象コードを復号化するステップと、(e)復号
    化された符号化対象コードに対して再配置処理を行うス
    テップと、(f)復号化された符号化対象コードを実行
    するステップと、を含むことを特徴とする実行プログラ
    ムの実行方法。
  12. 【請求項12】前記符号化は圧縮処理であり、復号化は
    圧縮されたデータの伸長処理であることを特徴とする請
    求項11に記載の実行プログラムの実行方法。
  13. 【請求項13】前記符号化は暗号化処理であり、復号化
    は暗号化データの復号処理であることを特徴とする請求
    項11に記載の実行プログラムの実行方法。
  14. 【請求項14】実行プログラムは、符号化対象コードが
    メモリ・ロード後既に呼び出されたことがあるか否かを
    示す復号実施フラグを含み、 前記復号実施フラグの設定に応じて前記(d)復号化す
    るステップと前記(e)再配置処理するステップを実行
    することを特徴とする請求項11に記載の実行プログラ
    ムの実行方法。
  15. 【請求項15】コンピュータ・システム上で実行可能な
    実行プログラムであって、(a)一部に符号化された符
    号化対象コードを含む実行コードと、(b)メモリ・ロ
    ード時における符号化対象コードに対する再配置処理を
    抑制可能な形式で記述された再配置情報と、(c)符号
    化された符号化対象コードを復号化するための復号処理
    部と、(d)復号化された符号化対象コードに対して再
    配置処理を行う再配置処理部と、を含むことを特徴とす
    る実行プログラム。
  16. 【請求項16】コンピュータ・システム上で実行可能な
    実行プログラムを有形的に格納したコンピュータ可読記
    憶媒体であって、前記実行プログラムは、(a)一部に
    符号化された符号化対象コードを含む実行コードと、
    (b)メモリ・ロード時における符号化対象コードに対
    する再配置処理を抑制可能な形式で記述された再配置情
    報と、(c)符号化された符号化対象コードを復号化す
    るための復号処理部と、(d)復号化された符号化対象
    コードに対して再配置処理を行う再配置処理部と、を含
    むことを特徴とするコンピュータ可読記憶媒体。
JP10248128A 1998-09-02 1998-09-02 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置 Expired - Fee Related JP3033562B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10248128A JP3033562B2 (ja) 1998-09-02 1998-09-02 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10248128A JP3033562B2 (ja) 1998-09-02 1998-09-02 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置

Publications (2)

Publication Number Publication Date
JP2000076075A true JP2000076075A (ja) 2000-03-14
JP3033562B2 JP3033562B2 (ja) 2000-04-17

Family

ID=17173655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10248128A Expired - Fee Related JP3033562B2 (ja) 1998-09-02 1998-09-02 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置

Country Status (1)

Country Link
JP (1) JP3033562B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558967B2 (en) 2001-09-13 2009-07-07 Actel Corporation Encryption for a stream file in an FPGA integrated circuit
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置
US7870396B2 (en) 2005-11-24 2011-01-11 Fuji Xerox Co., Ltd. Storage medium, method, and apparatus for creating a protected executable program

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4048382B1 (ja) 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
CN105074712B (zh) 2013-03-19 2018-05-08 株式会社东芝 代码处理装置和程序
KR101556908B1 (ko) * 2013-11-14 2015-10-02 (주)잉카엔트웍스 프로그램 보호 장치
WO2022074837A1 (ja) * 2020-10-09 2022-04-14 日本電信電話株式会社 プログラム保護装置、プログラム保護方法及びプログラム保護プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558967B2 (en) 2001-09-13 2009-07-07 Actel Corporation Encryption for a stream file in an FPGA integrated circuit
US7870396B2 (en) 2005-11-24 2011-01-11 Fuji Xerox Co., Ltd. Storage medium, method, and apparatus for creating a protected executable program
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置

Also Published As

Publication number Publication date
JP3033562B2 (ja) 2000-04-17

Similar Documents

Publication Publication Date Title
JP4042280B2 (ja) 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US7694151B1 (en) Architecture, system, and method for operating on encrypted and/or hidden information
EP1943607B1 (en) Program executable image encryption
Debray et al. Profile-guided code compression
KR102617102B1 (ko) 서명 바운디드 포인터를 생성하기 위한 장치 및 방법
KR101288700B1 (ko) 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
KR102649092B1 (ko) 바운디드 포인터의 사용을 제어하기 위한 장치 및 방법
CN109598107B (zh) 一种基于应用安装包文件的代码转换方法及装置
US20080270806A1 (en) Execution Device
US20140020112A1 (en) Method of Securing Memory Against Malicious Attack
JP4892167B2 (ja) ディジタル・データ保護構成
US20070005625A1 (en) Storage architecture for embedded systems
JP2005135265A (ja) 情報処理装置
US6928456B2 (en) Method of tracking objects for application modifications
JPH1185526A (ja) プログラムロード方法
JP3033562B2 (ja) 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置
JP2014516438A (ja) ウェアレベリングを有するメモリ装置の暗号化
Lattner et al. Transparent pointer compression for linked data structures
US20130275688A1 (en) Data processing device and method
JP5387089B2 (ja) プログラム及びプログラム実行装置
JP5374751B2 (ja) メモリ管理方法
JP2007122391A (ja) 暗号化プログラムを復号して実行する情報処理装置及びメモリ管理方法
CN115906014A (zh) 一种数据处理方法及相关装置
JP4504756B2 (ja) Java(登録商標名)実行環境におけるメモリ管理方法及びメモリ管理プログラム
JP4751835B2 (ja) 実行可能コードの復号化に用いる方法およびこれに関連する装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090218

Year of fee payment: 9

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S802 Written request for registration of partial abandonment of right

Free format text: JAPANESE INTERMEDIATE CODE: R311802

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090218

Year of fee payment: 9

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100218

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110218

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120218

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130218

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130218

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 14

LAPS Cancellation because of no payment of annual fees