【手続補正書】
【提出日】令和1年7月31日(2019.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アプリケーションのコードがコンパイルされて生成された中間言語コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含むパッケージを受信する受信工程と、
前記中間言語コードを含む前記ファイルのうちの少なくとも１つのファイルを暗号化する暗号化工程と、
前記電子機器での前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含む復号用ファイルを前記パッケージに追加する追加工程と、を含むことを特徴とする方法。
【請求項２】
前記受信工程は、
前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信し、
前記暗号化工程は、
前記中間言語コードを含むファイルのうちの前記さらに受信した情報に対応するファイルを暗号化することを特徴とする、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、
前記暗号化工程は、
前記ヘッダ部分および前記コード部分のうちの少なくとも一方を暗号化することを特徴とする、請求項１に記載の方法。
【請求項４】
前記暗号化工程は、
前記ヘッダ部分を暗号化する場合、前記ヘッダ部分が含む情報をヌル値に変更して暗号化することを特徴とする、請求項３に記載の方法。
【請求項５】
前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第１ライブラリファイルおよび前記第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第２ライブラリファイルを含み、
前記復号用ファイルは、前記第２ライブラリファイルが含むコードに基づいて前記第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの前記暗号化されたファイルに対するフルバッファを復号し、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含むことを特徴とする、請求項１に記載の方法。
【請求項６】
前記復号用ファイルは、前記第１ライブラリファイルのＡＰＩに関する情報を含む前記第２ライブラリファイルのＩＡＴ（Ｉｍｐｏｒｔ  Ａｄｄｒｅｓｓ  Ｔａｂｌｅ）をフッキングし、前記第２ライブラリファイルが含むコードによる前記ＡＰＩコールを確認するためのコードを含むことを特徴とする、請求項５に記載の方法。
【請求項７】
ネットワークを介した前記電子機器からの要請に応じ、前記復号用ファイルが追加された前記パッケージを前記電子機器に送信する工程
をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項８】
アプリケーションのコードがコンパイルされて生成された中間言語コード、少なくとも１つの暗号化されたファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび少なくとも１つの前記暗号化されたファイルを復号するための復号用ファイルを含むパッケージを受信する工程と、
前記アプリケーションの実行過程において、前記復号用ファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号する復号工程と、を含むことを特徴とする方法。
【請求項９】
前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第１ライブラリファイルおよび前記第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第２ライブラリファイルを含み、
前記復号工程は、
前記第２ライブラリファイルが含むコードに基づいて前記第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの前記暗号化されたファイルに対するフルバッファを前記復号用ファイルが含むコードの制御にしたがって復号し、少なくとも１つの前記暗号化されたファイルを復号することを特徴とする、請求項８に記載の方法。
【請求項１０】
前記復号工程は、
前記復号用ファイルが含むコードの制御にしたがって前記第１ライブラリファイルのＡＰＩに関する情報を含む前記第２ライブラリファイルのＩＡＴ（Ｉｍｐｏｒｔ  Ａｄｄｒｅｓｓ  Ｔａｂｌｅ）をフッキングし、前記第２ライブラリファイルが含むコードによる前記ＡＰＩコールを確認することを特徴とする、請求項９に記載の方法。
【請求項１１】
前記復号工程は、
少なくとも１つの前記暗号化されたファイルのヘッダ部分が予め設定された値で始まるかによって少なくとも１つの前記暗号化されたファイルの暗号化の可否を確認することを特徴とする、請求項８に記載の方法。
【請求項１２】
請求項１〜１１のうちのいずれか一項に記載の方法を実行するためのプログラム。
【請求項１３】
サーバのシステムであって、
アプリケーションのコードがコンパイルされて生成された中間言語コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含むパッケージを受信する受信制御手段と、
前記中間言語コードを含むファイルのうちの少なくとも１つのファイルを暗号化するように前記サーバを制御する暗号化制御手段と、
前記電子機器での前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含む復号用ファイルを前記パッケージに追加する、ファイル追加制御手段と、を含むことを特徴とするシステム。
【請求項１４】
前記受信制御手段は、
前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信するように前記サーバを制御し、
前記暗号化制御手段は、
前記中間言語コードを含むファイルのうちの前記さらに受信した情報に対応するファイルを暗号化するように前記サーバを制御することを特徴とする、請求項１３に記載のシステム。
【請求項１５】
前記少なくとも１つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、
前記暗号化制御手段は、
前記ヘッダ部分および前記コード部分のうちの少なくとも一方を暗号化するように前記サーバを制御することを特徴とする、請求項１３に記載のシステム。
【請求項１６】
前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第１ライブラリファイルおよび前記第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第２ライブラリファイルを含み、
前記復号用ファイルは、前記第２ライブラリファイルが含むコードに基づいて前記第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの前記暗号化されたファイルに対するフルバッファを復号し、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含むことを特徴とする、請求項１３に記載のシステム。
【請求項１７】
ネットワークを介した前記電子機器からの要請に応じ、前記復号用ファイルが追加された前記パッケージを前記電子機器に送信するように前記サーバを制御する送信制御手段
をさらに備えることを特徴とする、請求項１３に記載のシステム。
【請求項１８】
電子機器のシステムであって、
アプリケーションのコードがコンパイルされて生成された中間言語コード、少なくとも１つの暗号化されたファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび少なくとも１つの前記暗号化されたファイルを復号するための復号用ファイルを含むパッケージを受信する受信制御手段と、
前記アプリケーションの実行過程において、前記復号用ファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するように前記電子機器を制御する復号制御手段と、
を備えることを特徴とするシステム。
【請求項１９】
前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第１ライブラリファイルおよび前記第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第２ライブラリファイルを含み、
前記復号制御手段は、
前記第２ライブラリファイルが含むコードに基づいて前記第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの前記暗号化されたファイルに対するフルバッファを前記復号用ファイルが含むコードの制御にしたがって復号し、少なくとも１つの前記暗号化されたファイルを復号するように前記電子機器を制御することを特徴とする、請求項１８に記載のシステム。
【請求項２０】
前記復号制御手段は、
少なくとも１つの前記暗号化されたファイルのヘッダ部分が予め設定された値で始まるかによって少なくとも１つの前記暗号化されたファイルの暗号化の可否を確認することを特徴とする、請求項１８に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正の内容】
【発明の名称】アプリケーションのコードを保護するためのシステム、方法およびプログラム
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
このような偽造・変造を防ぐために、中間言語形態のファイルを単純に暗号化してクライアントに提供するようになれば、クライアントの電子機器で暗号化されたファイルを実行することができずにアプリケーションの駆動が不可能となる。かといって、暗号化されたファイルを復号するための手段（または情報、一例として復号キー）がクライアントに提供されるようになれば、アプリケーションの偽造・変造の問題がまた浮上してしまう。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号して実行することができると同時に、暗号化されたファイルを復号するための情報が第三者やクライアントに露出されることを防ぐことができる、システムおよび方法を提供する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
アプリケーションのコードがコンパイルされて生成された中間言語（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ：ＩＬ）コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含むパッケージを受信する受信工程と、前記中間言語コードを含む前記ファイルのうちの少なくとも１つのファイルを暗号化する暗号化工程と、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含む復号用ファイルを前記パッケージに追加する追加工程と、を含むことを特徴とする方法を提供する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
一側によると、前記受信工程は、前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信し、前記暗号化工程は、前記中間言語コードを含むファイルのうちの前記さらに受信された情報に対応するファイルを暗号化することを特徴としてよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
他の側面によると、前記少なくとも１つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、前記暗号化工程は、前記ヘッダ部分および前記コード部分のうちの少なくとも一方を暗号化することを特徴としてよい。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
また他の側面によると、前記暗号化工程は、前記ヘッダ部分を暗号化する場合、前記ヘッダ部分が含む情報をヌル（ｎｕｌｌ）値に変更して暗号化することを特徴としてよい。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
また他の側面によると、前記ライブラリファイルは、前記中間言語コードを含むファイルを読み込むためのコードを含む第１ライブラリファイルおよび前記第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって前記中間言語コードを含むファイルのフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を読み取ってパースするためのコードを含む第２ライブラリファイルを含み、前記復号用ファイルは、前記第２ライブラリファイルが含むコードに基づいて前記第１ライブラリファイルがＡＰＩコールされることによって読み取られる前記少なくとも１つの暗号化されたファイルに対するフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を復号し、前記少なくとも１つの暗号化されたファイルを復号するためのコードを含むことを特徴としてよい。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
また他の側面によると、前記復号用ファイルは、前記第１ライブラリファイルのＡＰＩに関する情報を含む前記第２ライブラリファイルのＩＡＴ（Ｉｍｐｏｒｔ  Ａｄｄｒｅｓｓ  Ｔａｂｌｅ）をフッキング（ｈｏｏｋｉｎｇ）し、前記第２ライブラリファイルが含むコードによる前記ＡＰＩコールを確認するためのコードを含むことを特徴としてよい。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
また他の側面によると、前記方法は、ネットワークを介した前記電子機器からの要請に応じ、前記復号用ファイルが追加された前記パッケージを前記電子機器に送信する工程をさらに含むことを特徴としてよい。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
アプリケーションのコードがコンパイルされて生成された中間言語（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ：ＩＬ）コード、少なくとも１つの暗号化されたファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび少なくとも１つの前記暗号化されたファイルを復号するための復号用ファイルを含むパッケージを受信する工程と、前記アプリケーションの実行過程において、前記復号用ファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号する復号工程と、を含むことを特徴とする方法を提供する。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
サーバのシステムであって、アプリケーションのコードがコンパイルされて生成された中間言語（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ：ＩＬ）コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含むパッケージを受信する受信制御手段と、前記中間言語コードを含むファイルのうちの少なくとも１つのファイルを暗号化するように前記サーバを制御する暗号化制御手段と、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するためのコードを含む復号用ファイルを前記パッケージに追加する、ファイル追加制御手段と、を備えることを特徴とするシステムを提供する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
電子機器のシステムであって、アプリケーションのコードがコンパイルされて生成された中間言語（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ：ＩＬ）コード、少なくとも１つの暗号化されたファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび少なくとも１つの前記暗号化されたファイルを復号するための復号用ファイルを含むパッケージを受信する受信制御手段と、前記アプリケーションの実行過程において、前記復号用ファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイルを用いることで、少なくとも１つの前記暗号化されたファイルを復号するように前記電子機器を制御する復号制御手段と、を備えることを特徴とするシステムを提供する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号して実行することができると同時に、暗号化されたファイルを復号するための情報が第三者やクライアントに露出されることを防ぐことができる。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
上述したように、ＤＬＬファイル自体が暗号化されると、ＡＰＫ４００を受信したクライアント（一例として、電子機器１（１１０））は、ＤＬＬファイルでゲームコードを読み取ることができないため、アプリケーションを実行することができなくなる。したがって、サーバ１５０は、暗号化されたＤＬＬファイルを復号するためのライブラリファイルであるリカバリーファイル（図４のｒｅｃｏｖｅｒｙ．ｓｏ４４０）をＡＰＫ４００に追加してよい。また、アプリケーションの実行時にｒｅｃｏｖｅｒｙ．ｓｏ４４０がログされるようにｌｉｂｍａｉｎ．ｓｏ３５０にリカバリーファイル４４０をロードすることのできるコード（図４のｌｏａｄｒｅｃｏｖｅｒｙ．ｓｏｃｏｄｅ４３１）を追加し、新たなライブラリファイル（図４のｌｉｂｍａｉｎ．ｓｏ４３０）を生成してよい。図４に示すように、ＡＰＫ４００は、既存のライブラリファイルｌｉｂｍａｉｎ．ｓｏ３５０の代りに新たなライブラリファイルｌｉｂｍａｉｎ．ｓｏ４３０を含んでよい。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００３９
【補正方法】変更
【補正の内容】
【００３９】
ｒｅｃｏｖｅｒｙ．ｓｏ４４０は、ｌｉｂｕｎｉｔｙ．ｓｏ３６０をフッキング（ｈｏｏｋｉｎｇ）してｌｉｂｍｏｎｏ．ｓｏ３７０がＤＬＬファイル３１０、４１０、３３０、４２０をロードするときに、暗号化されたＤＬＬファイル４１０、４２０のフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を制御して暗号化されたＤＬＬファイル４１０、４２０を復号してよい。例えば、ｌｉｂｕｎｉｔｙ．ｓｏ３６０は、ＤＬＬファイル３１０、４１０、３３０、４２０のフルバッファを読み取り、フルバッファを因子としてｌｉｂｍｏｎｏ．ｓｏ３７０のＡＰＩを呼び出してＤＬＬを単一フレームワークにロードさせてよい。一般的に、ＤＬＬファイルは、ウィンドウＰＥ（Ｐｏｒｔａｂｌｅ  Ｅｘｅｃｕｔａｂｌｅ）ファイルフォーマットを有しており、上述したように内部的にドットネットヘッダを含んでいる。このようなＤＬファイルは、オープンソースであるドットネットフレームワーク（上述した単一フレームワーク）によって実行されてよく、ＰＥ（Ｐｏｒｔａｂｌｅ  Ｅｘｅｃｕｔａｂｌｅ）ファイルフォーマットのパース（ｐａｒｓｉｎｇ）とドットネットのパース過程を経るようになる。このような過程は、ｌｉｂｕｎｉｔｙ．ｓｏ３６０からｌｉｂｍｏｎｏ．ｓｏ３７０のＡＰＩを呼び出することで起こるようになる。このために、ｌｉｂｕｎｉｔｙ．ｓｏ３６０はＩＡＴ（Ｉｍｐｏｒｔ  Ａｄｄｒｅｓｓ  Ｔａｂｌｅ）を含んでよく、ｒｅｃｏｖｅｒｙ．ｓｏ４４０は、ｌｉｂｕｎｉｔｙ．ｓｏ３６０のＩＡＴをフッキングしてｌｉｂｕｎｉｔｙ．ｓｏ３６０が暗号化されたＤＬＬファイル４１０、４２０のロードのためにｌｉｂｍｏｎｏ．ｓｏ３７０のＡＰＩコールを確認してよい。また、ｒｅｃｏｖｅｒｙ．ｓｏ４４０は、フルバッファからドットネットヘッダ部分とコード部分を探し出して暗号化された部分を復号してよい。例えば、ＤＬＬファイルのドットネットヘッダは、特定値から始まる。したがって、ｒｅｃｏｖｅｒｙ．ｓｏ４４０は、ＤＬＬファイルをドットネットフレームワークにロードするときに、ドットネットヘッダが予め設定されている値から始まらない場合には、該当のＤＬＬファイルが暗号化されていると判断し、復号を実行してよい。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】００４０
【補正方法】変更
【補正の内容】
【００４０】
したがって、アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号して実行することが可能となる。特に、復号のための情報が、ＤＬＬとは異なる低水準言語で作成されたライブラリファイルの形態で提供されるため、クライアントや第三者に復号のための情報が露出されることを防ぐことができる。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
段階６３０で、サーバ１５０は、少なくとも１つの暗号化されたファイルの復号のためのリカバリーファイルを応用プログラムパッケージに追加してよい。ここで、リカバリーファイルは、電子機器でのアプリケーションの実行のためにライブラリファイル間の呼び出しによって少なくとも１つの暗号化されたファイルが伝達される場合に、少なくとも１つの暗号化されたファイルを復号するためのコードを含んでよい。ファイル追加制御部５３０は、段階６３０を実行するようにサーバ１５０を制御してよい。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
上述したように、少なくとも１つの暗号化されたファイルは、ライブラリファイルがアプリケーションの実行環境（一例として、ドットネットフレームワーク、単一フレームワーク、またはＣＬＲ（Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ））に中間言語コードを含むファイルをロードするため、ライブラリファイル間の呼び出しによって少なくとも１つの暗号化されたファイルが伝達される場合のように、アプリケーションの実行時にリカバリーファイルが含むコードに基づいて電子機器が復号を実行できるようにすることにより、中間言語コードのデコンパイルを防ぎながらも復号のための情報が露出されないようにすることができる。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
このために、ライブラリファイルは、中間言語コードを含むファイルを呼び込むためのコードを含む第１ライブラリファイルおよび第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）コールによって中間言語コードを含むファイルのフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を読み取ってパースするためのコードを含む第２ライブラリファイルを含んでよい。また、リカバリーファイルは、第２ライブラリファイルが含むコードによって第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの暗号化されたファイルに対するフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を復号し、少なくとも１つの暗号化されたファイルを復号するためのコードを含んでよい。例えば、第１ライブラリファイルは図３および図４を参照しながら説明したｌｉｂｍｏｎｏ．ｓｏ３７０に対応してよく、第２ライブラリファイルはｌｉｂｕｎｉｔｙ．ｓｏ３６０に対応してよく、リカバリーファイルはｒｅｃｏｖｅｒｙ．ｓｏ４４０に対応してよい。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
段階６４０で、サーバ１５０は、ネットワークを介した電子機器からの要請に応じ、リカバリーファイルが追加された応用プログラムパッケージを電子機器に送信してよい。送信制御部５４０は、段階６４０を実行するようにサーバ１５０を制御してよい。電子機器に送信された応用プログラムパッケージは、電子機器にインストールされてよく、アプリケーションの駆動（実行）時には上述した復号過程が電子機器で行われてよい。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
図７は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図であり、図８は、本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。図７に示すように、電子機器１（１１０）のプロセッサ２１２は、受信制御部７１０および復号制御部７２０を備えてよい。このようなプロセッサ２１２の構成要素は、図８の方法が含む段階８１０および８２０を実行するように電子機器１（１１０）を制御してよく、このような制御のためにメモリ２１１が含むオペレーティングシステムと少なくとも１つのプログラムコードに基づいて動作するように実現されてよい。このとき、少なくとも１つのプログラムコードは、段階８２０の処理のために電子機器１（１１０）が段階８１０で受信する応用プログラムパッケージに含まれたコードを含んでよい。
【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
段階８１０で、電子機器１（１１０）は、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信してよい。受信制御部７１０は、段階８１０を実行するように電子機器１（１１０）を制御してよい。このとき、応用プログラムパッケージには、アプリケーションのコードがコンパイルされて生成された中間言語（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｌａｎｇｕａｇｅ：ＩＬ）コードを含み、暗号化された少なくとも１つのファイルおよび中間言語コードによってアプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび暗号化された少なくとも１つのファイルを復号するためのリカバリーファイルが含まれてよい。
【手続補正２５】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
段階８２０で、電子機器１（１１０）は、アプリケーションの実行過程において、リカバリーファイルに含まれたコードの制御にしたがってアプリケーションの実行のためにライブラリファイル間の呼び出しによって少なくとも１つの暗号化されたファイルが伝達される場合に、少なくとも１つの暗号化されたファイルを復号してよい。
【手続補正２６】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
上述したように、ライブラリファイルは、中間言語コードを含むファイルを読み込むためのコードを含む第１ライブラリファイルおよび第１ライブラリファイルに対するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）呼び出しによって中間言語コードを含むファイルのフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）を読み取ってパースするためのコードを含む第２ライブラリファイルを含んでよい。このとき、電子機器１（１１０）は、段階８２０で、第２ライブラリファイルが含むコードに基づいて第１ライブラリファイルがＡＰＩコールされることによって読み取られる少なくとも１つの暗号化されたファイルに対するフルバッファ（ｆｕｌｌ  ｂｕｆｆｅｒ）をリカバリーファイルが含むコードの制御にしたがって復号し、少なくとも１つの暗号化されたファイルを復号してよい。言い換えれば、アプリケーションの実行過程において、第２ライブラリファイルに基づいて第１ライブラリファイルのＡＰＩを呼び出すにことよって中間言語コードを含むファイルが実行環境にロードされてよく、このとき、電子機器１（１１０）は、リカバリーファイルが含むコードの制御にしたがって実行環境にロードされる少なくとも１つの暗号化されたファイルに対するフルバッファを復号し、暗号化されたファイルを復号してよい。少なくとも１つの暗号化されたファイルは、ヘッダ部分とコード部分のうちの少なくとも１つが暗号化されたファイルであることは上述したとおりであり、電子機器１（１１０）は、リカバリーファイルが含むコードの制御にしたがって暗号化された部分を復号してよい。
【手続補正２７】
【補正対象書類名】明細書
【補正対象項目名】００５７
【補正方法】変更
【補正の内容】
【００５７】
このように、本発明の実施形態によると、アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号して実行することができると同時に、暗号化されたファイルを復号するための情報が第三者やクライアントに露出されることを防ぐことができる。