JP2001175466A - 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体 - Google Patents

実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体

Info

Publication number
JP2001175466A
JP2001175466A JP36204499A JP36204499A JP2001175466A JP 2001175466 A JP2001175466 A JP 2001175466A JP 36204499 A JP36204499 A JP 36204499A JP 36204499 A JP36204499 A JP 36204499A JP 2001175466 A JP2001175466 A JP 2001175466A
Authority
JP
Japan
Prior art keywords
code
program
encoded
execution
decoding
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
JP36204499A
Other languages
English (en)
Other versions
JP4042280B2 (ja
Inventor
Kazuo Saito
和雄 齊藤
Mitsuhisa Kamei
光久 亀井
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 JP36204499A priority Critical patent/JP4042280B2/ja
Priority to US09/655,064 priority patent/US6715142B1/en
Publication of JP2001175466A publication Critical patent/JP2001175466A/ja
Application granted granted Critical
Publication of JP4042280B2 publication Critical patent/JP4042280B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 符号化したコード部分を含む実行プログラム
をプログラム・コード領域の書き換えを禁止したオペレ
ーティング・システム上で実行する。 【解決手段】 実行プログラムは符号化対象コードと符
号化されていないコードとで構成される。符号化対象コ
ード実行直前に、符号化対象コードの復号化と符号化対
象コードについての再配置を実施する。実行プログラム
起動直後は、符号化対象コードに対する復号処理は行わ
ない。プログラムの実行が進み、符号化対象コードを実
行すべき段階で、まず符号化対象コードを復号するメモ
リ領域を確保し、次いで、該領域内で符号化対象コード
を復号化することで再配置を行う。

Description

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

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する方法であって、(a)符号化対象コードを符
    号化するステップと、(b)符号化された符号化対象コ
    ードを復号化するためのメモリ領域を確保し、該確保し
    た領域に符号化された符号化対象コードを復号化する復
    号化実施コード部分を実行プログラムに付与するステッ
    プ、(c)復号化された符号化対象コードに対して再配
    置処理を行う再配置実施コード部分を実行プログラムに
    付与するステップと、を具備することを特徴とする実行
    プログラムの生成方法。
  2. 【請求項2】プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する方法であって、(a)符号化対象コードの再
    配置情報を生成するステップと、(b)符号化対象コー
    ドを符号化するステップと、(c)符号化された符号化
    対象コードを復号化するためのメモリ領域を確保し、該
    確保した領域に符号化された符号化対象コードを復号化
    する復号実施コード部分を実行プログラムに付与するス
    テップ、(d)復号化された符号化対象コードに対して
    前記生成された再配置情報を用いて再配置処理を行う再
    配置実施コード部分を実行プログラムに付与するステッ
    プと、を具備することを特徴とする実行プログラムの生
    成方法。
  3. 【請求項3】前記符号化は圧縮処理であり、復号化は圧
    縮されたデータの伸長処理であることを特徴とする請求
    項1又は2のいずれかに記載の実行プログラムの生成方
    法。
  4. 【請求項4】前記符号化は暗号化処理であり、復号化は
    暗号化データの復号処理であることを特徴とする請求項
    1又は2のいずれかに記載の実行プログラムの生成方
    法。
  5. 【請求項5】実行コード・セクションの一部に圧縮処理
    の適用を予定された符号化対象コードを含むタイプの実
    行プログラムを生成する方法であって、(a)符号化対
    象コードを圧縮するステップと、(b)符号化対象コー
    ドの圧縮により空きができた領域の分だけ、実行コード
    ・セクション以降のセクションの領域を前につめるステ
    ップと、(c)圧縮された符号化対象コードを伸張する
    ためのメモリ領域を確保し、該確保した領域に圧縮され
    た符号化対象コードを伸長処理する復号実施コード部分
    を実行プログラムに付与するステップと、(d)復号化
    された符号化対象コードに対して再配置処理を行う再配
    置実施コード部分を実行コード・セクションに挿入する
    ステップと、を具備することを特徴とする実行プログラ
    ムの生成方法。
  6. 【請求項6】実行コード・セクションの一部に圧縮処理
    の適用を予定された符号化対象コードを含むタイプの実
    行プログラムを生成する方法であって、(a)符号化対
    象コードの再配置情報を生成するステップと、(b)符
    号化対象コードを圧縮するステップと、(c)符号化対
    象コードの圧縮により空きができた領域の分だけ、実行
    コード・セクション以降のセクションの領域を前につめ
    るステップと、(d)圧縮された符号化対象コードを伸
    張するためのメモリ領域を確保し、該確保した領域に圧
    縮された符号化対象コードを伸長処理する復号実施コー
    ド部分を実行プログラムに付与するステップと、(e)
    復号化された符号化対象コードに対して前記生成された
    再配置情報を用いて再配置処理を行う再配置実施コード
    部分を実行コード・セクションに挿入するステップと、
    を含むことを特徴とする実行プログラムの生成方法。
  7. 【請求項7】前記復号実施コード部分と前記再配置実施
    コード部分は、実行プログラムをメモリにロードした後
    符号化対象コードを最初に実行するときに、符号化対象
    コードに適用されることを特徴とする請求項1、2、
    5、又は6のいずれかに記載の実行プログラムの生成方
    法。
  8. 【請求項8】プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する装置であって、(a)コーディングされた高
    級言語形式のソース・プログラム・コードをオブジェク
    ト・プログラム・コードに変換するためのコンパイラ
    と、(b)コーディングされたプログラム・コード中
    で、符号化すべき範囲を特定するための符号化対象コー
    ド検出手段と、(c)前記符号化対象コード検出手段に
    よって特定された符号化対象範囲のコードを符号化する
    ための符号化処理手段と、(d)符号化された符号化対
    象コードを復号化するためのメモリ領域を確保し、該確
    保したメモリ領域に符号化された符号化対象コードを復
    号化する復号処理手段を実行プログラム中に与えるため
    の復号処理付与手段と、(e)復号化された符号化対象
    コードに関するアドレス情報を再配置するための再配置
    処理手段を実行プログラム中に与えるための再配置処理
    付与手段と、を具備することを特徴とする実行プログラ
    ムの生成装置。
  9. 【請求項9】プログラム・コードの一部に符号化を予定
    された符号化対象コードを含むタイプの実行プログラム
    を生成する装置であって、(a)コーディングされた高
    級言語形式のソース・プログラム・コードをオブジェク
    ト・プログラム・コードに変換するためのコンパイラ
    と、(b)コーディングされたプログラム・コード中
    で、符号化すべき範囲を特定するための符号化対象コー
    ド検出手段と、(c)前記符号化対象コード検出手段に
    よって特定された符号化対象範囲のコードに関するアド
    レス情報を再配置するために必要な再配置情報を生成す
    る再配置情報生成手段と、(d)前記符号化対象コード
    検出手段によって特定された符号化対象範囲のコードを
    符号化するための符号化処理手段と、(e)符号化され
    た符号化対象コードを復号化するためのメモリ領域を確
    保し、該確保したメモリ領域に符号化された符号化対象
    コードを復号化する復号処理手段を実行プログラム中に
    与えるための復号処理付与手段と、(f)復号化された
    符号化対象コードに関するアドレス情報を前記生成され
    た再配置情報に基づいて再配置するための再配置処理手
    段を実行プログラム中に与えるための再配置処理付与手
    段と、を具備することを特徴とする実行プログラムの生
    成装置。
  10. 【請求項10】前記符号化は圧縮処理であり、復号化は
    圧縮されたデータの伸長処理であることを特徴とする請
    求項8又は9のいずれかに記載の実行プログラムの生成
    装置。
  11. 【請求項11】前記符号化は暗号化処理であり、復号化
    は暗号化データの復号処理であることを特徴とする請求
    項8又は9のいずれかに記載の実行プログラムの生成装
    置。
  12. 【請求項12】前記復号化処理手段と前記再配置処理手
    段は、実行プログラムをメモリにロードした後符号化対
    象コードを最初に実行するときに、符号化対象コードに
    適用されることを特徴とする請求項8又は9のいずれか
    に記載の実行プログラムの生成装置。
  13. 【請求項13】プログラム・コードの一部に符号化され
    た符号化対象コードを含むタイプの実行プログラムを実
    行する方法であって、(a)実行プログラムをメモリ空
    間上に割り付けるステップと、(b)メモリ・ロードさ
    れた実行プログラムを実行するステップと、(c)符号
    化対象コードを実行する前に、符号化された符号化対象
    コードを符号化するメモリ空間を確保し、該確保したメ
    モリ空間に符号化された符号化対象コードを復号化する
    ステップと、(d)復号化された符号化対象コードに対
    して再配置処理を行うステップと、(e)復号化された
    符号化対象コードを実行するステップと、を具備するこ
    とを特徴とする実行プログラムの実行方法。
  14. 【請求項14】復号化された符号化対象コードを実行す
    る前記ステップ(e)の終了後に、さらに、(f)復号
    化された符号化対象コードを含む予め確保されたメモリ
    空間を破棄もしくは解放するステップを具備することを
    特徴とする請求項13に記載の実行プログラムの実行方
    法。
  15. 【請求項15】前記符号化は圧縮処理であり、復号化は
    圧縮されたデータの伸長処理であることを特徴とする請
    求項13又は14のいずれかに記載の実行プログラムの
    実行方法。
  16. 【請求項16】前記符号化は暗号化処理であり、復号化
    は暗号化データの復号処理であることを特徴とする請求
    項13又は14のいずれかに記載の実行プログラムの実
    行方法。
  17. 【請求項17】実行プログラムは、符号化対象コードを
    メモリ・ロードした後既に呼び出されたことがあるか否
    かを示す復号実施フラグを含み、前記復号実施フラグの
    設定に応じて前記(c)復号化するステップと前記
    (d)再配置処理するステップを実行することを特徴と
    する請求項13又は14のいずれかに記載の実行プログ
    ラムの実行方法。
  18. 【請求項18】コンピュータ・システム上で実行可能な
    実行プログラムをコンピュータ可読形式で格納したコン
    ピュータ可読プログラム記憶媒体であって、前記実行プ
    ログラムは、(a)一部に符号化された符号化対象コー
    ドを含む実行コードと、(b)符号化された符号化対象
    コードを復号化するためメモリ領域を確保し、該確保し
    たメモリ領域に符号化された符号化対象コードを復号化
    する復号処理を行うよう記述された、前記コンピュータ
    ・システム上で実行可能なプログラム部分と、(c)復
    号化された符号化対象コードに対して再配置処理を行う
    再配置処理を行うよう記述された、前記コンピュータ・
    システム上で実行可能なプログラム部分と、を具備する
    ことを特徴とするコンピュータ可読プログラム記憶媒
    体。
  19. 【請求項19】コンピュータ・システム上で実行可能な
    実行プログラムをコンピュータ可読形式で格納したコン
    ピュータ可読プログラム記憶媒体であって、前記実行プ
    ログラムは、(a)一部に符号化された符号化対象コー
    ドを含む実行コードと、(b)符号化対象コードに対す
    る再配置情報と、(c)符号化された符号化対象コード
    を復号化するためメモリ領域を確保し、該確保したメモ
    リ領域に符号化された符号化対象コードを復号化する復
    号処理を行うよう記述された、前記コンピュータ・シス
    テム上で実行可能なプログラム部分と、(d)復号化さ
    れた符号化対象コードに対して前記再配置情報に基づい
    て再配置処理を行うよう記述された、前記コンピュータ
    ・システム上で実行可能なプログラム部分と、を具備す
    ることを特徴とするコンピュータ可読プログラム記憶媒
    体。
JP36204499A 1999-12-21 1999-12-21 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体 Expired - Fee Related JP4042280B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP36204499A JP4042280B2 (ja) 1999-12-21 1999-12-21 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US09/655,064 US6715142B1 (en) 1999-12-21 2000-09-05 Execution program generation method, execution program generation apparatus, execution program execution method, and computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP36204499A JP4042280B2 (ja) 1999-12-21 1999-12-21 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体

Publications (2)

Publication Number Publication Date
JP2001175466A true JP2001175466A (ja) 2001-06-29
JP4042280B2 JP4042280B2 (ja) 2008-02-06

Family

ID=18475727

Family Applications (1)

Application Number Title Priority Date Filing Date
JP36204499A Expired - Fee Related JP4042280B2 (ja) 1999-12-21 1999-12-21 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体

Country Status (2)

Country Link
US (1) US6715142B1 (ja)
JP (1) JP4042280B2 (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005071055A (ja) * 2003-08-22 2005-03-17 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP2005165919A (ja) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd プログラム実行方法、プログラム作成方法、情報処理装置及びプログラム
WO2005098570A1 (ja) * 2004-04-05 2005-10-20 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2005332221A (ja) * 2004-05-20 2005-12-02 Renesas Technology Corp 記憶装置
JP2007535241A (ja) * 2004-04-26 2007-11-29 インテル・コーポレーション 条件付で実行可能モジュールを縮小するシステムおよび方法
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2010176697A (ja) * 2010-03-29 2010-08-12 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP2010217975A (ja) * 2009-03-13 2010-09-30 Nec System Technologies Ltd 情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置
JP2011170847A (ja) * 2010-02-18 2011-09-01 Thomson Licensing ソフトウェアのインテグリティを実行中に確かめる方法及び装置、並びにこのようなソフトウェアを生成する装置
WO2014147748A1 (ja) * 2013-03-19 2014-09-25 株式会社東芝 コード処理装置およびプログラム
JP2016028334A (ja) * 2015-09-25 2016-02-25 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム
JP2022535320A (ja) * 2019-03-28 2022-08-08 ライン プラス コーポレーション ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0029115D0 (en) * 2000-11-29 2001-01-10 Sgs Thomson Microelectronics Assembling an object code module
US20020138748A1 (en) * 2001-03-21 2002-09-26 Hung Andy C. Code checksums for relocatable code
JP2007524875A (ja) * 2003-01-10 2007-08-30 ネクサウェブ テクノロジーズ インコーポレイテッド ネットワーク・ベースの処理のためのシステムおよび方法
TW200428171A (en) * 2003-06-13 2004-12-16 Delta Electronics Inc Method for controlling single step of the program in programmable logic controller
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
WO2007063433A2 (en) * 2005-10-17 2007-06-07 Nxp B.V. Program executable image encryption
JP4770425B2 (ja) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
US8694797B2 (en) * 2006-02-14 2014-04-08 Lenovo (Sinapore) Pte Ltd Method for preventing malicious software from execution within a computer system
JP4575350B2 (ja) * 2006-02-14 2010-11-04 レノボ・シンガポール・プライベート・リミテッド コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法
US8041958B2 (en) * 2006-02-14 2011-10-18 Lenovo (Singapore) Pte. Ltd. Method for preventing malicious software from execution within a computer system
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
CN101290571B (zh) * 2007-04-16 2011-01-12 阮建辉 一种生成可被动态装载执行的文件的方法
JP2012208655A (ja) * 2011-03-29 2012-10-25 Kddi Corp 自己書き換え処理装置、自己書き換え処理方法、およびプログラム
CN105677415B (zh) * 2016-01-06 2020-07-17 网易(杭州)网络有限公司 热更新方法及装置
US10452414B2 (en) * 2016-06-30 2019-10-22 Microsoft Technology Licensing, Llc Assistive technology notifications for relevant metadata changes in a document

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4281215A (en) * 1978-05-03 1981-07-28 Atalla Technovations Method and apparatus for securing data transmissions
US5867603A (en) * 1995-07-10 1999-02-02 Iterated Systems, Inc. Method for transmitting fractal transform data to support different compressor/decompressor designs
US6009192A (en) * 1996-12-19 1999-12-28 Xerox Corporation Color correction of a compressed image
WO1998036351A1 (fr) * 1997-02-17 1998-08-20 Hitachi, Ltd. Processeur de donnees
JPH1185526A (ja) * 1997-09-12 1999-03-30 Hitachi Ltd プログラムロード方法
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
EP0964370B1 (en) * 1998-06-05 2003-08-20 International Business Machines Corporation Method and device for loading instruction codes to a memory and linking said instruction codes
US6473840B2 (en) * 1998-06-19 2002-10-29 International Business Machines Corporation Data processing system having a network and method for managing memory by storing discardable pages in a local paging device
US6199203B1 (en) * 1998-07-21 2001-03-06 Hewlett-Packard Company Memory management techniques for on-line replaceable software
US6295647B1 (en) * 1998-10-08 2001-09-25 Philips Electronics North America Corp. Context life time management of a user interface in a digital TV broadcast
US6446258B1 (en) * 1998-11-03 2002-09-03 Intle Corporation Interactive instruction scheduling and block ordering

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4502359B2 (ja) * 2003-08-22 2010-07-14 株式会社ハイパーテック 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP2005071055A (ja) * 2003-08-22 2005-03-17 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
JP2005165919A (ja) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd プログラム実行方法、プログラム作成方法、情報処理装置及びプログラム
JP4517636B2 (ja) * 2003-12-05 2010-08-04 富士ゼロックス株式会社 実行プログラム作成方法、関数プログラム、及び関数プログラム実行方法
WO2005098570A1 (ja) * 2004-04-05 2005-10-20 Matsushita Electric Industrial Co., Ltd. 実行装置
US7853742B2 (en) 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
JP2007535241A (ja) * 2004-04-26 2007-11-29 インテル・コーポレーション 条件付で実行可能モジュールを縮小するシステムおよび方法
JP2005332221A (ja) * 2004-05-20 2005-12-02 Renesas Technology Corp 記憶装置
JP2010009323A (ja) * 2008-06-26 2010-01-14 Ntt Docomo Inc イメージ検査装置、os装置及びイメージ検査方法
JP2010217975A (ja) * 2009-03-13 2010-09-30 Nec System Technologies Ltd 情報処理装置、アプリケーションプログラム、及びアプリケーションプログラムの実行方法
JP2010231477A (ja) * 2009-03-27 2010-10-14 Fuji Xerox Co Ltd プログラム及びプログラム実行装置
JP2011170847A (ja) * 2010-02-18 2011-09-01 Thomson Licensing ソフトウェアのインテグリティを実行中に確かめる方法及び装置、並びにこのようなソフトウェアを生成する装置
JP2010176697A (ja) * 2010-03-29 2010-08-12 Hyper Tec:Kk 暗号化プログラム復号方法及び暗号化プログラム復号プログラム
WO2014147748A1 (ja) * 2013-03-19 2014-09-25 株式会社東芝 コード処理装置およびプログラム
JP5996777B2 (ja) * 2013-03-19 2016-09-21 株式会社東芝 コード処理装置およびプログラム
US10229277B2 (en) 2013-03-19 2019-03-12 Kabushiki Kaisha Toshiba Code processing apparatus and computer program product
JP2016028334A (ja) * 2015-09-25 2016-02-25 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム
JP2022535320A (ja) * 2019-03-28 2022-08-08 ライン プラス コーポレーション ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム
JP7320071B2 (ja) 2019-03-28 2023-08-02 ライン プラス コーポレーション ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム

Also Published As

Publication number Publication date
US6715142B1 (en) 2004-03-30
JP4042280B2 (ja) 2008-02-06

Similar Documents

Publication Publication Date Title
JP4042280B2 (ja) 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
KR101288700B1 (ko) 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
EP1943607B1 (en) Program executable image encryption
US6185686B1 (en) Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US20080270806A1 (en) Execution Device
US20070005625A1 (en) Storage architecture for embedded systems
US20140020112A1 (en) Method of Securing Memory Against Malicious Attack
US8839215B2 (en) String cache file for optimizing memory usage in a java virtual machine
CN109598107B (zh) 一种基于应用安装包文件的代码转换方法及装置
JP2005135265A (ja) 情報処理装置
JP2004303114A (ja) インタープリタおよびネイティブコード実行方法
JP3033562B2 (ja) 再配置可能な実行プログラムの生成方法及び実行プログラム生成装置
US20120151458A1 (en) System and method for removal of arraycopies in java by cutting the length of arrays
JP5387089B2 (ja) プログラム及びプログラム実行装置
JP2007122391A (ja) 暗号化プログラムを復号して実行する情報処理装置及びメモリ管理方法
JP2004078604A (ja) 情報処理方法とその方法を実現するプログラム及び記録媒体
JP4504756B2 (ja) Java(登録商標名)実行環境におけるメモリ管理方法及びメモリ管理プログラム
JP2006048186A (ja) 動的コンパイラの生成コードを保護する言語処理系
JP2006133889A (ja) プログラムを更新するための方法、プログラムおよび装置
Morris et al. Privacy protected ELF for private computing on public platforms
WO2011096073A1 (ja) メモリ管理方法
CN114090099A (zh) 加固elf文件的加载方法、设备、存储介质及装置
JP6103972B2 (ja) プログラム生成方法、プログラム実行方法、プログラム実行装置およびプログラム実行プログラム
CN117716357A (zh) 受保护的数据包
JP4751835B2 (ja) 実行可能コードの復号化に用いる方法およびこれに関連する装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070806

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: 20071023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071105

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: 20101122

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131122

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees