JP2004265037A - コンピュータプログラムの編集システム及びその方法 - Google Patents
コンピュータプログラムの編集システム及びその方法 Download PDFInfo
- Publication number
- JP2004265037A JP2004265037A JP2003053512A JP2003053512A JP2004265037A JP 2004265037 A JP2004265037 A JP 2004265037A JP 2003053512 A JP2003053512 A JP 2003053512A JP 2003053512 A JP2003053512 A JP 2003053512A JP 2004265037 A JP2004265037 A JP 2004265037A
- Authority
- JP
- Japan
- Prior art keywords
- editing
- computer program
- edit
- file
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】ソースファイル101から生成されたオブジェクトファイル105と、ソースファイル中の編集するべき関数の名称を編集開始位置識別語及び編集終了位置識別語に関連付けた文のリストを含む指定ファイル109とを基に、編集するべき関数のコードを編集開始位置識別語及び編集終了位置識別語で挟んだ編集前実行ファイル111を生成するリンカと、編集前実行ファイル中の編集開始位置識別語及び編集終了位置識別語で挟まれた編集するべき関数のコードを編集して、編集後実行ファイル113を生成する編集部205を備える。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、コンピュータプログラムを編集するための編集システム及びその方法に関し、特に、コンピュータプログラムの一部を無効化又は暗号化するための編集システム及びその方法に関する。
【0002】
【従来の技術】
通常、コンピュータプログラムは製品版の仕様で販売されるが、販売促進のために試用版の仕様で無料で頒布される場合がある。試用版のコンピュータプログラムは、試用期間が制限されていたり、機能が制限されていたりする。
【0003】
また、コンピュータプログラムの解析や改竄を防止するために、コンピュータプログラムを暗号化し、暗号化されたコンピュータプログラムをハードディスクドライブに記録し、実行時にコンピュータプログラムの暗号解除を行うシステムもある。
【0004】
なお、本願発明に関連する先行技術文献としては以下のものがある。
【0005】
【特許文献1】
特開2001−175466公報
【特許文献2】
特開2000−76075公報
【0006】
【発明が解決しようとする課題】
ある種の試用版のコンピュータプログラムは、製品版のコンピュータプログラムと比較し、一部の機能が制限されている。この種の試用版のコンピュータプログラムは、製品版のコンピュータプログラムを基に作成されることとなるが、製品版のソースファイルを基に試用版のソースファイルを作成することとなると、その作成の過程でソースファイルを誤って書き換えてしまったりする危険がある。また、数種類の試用版を作成する場合に、種類毎にソースファイルを作るのは煩わしい。従って、試用版の実行ファイルを生成するためにわざわざ試用版のソースファイルを作成する必要のない方法が望まれている。コンピュータプログラムのグレードを複数用意する場合も同様である。
【0007】
また、試用版のコンピュータプログラムを試用してみたユーザが製品版のコンピュータプログラムを使用したいと希望した場合、そのユーザは試用版のコンピュータプログラムとは別に新たに製品版のコンピュータプログラムを購入しなければならず、ユーザにとっては煩わしい。従って、試用版のコンピュータプログラムを使用したユーザが製品版のコンピュータプログラムを使用したいと希望した場合、そのユーザがわざわざ製品版のコンピュータプログラムを購入したくても済むような方法が望まれている。
【0008】
更に、ある種の試用版のコンピュータプログラムは、製品版のコンピュータプログラムと同一の機能を有するが、試用期間が制限されている。この種の試用版のコンピュータプログラムは、使用期間を制限するために何らかの方法で日付の管理を行っているが、その管理方法がユーザに見破られると、試用期間を過ぎても不法に使い続けられることとなり、販売者の利益が害される。従って、試用期間の管理情報が不正に改竄されることのない方法が望まれている。
【0009】
このような使用期間制限の管理方法の解析や使用期間の管理情報の改竄を防ぐためプログラムコードやデータを暗号化することは広く行われている。
【0010】
ところで、暗号化された関数(プログラミング言語でいうところの「関数」であり、一種のサブルーチンである。)を含む実行ファイルを一旦メモリにロードしてから、暗号化された関数を実行直前に暗号解除し、それから暗号解除された関数を実行するためには、暗号解除された関数をメモリに再書込みしなければならない。一方、実行ファイルの通常のロード先はメモリのコード領域であり、このコード領域は通常は書換え不能である。従って、暗号化された関数を含む実行ファイルを一旦コード領域にロードしてから、暗号化された関数を実行直前に暗号解除して、それから暗号解除された関数を実行することは通常は不可能である。
【0011】
従って、実行ファイルのうちの暗号化された関数のみを書換可能であるデータ領域にロードして、暗号化されていない関数をコード領域にロードするようにして上記の問題点を解決する方法がある。
【0012】
しかし、このような方法を採用した場合、元々実行ファイル全体がコード領域にロードされることを前提として設定された相対アドレスが、誤ったものとなってしまう。すなわち、データ領域にロードされた関数が、コード領域にあるデータ又は命令を相対アドレスで参照する命令を含んでいるとすると、この相対アドレスは誤ったものとなってしまう。
【0013】
特許文献1に記載の発明は、データ領域にロードされた暗号化されている関数に含まれている相対アドレス指定の命令の参照先がコード領域にある場合に、暗号解除後の相対アドレスが誤ったものとなってしまうという問題を解決するものであり、実行ファイル中に暗号化された関数の再配置情報を埋め込んでおいて、この再配置情報を用いて正しい相対アドレスを復元するものである。
【0014】
しかし、特許文献1には、実行ファイルの一部を関数単位で暗号化し、それを暗号解除する技術が記載されているが、コンパイル又はリンク時に暗号化対象の関数を特定する方法については記載されていない(段落[0059]参照)。特許文献2にも同様にコンパイル又はリンク時に暗号化対象の関数を特定する方法については記載されていない。(段落[0055]参照)。
【0015】
ソースコード中に暗号化対象の関数を特定するためのディレクティブを埋め込み、コンパイラがそのディレクティブを解釈して、必要な関数のみを暗号化する方法も考えられるが、このような方法を用いると、柔軟性に欠けることとなる。すなわち、例えば、仕様上の全機能を有する実行ファイルを生成するためのソースファイルに含まれている関数のうち特定の機能を実現するための関数のみ無効とすることにより、機能制限をすることとした場合、無効とする機能の数に応じて複数種類のソースファイルを作成しなければならず、管理しづらくなる。また、このような方法を用いると、ソースファイルを直接書換えることとなるので、人為的ミスが生じやすい。
【0016】
一方、実行ファイルをメモリにロードする際に、そのときのメモリの使用状況に応じて、実行ファイルのロードアドレスをダイナミックに変えるオペレーティングシステムは、実行ファイルに含まれている絶対アドレス指定を含む命令の絶対アドレスを実行ファイルのロード先のアドレスに応じてダイナミックに書き換える。
【0017】
このような絶対アドレスのダイナミックな書換えを行うためには、書換え前のディフォルトの絶対アドレスに関する情報を実行ファイルが保有していなければならない。従って、暗号化された関数に絶対アドレスに関する情報が隠されていると、オペレーティングシステムはプログラムをメモリにロードする際に絶対アドレスの書換えをすることができなくなってしまう。
【0018】
特許文献1には、プログラムをメモリにロードする際に絶対アドレスの書換えを行うことも相対アドレスの書換えを行うことも記載されておらず、関数実行直前に再配置情報を用いて相対アドレスを復元するのみが記載されている。従って、特許文献1では、絶対アドレスの扱い方が不明である。
【0019】
特許文献2には、絶対アドレスの扱い方についての発明が記載されている。この発明によれば、実行プログラムを起動して全体の再配置を行うときには、符号化対象コードに対する再配置は行わず、符号化されていないコード部分しか再配置しない。そして、プログラムの実行が進み、符号化対象コードを実行すべき段階になったところで、まず符号化対象コードの復号化を行い、次いで、再配置が必要ならば当該コード部分の再配置を行う。この発明の絶対アドレスの扱い方は、本発明によるものと異なる。また、特許文献2では、再配置前の絶対アドレス等を不正に改竄することでプログラムコードの正常動作を妨げ符号化対象コードを取得するといった攻撃の余地がある。
【0020】
そこで、本発明は、試用版の実行ファイルを生成するために、製品版のソースファイルとは別に、わざわざ試用版のソースファイルを作成する必要のないコンピュータプログラムの編集システム及びその方法を提供することを目的とする。
【0021】
また、本発明は、試用版のコンピュータプログラムを使用したユーザが製品版のコンピュータプログラムを使用したいと希望した場合、そのユーザがわざわざ製品版のコンピュータプログラムを購入したくても済むようにするコンピュータプログラムの編集システム及びその方法を提供することを目的とする。
【0022】
更に、本発明は、試用期間の管理情報が不正に改竄されることのないコンピュータプログラムの編集システム及びその方法を提供することを目的とする。
【0023】
更に、本発明は、無効化又は暗号化する関数を柔軟に特定することができるコンピュータプログラムの暗号化システム及びその方法を提供することを目的とする。
【0024】
更に、本発明は、実行ファイルが暗号化された関数を含んでいる場合であっても、オペレーティングシステムが実行ファイル中の絶対アドレスの書換えを行うことを可能としユーザーが絶対アドレス等を不正に改竄することを防止するコンピュータプログラムの暗号化システム及びその方法を提供することを目的とする。
【0025】
【課題を解決するための手段】
本発明によれば、ソースファイルから生成されたオブジェクトファイルと、前記ソースファイル中の編集するべき関数を指定する指定ファイルとを基に、前記編集するべき関数のコードを編集開始位置識別語及び編集終了位置識別語で挟んだ編集前実行ファイルを生成するリンカと、前記編集前実行ファイル中の前記編集開始位置識別語及び前記編集終了位置識別語で挟まれた前記編集するべき関数のコードを編集して、編集後実行ファイルを生成する編集部と、を有することを特徴とするコンピュータプログラムの編集システムが提供される。
【0026】
上記のコンピュータプログラムの編集システムにおいて、前記指定ファイルは、前記ソースファイル中の編集するべき関数の名称を前記編集開始位置識別語及び前記編集終了位置識別語に関連付けた文のリストを含んでいてもよい。
【0027】
上記のコンピュータプログラムの編集システムにおいて、前記編集とは、コードを無実行命令にすることであってもよい。
【0028】
上記のコンピュータプログラムの編集システムにおいて、前記編集とは、前記編集開始位置識別語の直後の部分を関数の終了コードに置換し、前記編集するべき関数のコードのその他の部分を任意のデータで上書きすることであってもよい。
【0029】
上記のコンピュータプログラムの編集システムにおいて、前記編集とは、コードを暗号化することであってもよい。
【0030】
上記のコンピュータプログラムの編集システムにおいて、前記編集部は、暗号解除コードを前記編集後実行ファイルに付加してもよい。
【0031】
上記のコンピュータプログラムの編集システムにおいて、前記編集部は、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの絶対アドレスを暗号化しなくてもよく、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの前記絶対アドレス以外の部分を暗号化してもよい。
【0032】
上記のコンピュータプログラム編集システムにおいて、前記編集開始位置識別語と前記編集終了位置識別語の間に暗号化するべき関数のコードに加え、当該関数の使用期間を限定するための情報を入れ、前記編集部は、当該関数及び前記使用期間を限定するための情報を暗号化してもよい。
【0033】
上記のコンピュータプログラムの編集システムにおいて、前記編集部は、暗号化するべきコードよりパリティ又はハッシュ値を計算し、該パリティ又はハッシュ値を前記編集後実行ファイルに付加してもよい。
【0034】
上記のコンピュータプログラムの編集システムは、暗号化されたコードを実行時に暗号解除し、暗号解除されたコードよりパリティ又はハッシュ値を計算し、該計算されたパリティ又はハッシュ値を前記編集後実行ファイルに付加されている前記パリティ又はハッシュ値と比較し、両者が不一致である場合に、前記編集後実行ファイルの実行を制限する手段を更に備えることを特徴とするコンピュータプログラムの編集システム。
【0035】
上記のコンピュータプログラムの編集システムにおいて、前記編集部は、前記指定ファイルを参照して前記編集後実行ファイルを生成してもよい。
【0036】
上記のコンピュータプログラムの編集システムにおいて、前記リンカは、前記編集開始位置識別語及び前記編集終了位置識別語を含む識別語リストから生成されたオブジェクトファイルも参照して前記編集前実行ファイルを生成してもよい。
【0037】
上記のコンピュータプログラムの編集システムにおいて、前記編集部は、前記識別語リストを参照して前記編集後実行ファイルを生成してもよい。
【0038】
本発明によれば、絶対アドレスが暗号化されず、他の部分が暗号化されている関数を含む実行プログラムが提供される。
【0039】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【0040】
[実施形態1]
図1は、実施形態1によるプログラム編集システムの構成を示すブロック図である。図1を参照すると、実施形態1によるプログラム編集システムは、コンパイラ201、リンカ203、編集部205を有する。
【0041】
コンパイラ201はソースファイル101をコンパイルしてオブジェクトファイル105を生成する。ソースファイル101は、図2(a)に示すようなものであり、例えば、6つの関数function000(), function 001,・・・,function005を含んでいる。
【0042】
また、コンパイラ201は、識別語リスト103をコンパイルしてオブジェクトファイル107を生成する。識別語ファイル103は、図2(b)に示すようなものであり、例えば、3対の識別語(funcstart000, funcend000), (funcstart001, funcend001), (funcstart002, funcend002)を含んでいる。なお、1対の識別語は、編集開始識別語及び編集終了識別語より成る。
【0043】
リンカ203は、オブジェクトファイル105とオブジェクトファイル107をリンクして編集前実行ファイル111を生成する。なお、ソースファイル101及びオブジェクトファイル105は複数あってもよい。リンカ203はリンクをする際に、指定ファイル109を読み込む。指定ファイル109は、図2(c)に示す様なものであり、編集開始識別語、無効化したい関数の名称及び編集終了識別語の組を無効化したい関数の数だけ含む。なお、識別語リスト103は、少なくとも指定ファイル109に含まれる無効化したい関数の数の識別語対を含んでいればよい。図2(c)の例では、無効化したい関数は、function002, function005の2つである。
【0044】
なお、リンカ203は、編集開始識別語及び編集終了識別語を予約語として認識しないために、識別語リスト103よりコンパイラ201により生成されるオブジェクトファイル107をリンカ203が必要とするが、リンカ203が、編集開始識別語及び編集終了識別語を編集開始位置及び編集終了位置を示す予約語として認識するならば、オブジェクトファイル107は不要であり、従って、識別語リスト103も不要である。
【0045】
図2(a)に示すソースファイル101、図2(b)に示す識別語リスト103及び図2(c)に示す指定ファイル109を基に生成された編集前実行ファイル111は、図3(a)に示すようなものとなる。図3(a)を参照すると、編集前実行ファイル111において、無効化したい関数function002の前に編集開始識別語funcstart000が置かれ、その関数funiction002の後に編集終了識別語funcend000が置かれる。同様に、無効化したい関数function005の前に編集開始識別子function002が置かれ、その関数function005の後に編集終了識別語funcend002が置かれる。
【0046】
編集部205は、編集前実行ファイル111から識別語リスト103又は指定ファイル109に含まれている編集開始識別語及び編集終了識別語を検索し、その間にあるコードを無実行命令(NOP命令)に置き換え、置き換え後のファイルを編集後実行ファイル113として出力する。なお、編集開始識別語及び編集終了識別語が特定のパターンを含むようにしておけば、編集部205は、識別語リスト103又は指定ファイル109を参照しなくても、編集開始識別語及び編集終了識別語を検索することが可能である。
【0047】
なお、編集後実行ファイル111の編集開始識別語の直後の部分に無実行命令の代わりに関数の終了コードを書き込み関数コードのその他の部分を任意のデータで上書きしてもよい。また、編集前実行ファイル111に書かれていた編集開始識別語及び編集終了識別語を他の値に書き換えても良い。更に、無効化したい関数を呼び出す命令の呼出し先を編集開始識別語の位置から編集終了識別語の位置の間のいずれかの位置として、その位置に関数の終了コードを書き込むようにしてもよい。
【0048】
このようにして得られた編集後実行ファイル113は、無効化した関数が実行できないものとなっている。
【0049】
次に、実施形態1におけるコンパイラ201、リンカ203及び編集部205が行うコンピュータプログラムの編集方法について説明する。
【0050】
この編集方法の全体を示す図4を参照すると、まず、コンパイラ201は、ソースファイル101を含む全てのソースファイルをコンパイルして、オブジェクトファイル105を含むオブジェクトファイルを生成する(ステップS301、S303)。次に、コンパイラ201は、識別語リスト103をコンパイルして、オブジェクトファイル107を生成する(ステップS305)。次に、リンカ203は、ステップS301〜S305で生成した全てのオブジェクトファイルをリンクして、編集前実行ファイル111を生成する(ステップS307)。最後に、編集部205は、編集前実行ファイル111より編集後実行ファイル113を生成する(ステップS309)。
【0051】
次に、図5を参照して、実施形態1におけるステップS307の詳細について説明する。オブジェクトファイル107を除く全てのオブジェクトファイルに含まれている全ての関数について(ステップS311)、その関数は指定ファイル109において編集開始位置識別語と編集終了識別語の間に挟まれているか否かを判断する(ステップS313)。この判断の際に、オブジェクトファイル107を参照して、編集開始位置識別語と編集終了位置識別語を認識してもよいし、予め定めた予約語として編集開始位置識別語と編集終了位置識別語を認識してもよい。ステップS313の判断結果が肯定的であれば、その関数を編集開始識別語と編集終了識別語で挟んで、これらをリンクし(ステップS315)、ステップS313の判断結果が否定的であれば、その関数を通常通りリンクする(ステップS317)。
【0052】
次に、図6を参照して、実施形態1におけるステップS309の詳細について説明する。編集前実行ファイル111の全てのコードについてステップS323〜S329を繰り返す(ステップS321)。ステップS323では、編集前実行ファイル111よりコードを読み込む。次に、ステップS323で読み込んだコードは編集開始識別語であるか否かを判断する(ステップS325)。ステップS325の判断結果が肯定的であれば、書換えフラグをセットし(ステップS327)、ステップS329に進む。ステップS325の判断結果が否定的であれば、ステップS323で読み込んだコードは編集終了識別語であるか否かを判断する(ステップS331)。ステップS331の判断結果が肯定的であれば、書換えフラグをリセットし(ステップS333)。ステップS329に進む。ステップS331の判断結果が否定的であれば、書換えフラグがセットされているか否かを判断する(ステップS335)。ステップS335の判断結果が肯定的であれば、ステップS323で読み込んだコードを無実行命令に書き換え(ステップS337)、ステップS329に進む。ステップS335の判断結果が否定的であれば、直接ステップS329に進む。ステップS329では、編集後実行ファイルに現在のコードを書き込む。
【0053】
[実施形態2]
実施形態1は、無効化したい関数のコードを無実行命令とするものである。実施形態1によれば、無効化した関数を解析されることはないが、無効化した関数を復元することができない。
【0054】
実施形態2は、無効化したい関数を暗号化して、後に暗号解除することにより無効化した関数を復元できるようにするものである。こうすることにより、例えば、販売者が暗号化により無効化した関数を含む実行ファイルを試用版として提供し、後に、暗号鍵を提供することにより、購入者が暗号解除して、その実行ファイルを正規版にアップグレードすることが可能となる。
【0055】
図7は、実施形態2によるプログラム編集システムの構成を示すブロック図である。図1と図7を比較すると明らかなように、実施形態1と実施形態2の相違点は、編集部205が編集部207に変更された点と、編集後実行ファイル113が編集後実行ファイル115に変更された点のみである。従って、コンパイラ201、リンカ203、ソースファイル101、識別語リスト103、オブジェクトファイル105、107、指定ファイル109及び編集前実行ファイル111の説明は省略する。
【0056】
編集部207は、編集前実行ファイル111から識別語リスト103又は指定ファイル109に含まれている編集開始識別語及び編集終了識別語を検索し、その間にあるコードを暗号化し、暗号化後のファイルを編集後実行ファイル115として出力する。又は、編集開始識別語及び編集終了識別語が特定のパターンを含むようにしておけば、編集部207は、識別語リスト103又は指定ファイル109を参照しなくても、編集開始識別語及び編集終了識別語を検索することが可能である。
【0057】
なお、編集開始識別語の直後の部分に関数の終了コードを書き込み、この関数の終了コードを暗号化しないようにしてもよい。
【0058】
暗号キーを用いて暗号解除をするために、編集後実行ファイル113には、暗号解除コード116を追加する。暗号解除コード116に編集開始識別語及び編集終了識別語を含ませておき、暗号化した関数の前後の編集開始識別語及び編集終了識別語をそのままとしておけば、暗号解除コード116は、パターンマッチにより、暗号解除するべき関数の位置を特定することが可能となる。また、暗号化した関数の前後の編集開始識別語及び編集終了識別語を他の値に書き換えたり暗号化した場合であっても、暗号解除コード116に暗号化した関数の位置を特定する情報を含ませておけば、暗号解除コード116は、暗号解除するべき関数の位置を特定することが可能となる。
【0059】
このようにして生成された編集後実行ファイル115の構成を図8に示す。
【0060】
暗号解除コード116を、編集後実行ファイル115から分離させてもよい。
【0061】
試用版から製品版へのアップグレードのための支払いをして暗号解除のための暗号キーを入手したユーザは、暗号解除コード116を起動し、これに暗号キーを入力する。すると、暗号解除コードは暗号化されている関数の暗号解除を行い、編集後実行ファイル115の暗号化されている関数を暗号解除された関数に書き換える。
【0062】
次に、実施形態2におけるコンパイラ201、リンカ203及び編集部207が行うコンピュータプログラムの編集方法について説明する。
【0063】
実施形態2による編集方法の全体は、実施形態1によるものと同様に、図4に示すとおりであり、ステップS307の詳細も、実施形態2によるものと同様に、図5に示すとおりであるので、これらの説明は省略する。ステップS309の詳細は、図9に示すとおりである。図6と図9を比較すると明らかなように、実施形態2は、実施形態1と比較し、コードを無実行命令に書き換えるステップS337が、コードを暗号化するステップS339に置き換わっている点及び暗号解除コードを編集後実行ファイル115に書き込むステップS341が追加されている点のみが異なる。従って、ステップS321〜S335の説明は省略する。
【0064】
[実施形態3]
実施形態2で生成した編集後実行ファイルの暗号化により無効化した関数は、初期においては実行できず、暗号解除して編集後実行ファイルを書換えた後においては実行できる。実施形態3は、編集後実行ファイルに暗号化した関数を含める点においては実施形態2と同様である。しかし、実施形態3では、編集後実行ファイルを書換えるようなことはしない。また、実施形態3では、暗号化した関数を含んだ編集後実行ファイルをメモリにロードした後に、暗号化した関数を実行する直前に暗号解除して実行するようにする。但し、暗号化した関数内又はその隣に試用期間に関する暗号化情報を埋め込んでおく。暗号解除してから実行する前に試用期間に関する情報を参照して、試用期間が経過していなければ実行をして、試用期間が経過していれば実行を中止する。実施形態3は、実施形態2とは逆であり、試用期間に仕様上の全ての機能を使えるようにして、試用期間が経過したならば一部の機能を使えなくする。こうすることにより、試用版で全ての機能を試用してみたユーザが試用期間経過後に製品版のコンピュータプログラムを購入することを促進する。実施形態3では、暗号化した関数内又はその隣に試用期間に関する暗号化情報を埋め込むので、試用期間に関する情報が不正に解析されたり、改竄されたりすることを防止でき、従って、本来試用期間のみに試用できることとしていた機能が試用期間が経過しても不正に使われるという事態を防止することができる。
【0065】
なお、実施形態3では、実行ファイルがコード領域にロードされるものとするが、コード領域であっても再書込みを可能とする命令を用いたり、コード領域のうちの実行ファイルをロードした領域の属性を書込み許可とすることにより、コード領域にロードされた実行ファイルは再書込み可能となり、従って、暗号解除された関数を再書込みすることが可能となる。
【0066】
前述したように、実行ファイルをメモリにロードする際に、実行ファイル中の絶対アドレス指定の命令に含まれている絶対アドレスを、その命令にオペランドとして含まれているディフォルトの絶対アドレス及び実行ファイルをロードするアドレスを基に、ダイナミックに書換えるオペレーティングシステムがある。実施形態2では、暗号化されている関数を実行することがないので、暗号化されている関数に絶対アドレス指定の命令が含まれていても問題は生じない。ところが、このようなオペレーティングシステムを用いた場合において、暗号化された関数を暗号化されたままメモリにロードし、実行直前において暗号解除することとなると、暗号化された関数に含まれている絶対アドレス指定の命令の絶対アドレスを実行ファイルがロードされたアドレスに応じてダイナミックに書換えることが不可能となってしまう。そこで、実施形態3においては、暗号化しようとする関数中の絶対アドレス指定命令中の絶対アドレスを暗号化せず、残りの部分のみを暗号化する。実行ファイル中の絶対アドレスが記述されている部分は実行ファイルの特定の場所に記述されているので、オペレーティングシステムは、実行ファイルをメモリにロードする際に、その特定の場所を参照して、ディフォルトの絶対アドレスが記述されている部分を特定し、ディフォルトの絶対アドレスを、ディフォルトの絶対アドレスと実行ファイルをロードしようとするアドレスを基に算出した絶対アドレスに書換える。
【0067】
図10は、実施形態3によるプログラム編集システムの構成を示すブロック図である。図1と図10を比較すると明らかなように、実施形態1と実施形態3の相違点は、リンカ203がリンカ209に変更された点と、編集部205が編集部211に変更された点と、指定ファイル109が指定ファイル117に変更された点と、編集前実行ファイル111が編集前実行ファイル119に変更された点と、編集後実行ファイル113が編集後実行ファイル121に変更された点のみである。従って、コンパイラ201、ソースファイル101、識別語リスト103、オブジェクトファイル105、107の説明は省略する。
【0068】
指定ファイル117は、図11に示すようなものである。編集開始識別語と編集終了識別語の間には、無効化したい関数の名称に加え、その関数を無効化したい日付又は実行ファイルをコンピュータにインストールしてからその関数を無効化するまでの日数が記述されている。図11の例では、編集開始識別語funcstart000と編集終了識別語funcend000の間には、無効化したい関数の名称function002と関数function002を無効化したい日付2003/03/31が記述され、編集開始識別語function002と編集終了識別語funcend002の間には、無効化したい関数の名称function005と実行ファイルをコンピュータにインストールしてからその関数function005を無効化するまでの日数60daysが記述されている。
【0069】
リンカ209は、オブジェクトファイル105、107及び指定ファイル117を基に編集前実行ファイル119を生成する。例えば、図2(a)に示すソースファイル101から生成したオブジェクトファイル105、図2(b)に示す識別語リスト103から生成したオブジェクトファイル107及び図11に示す指定ファイル117を基にリンカ209が生成した編集前実行ファイル119は、図12(a)に示す様なものとなる。
【0070】
図12を参照すると、編集前実行ファイル119は、関数function002のコード中に含まれる絶対アドレスの位置及び関数function005のコード中に含まれる絶対アドレスの位置を記述した絶対アドレスリスト123を有している。また、編集開始識別語funcstart000と編集終了識別語funcend000の間には、関数function002のコード及び関数function002を無効化したい日付2003/03/31が挟まれている。更に、編集開始識別語funcstart002と編集終了識別語funcend002の間には、関数function005のコードと実行ファイルをコンピュータにインストールしてからその関数function005を無効化するまでの日付60daysが挟まれている。
【0071】
編集部211は、編集前実行ファイル119の編集開始識別語と編集終了識別語の間に挟まれている関数及び日付又は日数を暗号化し、更に、暗号解除コード116を付加して、編集後実行ファイル121を生成する。但し、編集部211は、絶対アドレスリスト123を参照して、編集開始識別語と編集終了識別語の間に挟まれている関数に含まれている絶対アドレスを暗号化しない。このようにして得られた編集後実行ファイル121中の暗号化されたfunction002(符号125)のコードの模式図を図13に示す。斜線で示す部分は暗号化されており、白抜きの部分は絶対アドレスであり暗号化されていない。
【0072】
編集部211は、図14(a)に示すように暗号化する部分のパリティ126を編集後実行ファイル121に付加しても良い。ここでいう「暗号化する部分」とは、編集開始識別語と編集終了識別語の間に挟まれている関数及び日付又は日数の部分である。この場合、暗号解除コード116は、実行時に暗号解除した部分のパリティを計算し、計算されたパリティをパリティ126と比較し、両者が一致していないときには、日付や日数等が改竄されたと判断してプログラム実行の強制終了、プログラムの一部の機能の無効化等のプログラム実行の制限を行う。同様に、編集部211は、図14(b)に示すように暗号化する部分のハッシュ値127を編集後実行ファイル121に付加しても良い。ここでいう「暗号化する部分」とは、編集開始識別語と編集終了識別語の間に挟まれている関数及び日付又は日数の部分である。この場合、暗号解除コード116は、実行時に暗号解除した部分のハッシュ値を計算し、計算されたハッシュ値をハッシュ値127と比較し、両者が一致していないときには、日付や日数等が改竄されたと判断してプログラム実行の強制終了、プログラムの一部の機能の無効化等のプログラム実行の制限を行う。更にハッシュ値を公開鍵暗号で暗号化して格納しておき、実行時には電子署名改竄検査を行っても良い。
【0073】
試用期間の日数制限をしている場合において、編集後実行ファイル121を起動した時には、暗号解除コード116が、その時がコンピュータに編集後実行ファイル121をコンピュータにインストールしてから無効化するまでの日数を経過した時であるのか否かを判断する必要がある。このために、編集後実行ファイル121をコンピュータにインストールするインストールプログラムは、インストールが行われた日付をコンピュータの所定の場所に記録する。また、インストールプログラムは、その日付を編集後実行ファイル121に書き込んでもよい。暗号解除コード116は、その日付を参照する。
【0074】
次に、実施形態3におけるコンパイラ201、リンカ209及び編集部211が行うコンピュータプログラムの編集方法について説明する。
【0075】
実施形態3による編集方法の全体は、実施形態1によるものと同様に、図4に示すとおりである。
【0076】
ステップS309の詳細は、図15に示すとおりである、図5と図15を比較すると明らかな様に、実施形態3は、実施形態1と比較し、ステップS315がステップS343に置き換わっている点が異なる。ステップS343では、指定ファイル117に記述されている関数及び日付又は日数を編集開始識別語と編集終了識別語の間に挟んで、これらをリンクする。他のステップS311、S313、S317の説明は省略する。
【0077】
ステップS309の詳細は、図16に示すとおりである。図9と図16を比較すると明らかなように、実施形態2は、実施形態2と比較し、ステップS345、S347、S349が追加されている点が異なる。ステップS335の判断結果が肯定的であるときに実行されるステップS345では、コードが絶対アドレスであるかを判断する。ステップS345の判断結果が肯定的であれば、ステップS329に進む。ステップS345の判断結果が否定的であれば、パリティ又はハッシュ値の中間値を計算し(ステップS341)、コードを暗号化し(ステップS339)、ステップS329に進む。ステップS341の後のステップS349では、編集後実行ファイル121にパリティ又はハッシュ値を書き込む。ステップS321、S323、S325、S327、S329、S331、S333、S335の説明は省略する。
【0078】
なお、上記の実施形態で説明した編集前実行ファイル及び編集後実行ファイルは、通常は、機械語コードで記述されたファイルであるが、BASIC言語、JAVA(登録商標)言語、「.NET」等の中間言語コードで記述されたファイルであってもよい。
【0079】
【発明の効果】
以上説明したように、本発明によれば、一部のコードを無効化又は暗号化した実行ファイルを作成するために、ソースファイルに変更を加える必要がないので、無効化又は暗号化する関数の相違に応じて複数のソースファイルを作成する必要がなくなり、保守性が向上する。
【0080】
また、本発明によれば、一部のコードを暗号化して、後に暗号解除してそのコードを利用できるようにしているので、ユーザは試用版の実行ファイルとは別に製品版を購入する必要がなくなり、購入に伴う労力を省くことができる。また、販売費、流通費等を削減できる。
【0081】
更に、本発明によれば、関数を暗号化する場合であっても、その関数に含まれている絶対アドレスを暗号化しないので、実行ファイルのメモリへのロード時に実行ファイル中の絶対アドレスの書き換えをするオペレーティングシステムに対応することが可能となる。
【0082】
更に、本発明によれば、使用期間を限定するための情報を暗号化するので、使用期間が改竄される可能性が低くなり、使用期間を過ぎた実行ファイルの不正な使用を防止することができる。
【0083】
更に、本発明によれば、暗号化された部分のパリティ又はハッシュ値を実行ファイルに書き込んでおいて、実行時に計算されたパリティ又はハッシュ値と実行ファイルに書き込まれているパリティ又はハッシュ値を比較し、両者が不一致であった場合に、実行ファイルの実行を制限するので、例え、暗号化された部分が改竄されたとしても、不正な使用を防止することができる。特に、使用期間を限定するための情報も暗号化している場合には、使用期間経過後の不正な使用を防止することができる。
【図面の簡単な説明】
【図1】本発明の実施形態1によるコンピュータプログラムの編集システムの構成を示すブロック図である。
【図2】本発明の実施形態1によるソースファイル、識別語ファイル及び指定ファイルの内容の例を示す図である。
【図3】本発明の実施形態1による編集前実行ファイル及び編集後実行ファイルの内容の例を示す図である。
【図4】本発明の実施形態1によるコンピュータプログラムの編集方法を示すフローチャトである。
【図5】本発明の実施形態1による「全てのオブジェクトをリンクして、編集前実行ファイルを生成する」ステップの詳細を示すフローチャートである。
【図6】本発明の実施形態1による「編集前実行ファイルよび編集後実行ファイルを生成する」ステップの詳細を示すフローチャートである。
【図7】本発明の実施形態2によるコンピュータプログラムの編集システムの構成を示すブロック図である。
【図8】本発明の実施形態2による編集後実行ファイルの内容の例を示す図である。
【図9】本発明の実施形態2による「編集前実行ファイルよび編集後実行ファイルを生成する」ステップの詳細を示すフローチャートである。
【図10】本発明の実施形態3によるコンピュータプログラムの編集システムの構成を示すブロック図である。
【図11】本発明の実施形態3による指定ファイルの内容の例を示す図である。
【図12】本発明の実施形態3による編集前実行ファイル及び編集後実行ファイルの内容の例を示す図である。
【図13】本発明の実施形態3による編集後実行ファイル中の関数の暗号化の状態を示す図である。
【図14】本発明の実施形態3による編集後実行ファイルの内容の他の例を示す図である。
【図15】本発明の実施形態3による「全てのオブジェクトをリンクして、編集前実行ファイルを生成する」ステップの詳細を示すフローチャートである。
【図16】本発明の実施形態3による「編集前実行ファイルよび編集後実行ファイルを生成する」ステップの詳細を示すフローチャートである。
【符号の説明】
101 ソースファイル
103 識別語リスト
105、107 オブジェクトファイル
109、117 指定ファイル
111、119 編集前実行ファイル
113、115、121 編集後実行ファイル
201 コンパイラ
203、209 リンカ
205、207、211 編集部
Claims (29)
- ソースファイルから生成されたオブジェクトファイルと、前記ソースファイル中の編集するべき関数を指定する指定ファイルとを基に、前記編集するべき関数のコードを編集開始位置識別語及び編集終了位置識別語で挟んだ編集前実行ファイルを生成するリンカと、
前記編集前実行ファイル中の前記編集開始位置識別語及び前記編集終了位置識別語で挟まれた前記編集するべき関数のコードを編集して、編集後実行ファイルを生成する編集部と、
を有することを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記指定ファイルは、前記ソースファイル中の編集するべき関数の名称を前記編集開始位置識別語及び前記編集終了位置識別語に関連付けた文のリストを含むことを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記編集とは、コードを無実行命令にすることであることを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記編集とは、前記編集開始位置識別語の直後の部分を関数の終了コードに置換し、前記編集するべき関数のコードのその他の部分を任意のデータで上書きすることであることを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記編集とは、コードを暗号化することであることを特徴とするコンピュータプログラムの編集システム。 - 請求項5に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、暗号解除コードを前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集システム。 - 請求項5に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの絶対アドレスを暗号化せずに、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの前記絶対アドレス以外の部分を暗号化することを特徴とするコンピュータプログラムの編集システム。 - 請求項5に記載のコンピュータプログラム編集システムにおいて、
前記編集開始位置識別語と前記編集終了位置識別語の間に暗号化するべき関数のコードに加え、当該関数の使用期間を限定するための情報を入れ、前記編集部は、当該関数及び前記使用期間を限定するための情報を暗号化することを特徴とするコンピュータプログラムの編集システム。 - 請求項5に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、暗号化するべきコードよりパリティ又はハッシュ値を計算し、該パリティ又はハッシュ値を前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集システム。 - 請求項9に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、暗号化されたコードを実行時に暗号解除し、暗号解除されたコードよりパリティ又はハッシュ値を計算し、該計算されたパリティ又はハッシュ値を前記編集後実行ファイルに付加されている前記パリティ又はハッシュ値と比較し、両者が不一致である場合に、前記編集後実行ファイルの実行を制限するコードを前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、前記指定ファイルを参照して前記編集後実行ファイルを生成することを特徴とするコンピュータプログラムの編集システム。 - 請求項1に記載のコンピュータプログラムの編集システムにおいて、
前記リンカは、前記編集開始位置識別語及び前記編集終了位置識別語を含む識別語リストから生成されたオブジェクトファイルも参照して前記編集前実行ファイルを生成することを特徴とするコンピュータプログラムの編集システム。 - 請求項12に記載のコンピュータプログラムの編集システムにおいて、
前記編集部は、前記識別語リストを参照して前記編集後実行ファイルを生成することを特徴とするコンピュータプログラムの編集システム。 - ソースファイルから生成されたオブジェクトファイルと、前記ソースファイル中の編集するべき関数を指定する指定ファイルとを基に、前記編集するべき関数のコードを編集開始位置識別語及び編集終了位置識別語で挟んだ編集前実行ファイルを生成するリンクステップと、
前記編集前実行ファイル中の前記編集開始位置識別語及び前記編集終了位置識別語で挟まれた前記編集するべき関数のコードを編集して、編集後実行ファイルを生成する編集ステップと、
を有することを特徴とするコンピュータプログラムの編集方法。 - 請求14に記載のコンピュータプログラムの編集方法において、
前記指定ファイルは、前記ソースファイル中の編集するべき関数の名称を前記編集開始位置識別語及び前記編集終了位置識別語に関連付けた文のリストを含むことを特徴とするコンピュータプログラムの編集方法。 - 請求項14に記載のコンピュータプログラムの編集方法において、
前記編集とは、コードを無実行命令にすることであることを特徴とするコンピュータプログラムの編集方法。 - 請求項14に記載のコンピュータプログラムの編集方法において、
前記編集とは、前記編集開始位置識別語の直後の部分を関数の終了コードに置換し、前記編集するべき関数のコードのその他の部分を任意のデータで上書きすることであることを特徴とするコンピュータプログラムの編集方法。 - 請求項14に記載のコンピュータプログラムの編集方法において、
前記編集とは、コードを暗号化することであることを特徴とするコンピュータプログラムの編集方法。 - 請求項18に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、暗号解除コードを前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集方法。 - 請求項18に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの絶対アドレスを暗号化せずに、前記編集開始位置識別子語と前記編集終了位置識別語で挟まれたコードのうちの前記絶対アドレス以外の部分を暗号化することを特徴とするコンピュータプログラムの編集方法。 - 請求項18に記載のコンピュータプログラム編集方法において、
前記編集開始位置識別語と前記編集終了位置識別語の間に暗号化するべき関数のコードに加え、当該関数の使用期間を限定するための情報を入れ、前記編集ステップで、当該関数及び前記使用期間を限定するための情報を暗号化することを特徴とするコンピュータプログラムの編集方法。 - 請求項18に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、暗号化するべきコードよりパリティ又はハッシュ値を計算し、該パリティ又はハッシュ値を前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集方法。 - 請求項22に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、暗号化されたコードを実行時に暗号解除し、暗号解除されたコードよりパリティ又はハッシュ値を計算し、該計算されたパリティ又はハッシュ値を前記編集後実行ファイルに付加されている前記パリティ又はハッシュ値と比較し、両者が不一致である場合に、前記編集後実行ファイルの実行を制限するコードを前記編集後実行ファイルに付加することを特徴とするコンピュータプログラムの編集システム。 - 請求項14に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、前記指定ファイルを参照して前記編集後実行ファイルを生成することを特徴とするコンピュータプログラムの編集方法。 - 請求項14に記載のコンピュータプログラムの編集方法において、
前記リンカは、前記編集開始位置識別語及び前記編集終了位置識別語を含む識別語リストから生成されたオブジェクトファイルも参照して前記編集前実行ファイルを生成することを特徴とするコンピュータプログラムの編集方法。 - 請求項25に記載のコンピュータプログラムの編集方法において、
前記編集ステップで、前記識別語リストを参照して前記編集後実行ファイルを生成することを特徴とするコンピュータプログラムの編集方法。 - 請求項14乃至26のいずれか1項に記載のコンピュータプログラムの編集方法をコンピュータに実行させるためのプログラム。
- 絶対アドレスが暗号化されず、他の部分が暗号化されている関数を含む実行プログラム。
- 絶対アドレスが暗号化されず、他の部分が暗号化されている関数を含む実行プログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003053512A JP4147472B2 (ja) | 2003-02-28 | 2003-02-28 | コンピュータプログラムの編集システム及びその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003053512A JP4147472B2 (ja) | 2003-02-28 | 2003-02-28 | コンピュータプログラムの編集システム及びその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004265037A true JP2004265037A (ja) | 2004-09-24 |
JP4147472B2 JP4147472B2 (ja) | 2008-09-10 |
Family
ID=33118090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003053512A Expired - Fee Related JP4147472B2 (ja) | 2003-02-28 | 2003-02-28 | コンピュータプログラムの編集システム及びその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4147472B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007072568A1 (ja) * | 2005-12-22 | 2007-06-28 | Fujitsu Limited | プログラム処理装置、プログラム処理方法、プログラム及びコンピュータ読取可能な記録媒体 |
JP2013179453A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 計算機システムおよび計算方法 |
JP2014160383A (ja) * | 2013-02-20 | 2014-09-04 | Toppan Printing Co Ltd | 携帯端末装置及び復号処理プログラム |
JP2016538640A (ja) * | 2013-11-14 | 2016-12-08 | インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. | プログラム保護装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014147748A1 (ja) | 2013-03-19 | 2014-09-25 | 株式会社東芝 | コード処理装置およびプログラム |
-
2003
- 2003-02-28 JP JP2003053512A patent/JP4147472B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007072568A1 (ja) * | 2005-12-22 | 2007-06-28 | Fujitsu Limited | プログラム処理装置、プログラム処理方法、プログラム及びコンピュータ読取可能な記録媒体 |
JP4818279B2 (ja) * | 2005-12-22 | 2011-11-16 | 富士通株式会社 | プログラム処理装置、プログラム処理方法及びプログラム |
JP2013179453A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 計算機システムおよび計算方法 |
JP2014160383A (ja) * | 2013-02-20 | 2014-09-04 | Toppan Printing Co Ltd | 携帯端末装置及び復号処理プログラム |
JP2016538640A (ja) * | 2013-11-14 | 2016-12-08 | インカ・エントワークス・インコーポレイテッドInka Entworks, Inc. | プログラム保護装置 |
Also Published As
Publication number | Publication date |
---|---|
JP4147472B2 (ja) | 2008-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4770425B2 (ja) | 保護済み実行プログラムの作成のためのプログラム、方法及び装置 | |
JP4981136B2 (ja) | アドオンデータファイルへのアクセスを管理する方法及びシステム | |
US5222134A (en) | Secure system for activating personal computer software at remote locations | |
US5530752A (en) | Systems and methods for protecting software from unlicensed copying and use | |
JP3444227B2 (ja) | ソフトウェアの不正使用防止方法 | |
KR100888594B1 (ko) | 라이센스 생성 방법 및 이를 이용한 컨텐츠 제공 방법 및 그 장치 | |
US20080263366A1 (en) | Self-verifying software to prevent reverse engineering and piracy | |
US20020169974A1 (en) | Detecting and responding to a clock rollback in a digital rights management system on a computing device | |
US20100024044A1 (en) | Specifying rights in a digital rights license according to events | |
JP2009512087A (ja) | プログラム実行可能イメージの暗号化 | |
JP2003308440A (ja) | 情報処理装置および方法、プログラム格納媒体、並びにプログラム | |
JPH11296437A (ja) | 使用期限付きコンテンツ管理システム、管理方法および情報を記録した記録媒体 | |
JP2005141413A (ja) | 情報処理装置及びその情報処理方法、並びにデータ通信システム及びデータ通信方法 | |
JP2005135265A (ja) | 情報処理装置 | |
US8090960B2 (en) | Information managing method, information managing system, server apparatus, and recording medium | |
CN112417380A (zh) | 一种基于编译技术的Licence管理系统 | |
JP2006318464A (ja) | 実行可能コードのコピーについての固有の識別を生成する方法及びその管理 | |
JP2006318465A (ja) | 実行可能コードのコピーについての固有の識別を生成する方法及びその管理 | |
JP4728650B2 (ja) | ソフトウェアプロテクト方法及びソフトウェアプロテクト機能を有する事務コンピュータ | |
JP4147472B2 (ja) | コンピュータプログラムの編集システム及びその方法 | |
JP2002132364A (ja) | プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法 | |
JP4517636B2 (ja) | 実行プログラム作成方法、関数プログラム、及び関数プログラム実行方法 | |
JP2000305846A (ja) | 情報処理装置および方法、並びにプログラム格納媒体 | |
JP4818279B2 (ja) | プログラム処理装置、プログラム処理方法及びプログラム | |
US20040111717A1 (en) | Software modification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061010 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061113 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080304 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080430 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080509 |
|
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: 20080529 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080611 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 Year of fee payment: 3 |
|
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: 20110704 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
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: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120704 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130704 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130704 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130704 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |