保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、暗号化部と、暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、復号化処理モジュール生成部と、前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、コード書換部と、を備えていることを特徴とするプログラム保護装置。前記復号化処理モジュール生成部は、前記復号化処理モジュールが、前記特定のモジュールの実行の終了後に、前記保護対象となるプログラムを実行している装置のメモリに対して、別のデータによる上書き処理を行なうように、前記復号化処理モジュールを生成する、請求項1に記載のプログラム保護装置。前記復号化処理モジュール生成部は、前記復号化処理モジュールにアタッチするダミープログラムを、前記復号化処理モジュールと共に、前記保護対象となるプログラムに組み込む、請求項1または2に記載のプログラム保護装置。前記復号化処理モジュール生成部は、前記復号化処理モジュールが、前記ダミープログラム以外のプログラムにアタッチされている場合に、その処理を停止するように、前記復号化処理モジュールを生成する、請求項3に記載のプログラム保護装置。前記復号化処理モジュール生成部は、前記復号化処理モジュールが、前記保護対象となるプログラムを実行している装置において、前記特定のモジュールの一部又は全部についてのスワップを禁止するように、前記復号化処理モジュールを生成する、請求項1~4のいずれかに記載のプログラム保護装置。a保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、ステップと、b暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、ステップと、c前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、ステップと、を備えていることを特徴とするプログラム保護方法。前記bのステップにおいて、前記復号化処理モジュールが、前記特定のモジュールの実行の終了後に、前記保護対象となるプログラムを実行している装置のメモリに対して、別のデータによる上書き処理を行なうように、前記復号化処理モジュールを生成する、請求項6に記載のプログラム保護方法。前記bのステップにおいて、前記復号化処理モジュールにアタッチするダミープログラムを、前記復号化処理モジュールと共に、前記保護対象となるプログラムに組み込む、請求項6または7に記載のプログラム保護方法。前記bのステップにおいて、前記復号化処理モジュールが、前記ダミープログラム以外のプログラムにアタッチされている場合に、その処理を停止するように、前記復号化処理モジュールを生成する、請求項8に記載のプログラム保護方法。前記bのステップにおいて、前記復号化処理モジュールが、前記保護対象となるプログラムを実行している装置において、前記特定のモジュールの一部又は全部についてのスワップを禁止するように、前記復号化処理モジュールを生成する、請求項6~9のいずれかに記載のプログラム保護方法。保護対象となるプログラムを、コンピュータによって保護するためのプログラムであって、前記コンピュータに、a前記保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、ステップと、b暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、ステップと、c前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、ステップと、を実行させるプログラム。前記bのステップにおいて、前記復号化処理モジュールが、前記特定のモジュールの実行の終了後に、前記保護対象となるプログラムを実行している装置のメモリに対して、別のデータによる上書き処理を行なうように、前記復号化処理モジュールを生成する、請求項11に記載のプログラム。前記bのステップにおいて、前記復号化処理モジュールにアタッチするダミープログラムを、前記復号化処理モジュールと共に、前記保護対象となるプログラムに組み込む、請求項11または12に記載のプログラム。前記bのステップにおいて、前記復号化処理モジュールが、前記ダミープログラム以外のプログラムにアタッチされている場合に、その処理を停止するように、前記復号化処理モジュールを生成する、請求項13に記載のプログラム。前記bのステップにおいて、前記復号化処理モジュールが、前記保護対象となるプログラムを実行している装置において、前記特定のモジュールの一部又は全部についてのスワップを禁止するように、前記復号化処理モジュールを生成する、請求項11~14のいずれかに記載のプログラム。しかしながら、上述したように、上記の特許文献1に開示されたコピー防止技術を採用するためには、開発者は、暗号化の仕組みと、プログラム実行時の復号化の仕組みとを理解した上で、必要なコードを組み込んでいく必要がある。このため、上記の特許文献1に開示されたコピー防止技術を採用する場合は、開発者における負担が大きく、プログラム開発にかかる時間と製造コストとがかかり過ぎるという問題が発生してしまう。本発明の目的の一例は、上記問題を解消し、開発者に負担をかけることなく、プログラムの処理内容の解析の防止を図り得る、プログラム保護装置、プログラム保護方法、及びプログラムを提供することにある。上記目的を達成するため、本発明の一側面におけるプログラム保護装置は、保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、暗号化部と、暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、復号化処理モジュール生成部と、前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、コード書換部と、を備えていることを特徴とする。また、上記目的を達成するため、本発明の一側面におけるプログラム保護方法は、a保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、ステップと、b暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、ステップと、c前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、ステップと、を備えていることを特徴とする。更に、上記目的を達成するため、本発明の一側面におけるプログラムは、保護対象となるプログラムを、コンピュータによって保護するためのプログラムであって、前記コンピュータに、a前記保護対象となるプログラム中の暗号化対象となる特定のモジュールを暗号化する、ステップと、b暗号化された前記特定のモジュールの復号化及び復号化された前記特定のモジュールの実行を行なう復号化処理モジュールを生成する、ステップと、c前記保護対象となるプログラムにおいて、前記特定のモジュールが呼び出されると、代わりに、前記復号化処理モジュールが呼び出されるように、前記復号化処理モジュールのコードを書き換える、ステップと、を実行させることを特徴とする。以上のように、本発明によれば、開発者に負担をかけることなく、プログラムの処理内容の解析の防止を図ることができる。実施の形態1以下、本発明の実施の形態1における、プログラム保護装置、プログラム保護方法、及びプログラムについて、図1~図3を参照しながら説明する。[装置構成]最初に、図1を用いて本実施の形態1におけるプログラム保護装置の構成について説明する。図1は、本発明の実施の形態1におけるプログラム保護装置の構成を示すブロック図である。図1に示す本実施の形態1におけるプログラム保護装置10は、保護対象となるプログラム以下保護対象プログラムと表記する。20の処理内容の解析を防止するための装置である。また、本実施の形態1において、保護対象プログラム20は、家庭用機器、産業用機器、医療用機器、自動車といった各種機器に組み込まれ、これら機器の制御に用いられる。図1に示すように、プログラム保護装置10は、暗号化部11と、復号化処理モジュール生成部12と、コード書換部13と、を備えている。暗号化部11は、保護処理前の保護対象プログラム20中の暗号化対象となる特定のモジュール以下特定処理モジュールと表記する。22の暗号化を実行する。復号化処理モジュール生成部12は、復号化処理モジュール23を生成する。復号化処理モジュール23は、暗号化された特定処理モジュール22の復号化と、復号化した特定処理モジュール22の実行と、を行うモジュールである。コード書換部13は、保護対象プログラム20において、特定処理モジュール22が呼び出されると、代わりに、復号化処理モジュール23が呼び出されるように、復号化処理モジュール23のコードを書き換える。そして、保護対象プログラム20において、特定処理モジュールの代わりに、暗号化部11によって暗号化された特定処理モジュール22と、復号化処理モジュール23とが、組み込まれる。このようにして得られた保護対象プログラム20、即ち、保護処理が終了した保護対象プログラムが、機器図示せずに組み込まれる。なお、図1において、保護処理が終了した保護対象プログラムは、保護対象プログラム20aと表記されている。また、図1において、22aは、暗号化された特定処理モジュールであり、22bは、復号化された特定処理モジュールである。このように、プログラム保護装置10を用いれば、開発者に面倒な処理を行わせることなく、保護対象プログラム20に対して保護処理が行われる。また、保護処理後の保護対象プログラム20aでは、特定処理モジュールは暗号化されているので、第三者による保護対象プログラムの処理内容の解析が防止される。ここで、本実施の形態1におけるプログラム保護装置10の構成について更に具体的に説明する。まず、図1に示すように、保護対象プログラム20は、メイン処理モジュール21と、暗号化対象となる特定処理モジュール22とを含んでいる。特定処理モジュール22は、メイン処理モジュール21によって、その実行時に呼び出される。本実施の形態1では、まず、保護対象プログラム20の開発者によって、保護対象プログラム20中の特定処理モジュール22が、プログラム保護装置10に入力される。プログラム保護装置10は、特定処理モジュール22それぞれの入力を受け付ける。本実施の形態1では、暗号化部11は、まず、特定処理モジュール22のプログラムコードを解析し、メイン処理モジュール12から呼び出される関数及びその引数についての情報を抽出する。そして、暗号化部11は、特定処理モジュール22を暗号化する。具体的には、本実施の形態1では、暗号化部11は、発生させた乱数データ又は予め設定されたデータを特定の数式に代入して、共通鍵を作成し、作成した共通鍵を用いて特定処理モジュール22を暗号化する。復号化処理モジュール生成部12は、復号化処理モジュール23を生成する。この復号化処理モジュール23が組み込まれた保護対象プログラム20aが、機器上で実行されると、復号化処理モジュール23は、暗号化された特定処理モジュール22aを復号化する。具体的には、本実施の形態1では、復号化処理モジュール23には、暗号化部11が共通鍵の作成で使用したデータと特定の数式とが組み込まれている。よって、復号化処理モジュール23は、これらのデータと特定の数式とを用いて共通鍵を作成し、作成した共通鍵を用いて、暗号化された特定処理モジュール22aを復号化する。このように、本実施の形態1では、復号化の度に鍵の生成が行なわれるので、この点から、よりいっそう、保護対象プログラムの処理内容の解析が防止される。コード書換部13は、本実施の形態1では、メイン処理モジュール21によって特定処理モジュール22が呼び出された場合に、代わりに復号化処理モジュール23が呼び出されるように、暗号化部11によって抽出された情報を用いて、復号化処理モジュール23のコードを書き換える。これにより、保護対象プログラム20aが機器上で実行され、メイン処理モジュール21が特定処理モジュール22を呼び出すと、その代わりに、復号化処理モジュール23が呼び出されて、復号化された特定処理モジュール22bが実行される。また、プログラム保護装置10において、コードの書き換えの終了した復号化処理モジュール23と、暗号化された特定処理モジュール22aとは、別々に出力される。その後、保護対象プログラム20の開発者によって、これらのモジュールは、メイン処理モジュール21に結合され、保護対象プログラム20aとされる。また、本実施の形態1では、コード書換部13は、本実施の形態1では、コードの書き換えの終了後、復号化処理モジュール23と、暗号化された特定処理モジュール22aとを、一つのファイルにまとめて出力することもできる。この場合は、保護対象プログラム20の開発者は、このファイルをメイン処理モジュール21に結合して、保護対象プログラム20aとする。[装置動作]次に、本発明の実施の形態1におけるプログラム保護装置10の動作について図2を用いて説明する。図2は、本発明の実施の形態1におけるプログラム保護装置の動作を示すフロー図である。以下の説明においては、適宜図1を参酌する。また、本実施の形態1では、プログラム保護装置10を動作させることによって、プログラム保護方法が実施される。よって、本実施の形態1におけるプログラム保護方法の説明は、以下のプログラム保護装置10の動作説明に代える。最初に、保護対象プログラム20の開発者によって、特定処理モジュール22が、プログラム保護装置10に入力される。これにより、図2に示すように、プログラム保護装置10は、特定処理モジュール22の入力を受け付ける。ステップA1。次に、暗号化部11は、暗号用の共通鍵を生成し、これを用いて、入力が受け付けられた特定処理モジュール22を暗号化するステップA2。次に、復号化処理モジュール生成部12が、復号化処理モジュール23を生成するステップA3。このとき、復号化処理モジュール生成部12は、復号化処理モジュール23が復号化用の共通鍵を生成できるようにするため、ステップA2での共通鍵の作成で使用したデータと特定の数式とを、復号化処理モジュール23に保持させる。次に、コード書換部13が、保護対象プログラム20において、特定処理モジュール22が呼び出されると、代わりに、復号化処理モジュール23が呼び出されるように、復号化処理モジュール23のコードを書き換えるステップA4。また、ステップA4において、コード書換部13は、復号化処理モジュール23と暗号化された特定処理モジュール22aとを一つのファイルにまとめることができる。なお、ステップA4は、ステップA3と同時に実行されても良い。次に、プログラム保護装置10は、復号化処理モジュール23と暗号化された特定処理モジュール22aとを、例えば、開発者の端末等に出力するステップA5。これにより、プログラム保護装置10における処理は終了する。その後、開発者は、メイン処理モジュール21に、復号化処理モジュール23と暗号化された特定処理モジュール22aとを付加し、保護対象プログラム20aを構築する。また、保護対象プログラム20aは、組み込み対象となる機器に、組み込まれ、機器の動作に貢献する。[保護処理用プログラム]本実施の形態1におけるプログラム保護対象プログラムを除くは、コンピュータに、図2に示すステップA1~A5を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態1におけるプログラム保護装置10とプログラム保護方法とを実現することができる。上記の場合、コンピュータのCPUCentralProcessingUnitは、暗号化部11、復号化処理モジュール生成部12、コード書換部13として機能し、処理を行なう。なお、本明細書においてプログラム保護装置を構築するためのプログラムは、保護対象プログラムと区別するため、保護処理用プログラムと表記することもある。[機器]ここで、図3を用いて、本実施の形態1において保護処理が行なわれた保護対象プログラム20aが搭載された機器について説明する。図3は、本発明の実施の形態1での保護処理がなされた保護対象プログラムを搭載する機器を示す図である。図3に示す機器50は、家庭用機器、産業用機器、医療用機器、及び自動車といった機器である。図3に示すように、機器50には、CPU、メモリ、バス、インターフェイスこれらについては図示せず等が一体となったコンピュータシステム40が搭載されている。図1に示した保護処理済の保護対象プログラム20aは、このコンピュータシステム40上で実行される。図3に示すように、保護対象プログラム20aは、コンピュータシステム40のメモリ44上に展開される。これにより、コンピュータシステム40のオペレーティングシステムOS43上に、メイン処理モジュール21を実行するメイン処理実行部41と、復号化処理モジュール23を実行する復号化処理部42とが構築される。なお、実際には、コンピュータシステム40のCPUが、メイン処理実行部41及び復号化処理部42として機能する。復号化処理部42は、メイン処理実行部41が特定処理モジュール22図1参照を呼び出すと、暗号化された特定処理モジュール22aの復号化を行ない、復号化した特定処理モジュール22bをメモリ44上に展開する。そして、復号化処理部42は、復号化した特定処理モジュール22bを実行する。[実施の形態1における効果]以上のように、本実施の形態1によれば、特定処理モジュール22は、保護対象プログラム20aにおいて暗号化された状態で結合している。このため、特定処理モジュールをリバースエンジニアリングによって静的解析することは困難である。また、機器50のコンピュータシステム40では、特定処理モジュール22の復号化は、必要な場合にのみ行なわれるので、特定処理モジュール22のメモリ44上への展開は最小限とされるので、デバッガ等によって動的解析することも困難となる。また、メイン処理モジュール21は、プログラム保護処理の前後のいずれにおいても、同じインターフェイスで特定処理モジュールを呼び出すことができる。従って、保護対象プログラムの開発者が、暗号化処理のアルゴリズム、復号化処理のアルゴリズム、更には、復号化処理の内部構造を把握する必要性はない。また、開発者は、復号化処理モジュール23を呼び出すためにメイン処理モジュール21を改造しなくても良く、その作業も発生しない。このため、開発者における負担は軽減され、結果、開発期間及び開発コストの低減化も図られる。実施の形態2次に、本発明の実施の形態2における、プログラム保護装置、プログラム保護方法、及びプログラムについて、図4~図6を参照しながら説明する。[装置構成]最初に、図4を用いて本実施の形態2におけるプログラム保護装置の構成について説明する。図4は、本発明の実施の形態2におけるプログラム保護装置の構成を示すブロック図である。図4に示す本実施の形態2におけるプログラム保護装置60は、復号化処理モジュール生成部61の機能の点で、実施の形態1において図1に示したプログラム保護装置10と異なっている。以下、相違点を中心に説明する。本実施の形態2では、復号化処理モジュール生成部61は、復号化処理モジュール62を生成する。復号化処理モジュール62は、図1に示した復号化処理モジュール23が備える機能に加え、特定処理モジュール22bの実行後に、保護対象プログラム20aを実行している装置機器のメモリ図6参照に対して、別のデータによる上書き処理を行なう機能を備えている。具体的には、復号化処理モジュール生成部61は、復号化処理モジュール62に、図1に示した復号化処理モジュール23の機能に加え、パタンデータ63によってメモリを上書きする機能も付与する。そして、復号化処理モジュール生成部61は、メモリを上書きするためのパタンデータ63を出力する。パタンデータ63の具体例としては、定数値、乱数、ダミー処理を行なうためのプログラムコード、及び錯誤しやすいプログラムコード別方式暗号の復号プログラム等、警告メッセージ等のうちの、いずれか、又はこれらの組合せが挙げられる。[装置動作]次に、本発明の実施の形態2におけるプログラム保護装置60の動作について図5を用いて説明する。図5は、本発明の実施の形態2におけるプログラム保護装置の動作を示すフロー図である。以下の説明においては、適宜図4を参酌する。また、本実施の形態2では、プログラム保護装置60を動作させることによって、プログラム保護方法が実施される。よって、本実施の形態2におけるプログラム保護方法の説明は、以下のプログラム保護装置60の動作説明に代える。最初に、保護対象プログラム20の開発者によって、特定処理モジュール22が、プログラム保護装置60に入力される。これにより、図5に示すように、プログラム保護装置60は、特定処理モジュール22の入力を受け付ける。ステップB1。次に、暗号化部11は、暗号用の共通鍵を生成し、これを用いて、入力が受け付けられた特定処理モジュール22を暗号化するステップB2。なお、ステップB1及びB2は、実施の形態1において図2に示したステップA1及びA2と同様のステップである。次に、復号化処理モジュール生成部61は、プログラム保護装置60を使用している開発者から、特定処理モジュール22の実行後に、特定処理モジュール22を機器のメモリから削除する旨の指示が出されているかどうかを判定するステップB3。具体的には、ステップB3では、復号化処理モジュール生成部61は、プログラム保護装置60の表示装置図示せずの画面に、メモリ削除が必要かどうかを問い合わせるメッセージを表示させる。そして、開発者が、キーボード等の入力機器を介して、必要又は不必要の旨を入力すると、復号化処理モジュール生成部61は、入力結果に基づいて判定を行なう。また、本実施の形態2では、プログラム保護装置60は、開発者に対して、メモリ削除の有無を予め指定させることもできる。指定は、例えば、開発者に、オプション指定としてメモリ削除の有無を入力させることによって、又は、開発者にメモリ削除の有無が登録された設定ファイルを入力させることによって行なわれる。そして、この場合、ステップB4において、復号化処理モジュール生成部61は、指定された内容に基づいて判定を行なう。ステップB3の判定の結果、特定処理モジュールを機器のメモリから削除する旨の指示が出されている場合は、復号化処理モジュール生成部61は、ステップB4を実行する。ステップB4では、復号化処理モジュール生成部61は、復号化処理モジュール62を生成し、加えて、予め用意されているパタンデータ63を出力する。出力先は、後述する開発者の端末等である。また、ステップB4では、復号化処理モジュール生成部61は、復号化処理モジュール62に、暗号化された特定処理モジュール22aを復号化する機能と、復号化された特定処理モジュール22bを実行する機能とに加えて、パタンデータ63によってメモリを上書きする機能も付与する。更に、復号化処理モジュール生成部61は、復号化処理モジュール62が復号化用の共通鍵を生成できるようにするため、ステップB2での共通鍵の作成で使用したデータと特定の数式とを、復号化処理モジュール62に保持させる。一方、ステップB3の判定の結果、特定処理モジュールを機器のメモリから削除する旨の指示が出されていない場合は、復号化処理モジュール生成部61は、復号化処理モジュール62の生成のみを行なうステップB5。なお、ステップB5でも、復号化処理モジュール生成部61は、ステップB2での共通鍵の作成で使用したデータと特定の数式とを、復号化処理モジュール62に保持させる。次に、ステップB4又はステップB5の実行後、コード書換部13が、復号化処理モジュール62のコードの書き換えを実行するステップB6。ステップB6は、実施の形態1において図2に示したステップA4と同様のステップである。なお、本実施の形態2では、コード書換部13は、復号化処理モジュール23と暗号化された特定処理モジュール22aとに加えて、パタンデータ63も一つのファイルにまとめることができる。次に、プログラム保護装置60は、復号化処理モジュール62と暗号化された特定処理モジュール22aとを、例えば、開発者の端末等に出力するステップB7。これにより、プログラム保護装置60における処理は終了する。ステップB7は、実施の形態1において図2に示したステップA5と同様のステップである。その後、開発者は、メイン処理モジュール21に、復号化処理モジュール62と、暗号化された特定処理モジュール22aと、パタンデータ63とを付加し、保護対象プログラム20aを構築する。また、保護対象プログラム20aは、組み込み対象となる機器に、組み込まれ、機器の動作に貢献する。[保護処理用プログラム]本実施の形態2における保護処理用プログラムは、コンピュータに、図5に示すステップB1~B7を実行させるプログラムであれば良い。この保護処理用プログラムをコンピュータにインストールし、実行することによって、本実施の形態2におけるプログラム保護装置60とプログラム保護方法とを実現することができる。上記の場合、コンピュータのCPUCentralProcessingUnitは、暗号化部11、復号化処理モジュール生成部61、コード書換部13として機能し、処理を行なう。[機器]ここで、図6を用いて、本実施の形態2において保護処理が行なわれた保護対象プログラム20aが搭載された機器について説明する。図6は、本発明の実施の形態2での保護処理がなされた保護対象プログラムを搭載する機器を示す図である。図6に示す機器50は、家庭用機器、産業用機器、医療用機器、及び自動車といった機器である。図6に示すように、機器50には、CPU、メモリ、バス、インターフェイスこれらについては図示せず等が一体となったコンピュータシステム40が搭載されている。図4に示した保護処理済の保護対象プログラム20aは、このコンピュータシステム40上で実行される。図6に示すように、保護対象プログラム20aは、コンピュータシステム40のメモリ44上に展開される。これにより、コンピュータシステム40のオペレーティングシステムOS43上に、メイン処理モジュール21を実行するメイン処理実行部41と、復号化処理モジュール62を実行する復号化処理部64とが構築される。なお、実際には、コンピュータシステム40のCPUが、メイン処理実行部41及び復号化処理部64として機能する。また、本実施の形態2でも、実施の形態1において図3に示した復号化処理部42と同様に、復号化処理部64は、メイン処理実行部41が特定処理モジュール22図1参照を呼び出すと、暗号化された特定処理モジュール22aの復号化を行ない、復号化した特定処理モジュール22bをメモリ44上に展開する。そして、復号化処理部64は、復号化した特定処理モジュール22bを実行する。但し、本実施の形態1では、実施の形態1と異なり、復号化処理部64は、復号化した特定処理モジュール22bを実行した後、設定されたタイミングで、メモリ44の特定処理モジュール22bが展開されている領域上に、パタンデータ63を上書きする。これにより、復号化された特定処理モジュール22bは、メモリ44上から、完全に削除される。なお、パタンデータ63を上書きするタイミングは、特に限定されず、特定処理モジュール22bの処理が終了する度であっても良いし、機器50の電源がオフにされる度であっても良い。[実施の形態2における効果]以上のように、本実施の形態2によれば、実施の形態1と同様に、リバースエンジニアリングによって静的解析することが困難となる。また、パタンデータによる上書きにより、特定処理モジュール22のメモリ44上への展開は更に最小限とされるので、いっそうデバッガ等による動的解析は困難となる。また、実施の形態2を用いた場合も、実施の形態1と同様に、開発者における負担は軽減され、結果、開発期間及び開発コストの低減化も図られる。実施の形態3次に、本発明の実施の形態3における、プログラム保護装置、プログラム保護方法、及びプログラムについて、図7~図9を参照しながら説明する。[装置構成]最初に、図7を用いて本実施の形態3におけるプログラム保護装置の構成について説明する。図7は、本発明の実施の形態3におけるプログラム保護装置の構成を示すブロック図である。図7に示す本実施の形態3におけるプログラム保護装置70は、復号化処理モジュール生成部71の機能の点で、実施の形態1において図1に示したプログラム保護装置10と異なっている。以下、相違点を中心に説明する。本実施の形態3では、復号化処理モジュール生成部71は、復号化処理モジュール72にアタッチするダミープログラム73を、復号化処理モジュール72と共に、出力することができる。なお、ダミープログラム73は、予め作成されていても良いし、保護対象プログラム20毎に作成されても良い。この構成では、復号化処理モジュール72には、実行中、常に、ダミープログラム73によるアタッチが行なわれるため、第3者が保護対象プログラムの解析のために、デバッガを利用しようとしても、デバッガはアタッチできない状態となる。また、本実施の形態3では、復号化処理モジュール生成部71は、復号化処理モジュール72に、図1に示した復号化処理モジュール23が備える機能に加えて、新たな機能を付加する。新たな機能は、復号化処理モジュール72が、ダミープログラム73以外のプログラムにアタッチされている場合に、その処理を停止する機能である。[装置動作]次に、本発明の実施の形態3におけるプログラム保護装置70の動作について図8を用いて説明する。図8は、本発明の実施の形態3におけるプログラム保護装置の動作を示すフロー図である。以下の説明においては、適宜図7を参酌する。また、本実施の形態3では、プログラム保護装置70を動作させることによって、プログラム保護方法が実施される。よって、本実施の形態3におけるプログラム保護方法の説明は、以下のプログラム保護装置70の動作説明に代える。最初に、保護対象プログラム20の開発者によって、特定処理モジュール22が、プログラム保護装置70に入力される。これにより、図8に示すように、プログラム保護装置70は、特定処理モジュール22の入力を受け付ける。ステップC1。次に、暗号化部11は、暗号用の共通鍵を生成し、これを用いて、入力が受け付けられた特定処理モジュール22を暗号化するステップC2。なお、ステップC1及びC2は、実施の形態1において図2に示したステップA1及びA2と同様のステップである。次に、復号化処理モジュール生成部71は、プログラム保護装置70を使用している開発者から、デバッガ対策用のダミープログラムを使用する旨の指示が出されているかどうかを判定するステップC3。具体的には、ステップC3では、復号化処理モジュール生成部71は、プログラム保護装置70の表示装置図示せずの画面に、デバッガ対策用のダミープログラムを使用するかどうかを問い合わせるメッセージを表示させる。そして、開発者が、キーボード等の入力機器を介して、使用又は不使用の旨を入力すると、復号化処理モジュール生成部71は、入力結果に基づいて判定を行なう。また、本実施の形態3でも、実施の形態2と同様に、プログラム保護装置70は、開発者に対して、ダミープログラム73の使用の有無を予め指定させることもできる。この場合ステップC3において、復号化処理モジュール生成部71は、指定された内容に基づいて判定を行なう。ステップC3の判定の結果、ダミープログラム73を使用する旨の指示が出されている場合は、復号化処理モジュール生成部71は、ステップC4を実行する。ステップC4では、復号化処理モジュール生成部71は、復号化処理モジュール72を生成し、加えて、予め用意されているダミープログラム73を出力する。出力先は、後述する開発者の端末等である。また、ステップC4では、復号化処理モジュール生成部71は、復号化処理モジュール72に、暗号化された特定処理モジュール22aを復号化する機能と、復号化された特定処理モジュール22bを実行する機能とに加えて、ダミープログラム73以外のプログラムにアタッチされている場合に処理を停止する機能も付与する。更に、復号化処理モジュール生成部71は、復号化処理モジュール72が復号化用の共通鍵を生成できるようにするため、ステップC2での共通鍵の作成で使用したデータと特定の数式とを、復号化処理モジュール72に保持させる。一方、ステップC3の判定の結果、ダミープログラム73を使用する旨の指示が出されていない場合は、復号化処理モジュール生成部71は、復号化処理モジュール72の生成のみを行なうステップC5。なお、ステップC5でも、復号化処理モジュール生成部71は、ステップC2での共通鍵の作成で使用したデータと特定の数式とを、復号化処理モジュール72に保持させる。次に、ステップC4又はステップC5の実行後、コード書換部13が、復号化処理モジュール72のコードの書き換えを実行するステップC6。ステップC6は、実施の形態1において図2に示したステップA5と同様のステップである。なお、本実施の形態3では、コード書換部13は、復号化処理モジュール23と暗号化された特定処理モジュール22aとに加えて、ダミープログラム73も一つのファイルにまとめることができる。次に、プログラム保護装置70は、復号化処理モジュール72と暗号化された特定処理モジュール22aとを、例えば、開発者の端末等に出力するステップC7。これにより、プログラム保護装置70における処理は終了する。ステップC7は、実施の形態1において図2に示したステップA5と同様のステップである。その後、開発者は、メイン処理モジュール21に、復号化処理モジュール72と、暗号化された特定処理モジュール22aと、ダミープログラム73とを付加し、保護対象プログラム20aを構築する。また、保護対象プログラム20aは、組み込み対象となる機器に、組み込まれ、機器の動作に貢献する。[保護処理用プログラム]本実施の形態3における保護処理用プログラムは、コンピュータに、図8に示すステップC1~C7を実行させるプログラムであれば良い。この保護処理用プログラムをコンピュータにインストールし、実行することによって、本実施の形態3におけるプログラム保護装置70とプログラム保護方法とを実現することができる。上記の場合、コンピュータのCPUCentralProcessingUnitは、暗号化部11、復号化処理モジュール生成部71、コード書換部13として機能し、処理を行なう。[機器]ここで、図9を用いて、本実施の形態3において保護処理が行なわれた保護対象プログラム20aが搭載された機器について説明する。図9は、本発明の実施の形態3での保護処理がなされた保護対象プログラムを搭載する機器を示す図である。図9に示す機器50は、家庭用機器、産業用機器、医療用機器、及び自動車といった機器である。図9に示すように、機器50には、CPU、メモリ、バス、インターフェイスこれらについては図示せず等が一体となったコンピュータシステム40が搭載されている。図7に示した保護処理済の保護対象プログラム20aは、このコンピュータシステム40上で実行される。図9に示すように、保護対象プログラム20aは、コンピュータシステム40のメモリ44上に展開される。これにより、コンピュータシステム40のオペレーティングシステムOS43上に、メイン処理モジュール21を実行するメイン処理実行部41と、復号化処理モジュール72を実行する復号化処理部74とが構築される。なお、実際には、コンピュータシステム40のCPUが、メイン処理実行部41及び復号化処理部74として機能する。また、本実施の形態3でも、実施の形態1において図3に示した復号化処理部42と同様に、復号化処理部74は、メイン処理実行部41が特定処理モジュール22図1参照を呼び出すと、暗号化された特定処理モジュール22aの復号化を行ない、復号化した特定処理モジュール22bをメモリ44上に展開する。そして、復号化処理部74は、復号化した特定処理モジュール22bを実行する。但し、本実施の形態3では、メモリ44上にダミープログラム73も展開されるので、OS43上には、ダミープログラム73を実行するダミープログラム実行部75も構築される。そして、ダミープログラム実行部75によって、復号化処理部74に対するアタッチが常に行なわれている状態となる。言い換えると、本実施の形態3では、特定処理モジュール22bを実行する親プロセスとは別に、ダミープログラム73によって新たな子プロセスが生成され、子プロセスは、親プロセスに常にアタッチしている状態となる。このため、図9に示すように、外部から、デバッガ76が親プロセスにアタッチすることができない状態となる。また、仮に、ダミープログラム実行部75より先にデバッガ76が親プロセスにアタッチしている場合は、ダミープログラム実行部75はアタッチできない状態となるので、復号化処理部74は、特定処理モジュール22aの復号化といった処理を中断する。この場合、デバッガ76はデバッグを実行できなくなる。[実施の形態3における効果]以上のように、本実施の形態3によれば、デバッガによる特定処理モジュール22bへのアクセスを防ぐことができるので、よりいっそう特定処理モジュールをリバースエンジニアリングによって動的解析することが困難となる。また、実施の形態3を用いた場合も、実施の形態1と同様に、リバースエンジニアリングによって静的解析することは困難となる。更に、開発者における負担は軽減され、結果、開発期間及び開発コストの低減化も図られる。実施の形態4次に、本発明の実施の形態4における、プログラム保護装置、プログラム保護方法、及びプログラムについて、図10~図12を参照しながら説明する。[装置構成]最初に、図10を用いて本実施の形態4におけるプログラム保護装置の構成について説明する。図10は、本発明の実施の形態4におけるプログラム保護装置の構成を示すブロック図である。図10に示す本実施の形態4におけるプログラム保護装置80は、復号化処理モジュール生成部81の機能の点で、実施の形態1において図1に示したプログラム保護装置10と異なっている。以下、相違点を中心に説明する。本実施の形態4では、復号化処理モジュール生成部81は、復号化処理モジュール82を生成する。復号化処理モジュール82は、図1に示した復号化処理モジュール23が備える機能に加え、保護対象プログラム20aを実行している装置機器に対して、特定処理モジュール22bの一部又は全部についてのスワップを禁止する機能を備えている。具体的には、復号化処理モジュール82には、特定処理モジュール22bのスワップファイル図12参照への書込みを禁止する命令以下スワップファイル書込み禁止命令と表記する。が記述されている。よって、保護対象プログラム20aを実行している装置機器のメモリ上に、特定処理モジュール22bが展開されると、復号化処理モジュール82のスワップファイル書込みを禁止命令によって、その展開された領域に対してスワップファイルへの書込みが禁止される。[装置動作]次に、本発明の実施の形態4におけるプログラム保護装置80の動作について図11を用いて説明する。図11は、本発明の実施の形態4におけるプログラム保護装置の動作を示すフロー図である。以下の説明においては、適宜図10を参酌する。また、本実施の形態4では、プログラム保護装置80を動作させることによって、プログラム保護方法が実施される。よって、本実施の形態4におけるプログラム保護方法の説明は、以下のプログラム保護装置80の動作説明に代える。最初に、保護対象プログラム20の開発者によって、特定処理モジュール22が、プログラム保護装置80に入力される。これにより、図11に示すように、プログラム保護装置80は、特定処理モジュール22の入力を受け付ける。ステップD1。次に、暗号化部11は、暗号用の共通鍵を生成し、これを用いて、入力が受け付けられた特定処理モジュール22を暗号化するステップD2。なお、ステップD1及びD2は、実施の形態1において図2に示したステップA1及びA2と同様のステップである。次に、復号化処理モジュール生成部81は、プログラム保護装置80を使用している開発者から、スワップ処理を禁止する旨の指示が出されているかどうかを判定するステップD3。具体的には、ステップD3では、復号化処理モジュール生成部81は、プログラム保護装置80の表示装置図示せずの画面に、スワップ処理の禁止が必要かどうかを問い合わせるメッセージを表示させる。そして、開発者が、キーボード等の入力機器を介して、必要又は不必要の旨を入力すると、復号化処理モジュール生成部81は、入力結果に基づいて判定を行なう。また、本実施の形態4でも、実施の形態2で述べたように、プログラム保護装置80は、開発者に対して、スワップ処理の禁止の有無を予め指定させることもできる。この場合ステップD3において、復号化処理モジュール生成部81は、指定された内容に基づいて判定を行なう。ステップD3の判定の結果、スワップ処理を禁止する旨の指示が出されている場合は、復号化処理モジュール生成部81は、ステップD4を実行する。ステップD4では、復号化処理モジュール生成部81は、特定処理モジュール22bのスワップファイル図12参照への書込みを禁止させる機能を備えた復号化処理モジュール82を生成する。一方、ステップD3の判定の結果、スワップ処理を禁止する旨の指示が出されていない場合は、復号化処理モジュール生成部81は、特定処理モジュール22bのスワップファイルへの書込みを禁止させる機能を備えていない復号化処理モジュール82を生成する。次に、ステップD4又はステップD5の実行後、コード書換部13が、復号化処理モジュール82のコードの書き換えを実行するステップD6。ステップD6は、実施の形態1において図2に示したステップA4と同様のステップである。なお、本実施の形態4では、コード書換部13は、復号化処理モジュール82と暗号化された特定処理モジュール22aとを一つのファイルにまとめることができる。次に、プログラム保護装置80は、復号化処理モジュール82と暗号化された特定処理モジュール22aとを、例えば、開発者の端末等に出力するステップD7。これにより、プログラム保護装置80における処理は終了する。ステップD7は、実施の形態1において図2に示したステップA5と同様のステップである。その後、開発者は、メイン処理モジュール21に、復号化処理モジュール82と、暗号化された特定処理モジュール22aとを付加し、保護対象プログラム20aを構築する。また、保護対象プログラム20aは、組み込み対象となる機器に、組み込まれ、機器の動作に貢献する。[保護処理用プログラム]本実施の形態4における保護処理用プログラムは、コンピュータに、図11に示すステップD1~D7を実行させるプログラムであれば良い。この保護処理用プログラムをコンピュータにインストールし、実行することによって、本実施の形態4におけるプログラム保護装置80とプログラム保護方法とを実現することができる。上記の場合、コンピュータのCPUCentralProcessingUnitは、暗号化部11、復号化処理モジュール生成部81、コード書換部13として機能し、処理を行なう。[機器]ここで、図12を用いて、本実施の形態4において保護処理が行なわれた保護対象プログラム20aが搭載された機器について説明する。図12は、本発明の実施の形態4での保護処理がなされた保護対象プログラムを搭載する機器を示す図である。図12に示す機器50は、家庭用機器、産業用機器、医療用機器、及び自動車といった機器である。図12に示すように、機器50には、CPU、メモリ、バス、インターフェイスこれらについては図示せず等が一体となったコンピュータシステム40が搭載されている。図12に示した保護処理済の保護対象プログラム20aは、このコンピュータシステム40上で実行される。図12に示すように、保護対象プログラム20aは、コンピュータシステム40のメモリ44上に展開される。これにより、コンピュータシステム40のオペレーティングシステムOS43上に、メイン処理モジュール21を実行するメイン処理実行部41と、復号化処理モジュール82を実行する復号化処理部83とが構築される。なお、実際には、コンピュータシステム40のCPUが、メイン処理実行部41及び復号化処理部83として機能する。また、本実施の形態4でも、実施の形態1において図3に示した復号化処理部42と同様に、復号化処理部83は、メイン処理実行部41が特定処理モジュール22図1参照を呼び出すと、暗号化された特定処理モジュール22aの復号化を行ない、復号化した特定処理モジュール22bをメモリ44上に展開する。そして、復号化処理部83は、復号化した特定処理モジュール22bを実行する。但し、本実施の形態4では、復号化処理部83は、メモリ44上に展開されている特定処理モジュール22bに対してスワップファイル84への書込みを禁止している。具体的には、復号化処理部83は、復号化処理モジュール82に記述されたスワップファイル書込み禁止命令により、メモリ44上に、特定処理モジュール22bが展開されると、その展開された領域に対してスワップファイルへの書込みを禁止する。よって、特定処理モジュール22bのメモリ以外の記憶装置のスワップファイル84への書込みは禁止される。[実施の形態4における効果]以上のように、本実施の形態4によれば、特定処理モジュール22bのスワップファイル84への書込みを防ぐことができるので、よりいっそう特定処理モジュールをリバースエンジニアリングによって動的解析することが困難となる。また、実施の形態4を用いた場合も、実施の形態1と同様に、リバースエンジニアリングによって静的解析することは困難となる。更に、開発者における負担は軽減され、結果、開発期間及び開発コストの低減化も図られる。保護処理用プログラムを実行するコンピュータここで、本発明の実施の形態1~4における保護処理用プログラムを実行可能なコンピュータについて図13を用いて説明する。図13は、本発明の実施の形態1~4におけるプログラム保護装置を実現するコンピュータの一例を示すブロック図である。図13に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。CPU111は、記憶装置113に格納された、本実施の形態における保護処理用プログラムコードをメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAMDynamicRandomAccessMemory等の揮発性の記憶装置である。また、本実施の形態における保護処理用プログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、保護処理用プログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。また、記憶装置113の具体例としては、ハードディスクの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。また、記録媒体120の具体例としては、CFCompactFlash登録商標及びSDSecureDigital等の汎用的な半導体記憶デバイス、フレキシブルディスクFlexibleDisk等の磁気記憶媒体、又はCD-ROMCompactDiskReadOnlyMemoryなどの光学記憶媒体が挙げられる。