IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ライン プラス コーポレーションの特許一覧

特許7320071ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム
<>
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図1
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図2
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図3
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図4
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図5
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図6
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図7
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図8
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図9
  • 特許-ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-25
(45)【発行日】2023-08-02
(54)【発明の名称】ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム
(51)【国際特許分類】
   G06F 21/14 20130101AFI20230726BHJP
   G06F 9/455 20180101ALI20230726BHJP
【FI】
G06F21/14
G06F9/455 100
【請求項の数】 13
(21)【出願番号】P 2021557267
(86)(22)【出願日】2019-03-28
(65)【公表番号】
(43)【公表日】2022-08-08
(86)【国際出願番号】 KR2019003618
(87)【国際公開番号】W WO2020196959
(87)【国際公開日】2020-10-01
【審査請求日】2022-03-23
(73)【特許権者】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジョン,サンミン
(72)【発明者】
【氏名】イム,スンヒョン
(72)【発明者】
【氏名】ハン,ソルファ
(72)【発明者】
【氏名】シム,ミンヨン
(72)【発明者】
【氏名】ジョン,サンフン
【審査官】打出 義尚
(56)【参考文献】
【文献】特開2001-175466(JP,A)
【文献】特開2015-032009(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/14
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置のメモリに積載された実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、
個別のヒープメモリを割り当てる段階、
前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、および
メモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階
を前記コンピュータ装置に実行させ
前記修正する段階は、
前記再配置情報から把握される再配置位置が前記保護メモリ空間を示す場合、
前記保護メモリ空間の開始位置と前記再配置情報から把握される再配置位置との差である第1オフセットを計算する段階、
前記ヒープメモリの開始位置に前記第1オフセットを加えた前記ヒープメモリの第1位置に移動する段階、
前記実行可能ファイルの内容に対するメモリ空間の開始位置と前記保護メモリ空間の開始位置との差である第2オフセットを計算する段階、および
前記ヒープメモリの開始位置から前記第2オフセットを引いた位置から前記再配置情報によって計算された第1アドレス値を示すように前記第1位置に保存された第2アドレス値を修正する段階
を含む、コンピュータプログラム。
【請求項2】
コンピュータ装置のメモリに積載された実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、
個別のヒープメモリを割り当てる段階、
前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、および
メモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階
を前記コンピュータ装置に実行させ
前記修正する段階は、
前記再配置情報から把握される再配置位置が前記保護メモリ空間でない場合、前記実行可能ファイルの内容に対するメモリ空間の開始位置から前記再配置情報によって計算されたアドレス値に基づいて、前記再配置位置に保存されたアドレス値を修正する段階
を含む、コンピュータプログラム。
【請求項3】
前記再配置位置に保存されたアドレス値を修正する段階は、
前記計算されたアドレス値が前記保護メモリ空間を示さない場合、前記計算されたアドレス値を示すように前記再配置位置に保存されたアドレス値を修正する段階、および
前記計算されたアドレス値が前記保護メモリ空間を示す場合、前記保護メモリ空間の開始位置前記計算されたアドレス値の差に相応するオフセットを計算し、前記ヒープメモリの開始位置に前記計算されたオフセットを加えたアドレス値として前記再配置位置に保存されたアドレス値を修正する段階
を含むことを特徴とする、請求項に記載のコンピュータプログラム。
【請求項4】
前記修正する段階の後に、前記メモリに積載された前記実行可能ファイルの再配置情報を削除する段階
をさらに前記コンピュータ装置に実行させる、請求項1からのうちのいずれか一項に記載のコンピュータプログラム。
【請求項5】
前記実行可能ファイルの実行の終了によって前記ヒープメモリを解除する段階
をさらに前記コンピュータ装置に実行させる、請求項1からのうちのいずれか一項に記載のコンピュータプログラム。
【請求項6】
前記ヒープメモリを割り当てる段階の後に、前記ヒープメモリに実行属性を追加する段階
をさらに前記コンピュータ装置に実行させる、請求項1からのうちのいずれか一項に記載のコンピュータプログラム。
【請求項7】
前記修正する段階の後に、前記ヒープメモリから書き込み属性を取り除く段階
をさらに前記コンピュータ装置に実行させる、請求項1からのうちのいずれか一項に記載のコンピュータプログラム。
【請求項8】
前記個別のヒープメモリを割り当てる段階は、
複数のヒープメモリを割り当てる段階を含み、
前記割り当てられたヒープメモリにコピーする段階は、
前記保護メモリ空間の難読化された内容を復号化して前記複数のヒープメモリに分散してコピーすることを特徴とする、請求項1からのうちのいずれか一項に記載のコンピュータプログラム。
【請求項9】
請求項1からのうちのいずれか一項に記載のコンピュータプログラムを前記実行可能ファイルと連係させる段階、
前記実行可能ファイルの少なくとも一部の内容を難読化する段階、および
前記コンピュータプログラムと連係して少なくとも一部内容が難読化された実行可能ファイルを配布する段階
を含むことを特徴とする、実行可能ファイル保護方法。
【請求項10】
前記連係させる段階は、
前記実行可能ファイルの最初の実行領域に前記コンピュータプログラムのコードを追加するか、前記コンピュータプログラムを含む別の実行ファイルまたは動的ライブラリを前記実行可能ファイルから呼び出すように前記実行可能ファイルを変更するか、または前記
実行可能ファイルを変更するための別の外部プログラムファイルとして前記コンピュータプログラムが含まれたファイルを生成することを特徴とする、請求項に記載の実行可能ファイル保護方法。
【請求項11】
コンピュータ装置のメモリに積載された実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、
個別のヒープメモリを割り当てる段階、
前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、および
メモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階
を含み、
前記修正する段階は、
前記再配置情報から把握される再配置位置が前記保護メモリ空間を示す場合、
前記保護メモリ空間の開始位置と前記再配置情報から把握される再配置位置との差である第1オフセットを計算する段階、
前記ヒープメモリの開始位置に前記第1オフセットを加えた前記ヒープメモリの第1位置に移動する段階、
前記実行可能ファイルの内容に対するメモリ空間の開始位置と前記保護メモリ空間の開始位置との差である第2オフセットを計算する段階、および
前記ヒープメモリの開始位置から前記第2オフセットを引いた位置から前記再配置情報によって計算された第1アドレス値を示すように前記第1位置に保存された第2アドレス値を修正する段階
を含む、実行可能ファイル保護方法。
【請求項12】
コンピュータ装置のメモリに積載された実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、
個別のヒープメモリを割り当てる段階、
前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、および
メモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階
を含み、
前記修正する段階は、
前記再配置情報から把握される再配置位置が前記保護メモリ空間でない場合、前記実行可能ファイルの内容に対するメモリ空間の開始位置から前記再配置情報によって計算されたアドレス値に基づいて、前記再配置位置に保存されたアドレス値を修正する段階
を含む、実行可能ファイル保護方法。
【請求項13】
請求項11または12に記載の方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、ヒープメモリを利用して実行可能ファイルを保護する方法およびシステムに関する。
【背景技術】
【0002】
リバースエンジニアリング(Reverse Engineering)を利用すれば、特定のプログラムの動作原理を入手したり、入手した動作原理を利用して特定のプログラムの動作方式を変更したりすることが可能となる。一例として、クライアント端末に配布されたアプリケーションは、リバースエンジニアリング(リバーシング)によってその動作方式を把握することができ、このようなリバースエンジニアリングによってアプリケーションの機能を盗用することが可能となる。また、アプリケーションの本来の機能を修正してアプリケーションが意図する動作とは異なるように動作させながら、アプリケーションが提供するサービスと該当のサービスを提供するシステムの信頼性に悪影響を与えることもできる。
【0003】
このようなリバースエンジニアリング過程からプログラムを保護するために、実行ファイルを難読化して本来のコードおよびデータを確認できないように保護する方法がある。一例として、コード難読化は、プログラミング言語で作成されたコードの読み取りを困難にするためにプログラムコードの一部または全部を変更する方法の1つであって、コードの可読性を低めることによってリバースエンジニアリングへの対応策を提供する。例えば、韓国登録特許第10-1328012号公報は、アプリケーションコード難読化装置およびその方法に関するものであって、アプリケーションに使用されるコードのうちの重要コードおよび重要コードを呼び出すための呼出コードをネイティブコード形態に変換する技術を開示している。
【0004】
しかし、すべてのプログラムの実行のためには、ある時点には本来の情報(コードやデータ)が復号化された状態でメモリ上に存在しなければならない。この時点にメモリへのアクセスがなされた場合には、従来のようなリバースエンジニアリングによる分析が可能となるのである。このようにプログラムの実行過程においてメモリに積載された実行ファイルと動的ライブラリのメモリに対するアクセスは、システムAPI(Application Program Interface)を使用するか、プロセスのメモリ情報から実行領域を直接確認する方式によっても可能である。
【0005】
言い換えれば、ファイルが難読化されていたとしても、実行時点にデバッガーなどによってリアルタイムでメモリ情報を確認したり、メモリダンプ方法などによってメモリ情報にアクセス可能な状態で実行可能なファイル(Executable File)のヘッダー情報がある特定の位置を検出し、この情報に基づいて実行ファイルまたは動的ライブラリ構成領域の完全な全体情報を確認したりすることができる。したがって、このようなメモリから原本のようなファイル形態で抽出あるいは保存したり、該当のメモリ上でリバースエンジニアリングを直接実行したりすることが可能であるという問題は、依然として存在するようになる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
メモリ上のコードおよびデータに対するアクセスを困難にすることにより、プログラムを保護することができる、実行可能ファイル保護方法およびシステムを提供する。
【0007】
メモリに積載されている実行可能ファイルの情報から実際の構成領域を分離して個別のヒープメモリアドレスに該当の領域を位置させ、正常に参照されて動作するようにメモリ情報を修正した後、ヒープメモリや再配置情報を確認できないように取り除き、メモリからプログラムの実行ファイルまたは動的ライブラリのような実行可能ファイルの完全な全体情報を確認できないようにすることにより、メモリ上に存在するプログラムを保護することができる、実行可能ファイル保護方法およびシステムを提供する。
【課題を解決するための手段】
【0008】
実行可能ファイル保護方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されたコンピュータプログラムであって、前記実行可能ファイル保護方法は、実行可能ファイルの実行にしたがい、前記コンピュータ装置のメモリに積載された前記実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、個別のヒープメモリ(heap memory)を割り当てる段階、前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、およびメモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階を含むことを特徴とする、コンピュータプログラムを提供する。
【0009】
一側によると、前記修正する段階は、前記再配置情報から把握される再配置位置が前記保護メモリ空間を示す場合、前記保護メモリ空間の開始位置と前記再配置情報から把握される再配置位置との差である第1オフセットを計算する段階、前記ヒープメモリの開始位置に前記第1オフセットを加えた前記ヒープメモリの第1位置に移動する段階、前記実行可能ファイルの内容に対するメモリ空間の開始位置と前記保護メモリ空間の開始位置との差である第2オフセットを計算する段階、および前記ヒープメモリの開始位置から前記第2オフセットを引いた位置から前記再配置情報によって計算された第1アドレス値を示すように前記第1位置に保存された第2アドレス値を修正する段階を含むことを特徴としてよい。
【0010】
他の側面によると、前記修正する段階は、前記再配置情報から把握される再配置位置が前記保護メモリ空間を示さない場合、前記保護メモリ空間の開始位置と前記再配置情報から把握される再配置位置との差である第1オフセットを計算する段階、前記ヒープメモリの開始位置に前記第1オフセットを加えた前記ヒープメモリの第1位置に移動する段階、および前記再配置位置が示す位置の第1アドレス値を示すように前記第1位置に保存された第2アドレス値を修正する段階を含むことを特徴としてよい。
【0011】
また他の側面によると、前記修正する段階は、前記再配置情報から把握される再配置位置が前記保護メモリ空間を示さない場合、前記実行可能ファイルの内容に対するメモリ空間の開始位置から前記再配置情報によって計算されたアドレス値に基づいて、前記再配置位置に保存されたアドレス値を修正する段階を含むことを特徴としてよい。
【0012】
また他の側面によると、前記再配置位置に保存されたアドレス値を修正する段階は、前記計算されたアドレス値が前記保護メモリ空間を示さない場合、前記計算されたアドレス値を示すように前記再配置位置に保存されたアドレス値を修正する段階、および前記計算されたアドレス値が前記保護メモリ空間を示す場合、前記保護メモリ空間の開始位置で前記計算されたアドレス値の差に相応するオフセットを計算し、前記ヒープメモリの開始位置に前記計算されたオフセットを加えたアドレス値として前記再配置位置に保存されたアドレス値を修正する段階を含むことを特徴としてよい。
【0013】
また他の側面によると、前記実行可能ファイル保護方法は、前記修正する段階の後に、前記メモリに積載された前記実行可能ファイルの再配置情報を削除する段階をさらに含むことを特徴としてよい。
【0014】
また他の側面によると、前記実行可能ファイル保護方法は、前記実行可能ファイルの実行の終了によって前記ヒープメモリを解除する段階をさらに含むことを特徴としてよい。
【0015】
また他の側面によると、前記実行可能ファイル保護方法は、前記ヒープメモリを割り当てる段階の後に、前記ヒープメモリに実行属性を追加する段階をさらに含むことを特徴としてよい。
【0016】
また他の側面によると、前記実行可能ファイル保護方法は、前記修正する段階の後に、前記ヒープメモリから書き込み属性を取り除く段階をさらに含むことを特徴としてよい。
【0017】
さらに他の側面によると、前記個別のヒープメモリ(heap memory)を割り当てる段階は、複数のヒープメモリを割り当てる段階を含み、前記割り当てられたヒープメモリにコピーする段階は、前記保護メモリ空間の難読化された内容を復号化して前記複数のヒープメモリに分散してコピーすることを特徴としてよい。
【0018】
前記コンピュータプログラムを前記実行可能ファイルと連係させる段階、前記実行可能ファイルの少なくとも一部の内容を難読化する段階、および前記コンピュータプログラムと連係して少なくとも一部の内容が難読化された実行可能ファイルを配布する段階を含むことを特徴とする、実行可能ファイル保護方法を提供する。
【0019】
コンピュータ装置が含む少なくとも1つのプロセッサによって実行される実行可能ファイル保護方法であって、実行可能ファイルの実行にしたがい、前記コンピュータ装置のメモリに積載された前記実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別する段階、個別のヒープメモリ(heap memory)を割り当てる段階、前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーする段階、およびメモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正する段階を含む、実行可能ファイル保護方法を提供する。
【0020】
前記方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
【0021】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、前記コンピュータプログラムを前記実行可能ファイルと連係させ、前記実行可能ファイルの少なくとも一部の内容を難読化し、前記コンピュータプログラムと連係されて少なくとも一部の内容が難読化された実行可能ファイルを配布することを特徴とする、コンピュータ装置を提供する。
【0022】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、実行可能ファイルの実行にしたがい、前記コンピュータ装置のメモリに積載された前記実行可能ファイルの内容に対するメモリ空間のうちから保護のために難読化された内容が積載された保護メモリ空間を識別し、個別のヒープメモリ(heap memory)を割り当て、前記保護メモリ空間の難読化された内容を復号化して前記割り当てられたヒープメモリにコピーし、メモリに積載された前記実行可能ファイルの再配置情報を利用して前記実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正することを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0023】
メモリ上のコードおよびデータに対するアクセスを困難にすることにより、プログラムを保護することができる。
【0024】
メモリに積載されている実行可能ファイルの情報から実際の構成領域を分離して個別のヒープメモリアドレスに該当の領域を位置させ、正常に参照されて動作するようにメモリ情報を修正した後、ヒープメモリや再配置情報を確認できないように取り除き、メモリからプログラムの実行ファイルまたは動的ライブラリのような実行可能ファイルの完全な全体情報を確認できないようにすることにより、メモリ上に存在するプログラムを保護することができる。
【図面の簡単な説明】
【0025】
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
図3】本発明の一実施形態における、サーバにおける実行可能ファイル保護方法の例を示したフローチャートである。
図4】本発明の一実施形態における、クライアントにおける実行可能ファイル保護方法の例を示したフローチャートである。
図5】本発明の一実施形態における、再配置位置が保護メモリ空間を示す場合のアドレス修正方法の例を示したフローチャートである。
図6】本発明の一実施形態における、再配置位置が保護メモリ空間を示す場合のアドレス修正過程の例を示した図である。
図7】本発明の一実施形態における、再配置位置が保護メモリ空間を示さない場合のアドレス修正方法の例を示したフローチャートである。
図8】本発明の一実施形態における、再配置位置が保護メモリ空間を示さない場合のアドレス修正過程の例を示した図である。
図9】本発明の一実施形態における、再配置位置が保護メモリ空間でない場合のアドレス修正過程の第1例を示した図である。
図10】本発明の一実施形態における、再配置位置が保護メモリ空間でない場合のアドレス修正過程の第2例を示した図である。
【発明を実施するための形態】
【0026】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0027】
本発明の実施形態に係る実行可能ファイル保護システムは、少なくとも1つのコンピュータ装置によって実現されてよい。このとき、コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の実施形態に係る実行可能ファイル保護方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合して前記方法をコンピュータに実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
【0028】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。また、図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が図1のネットワーク環境に限定されることはない。
【0029】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、図1では、電子機器1(110)の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器1(110)は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
【0030】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0031】
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、ファイル配布サービス、対話サービス、地図サービス、翻訳サービス、金融サービス、決済サービス、ソーシャルネットワークサービス、メッセージングサービス、検索サービス、メールサービス、コンテンツ提供サービスなど)を提供するシステムであってよい。
【0032】
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、図2に示したコンピュータ装置200によって実現されてよい。
【0033】
このようなコンピュータ装置200は、図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
【0034】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0035】
通信インタフェース230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信モジュール230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0036】
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置で構成されてもよい。
【0037】
また、他の実施形態において、コンピュータ装置200は、図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバやデータベースなどのような他の構成要素をさらに含んでもよい。
【0038】
図3は、本発明の一実施形態における、サーバにおける実行可能ファイル保護方法の例を示したフローチャートである。本実施形態に係る実行可能ファイル保護方法は、図2を参照しながら説明したコンピュータ装置200によって実現されるサーバによって実行されてよい。より具体的な例として、アプリストアのようにアプリケーションのインストールファイルを配布するサーバでインストールファイルが含む実行可能ファイルを保護するために、本実施形態に係る実行可能ファイル保護方法を実行してよい。この場合、サーバを実現するコンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が図3の方法に含まれる段階310~330を実行するようにコンピュータ装置200を制御してよい。
【0039】
段階310で、コンピュータ装置200は、実行可能ファイルの保護のための特定のコンピュータプログラムを実行可能ファイルと連係させてよい。ここで、実行可能ファイルは、一例として、上述したように、アプリケーションのインストールファイルに含まれた実行可能ファイルであってよい。また、特定のコンピュータプログラムは、このような実行可能ファイルを保護するためのコードを含むコンピュータプログラムであって、コンピュータ装置200は、このような特定のコンピュータプログラムを実行可能ファイルと連係させて実行可能ファイルが保護されるようにしてよい。ここで、特定のコンピュータプログラムは、実行可能ファイルを実行させるクライアントの装置のメモリ上で実行可能ファイルの完全な全体内容を確認できないように保護する機能を含んでよい。このような特定のコンピュータプログラムが実行可能ファイルをどのように保護するのかについては、以下でさらに詳しく説明する。このとき、特定のコンピュータプログラムと実行可能ファイルとの連係のために、コンピュータ装置200は、実行可能ファイルの最初の実行領域にコンピュータプログラムのコードを追加することにより、後に実行可能ファイルが実行されるときに、該当のコンピュータプログラムのコードが優先的に作動しながら実行可能ファイルを保護するようにしてよい。他の例として、コンピュータ装置200は、コンピュータプログラムを含む別の実行ファイルまたは動的ライブラリを実行可能ファイルから呼び出すように実行可能ファイルを変更する形態で、実行可能ファイルと実行可能ファイルの保護のためのコンピュータプログラムを互いに連係させてよい。また他の例として、コンピュータ装置200は、実行可能ファイルを変更するための別の外部プログラムファイルとして、コンピュータプログラムが含まれたファイルを生成してよい。この場合、生成されたファイルによって実行可能ファイルが保護されるためのコンピュータプログラムがインストールされて実行されたクライアントでは、該当のコンピュータプログラムによって実行可能ファイルが保護されてよい。
【0040】
段階320で、コンピュータ装置200は、実行可能ファイルの少なくとも一部の内容を難読化してよい。難読化のための周知方式は数多くあるが、このような多様な方式のうちの少なくとも1つによって実行可能ファイルの保護しようとする部分が難読化されてよい。
【0041】
段階330で、コンピュータ装置200は、コンピュータプログラムと連係して少なくとも一部の内容が難読化された実行可能ファイルを配布してよい。例えば、このような実行可能ファイルを含むアプリケーションのインストールファイルがクライアントに配布されてよく、クライアントでインストールされて実行されてよい。このとき、実行可能ファイルの保護のための特定のコンピュータプログラムは、クライアントの装置で実行可能ファイルが実行されるためにメモリに積載されるときに、ユーザがメモリから実行可能ファイルの完全な全体内容を入手できないように実行可能ファイルを保護するために動作してよい。
【0042】
図4は、本発明の一実施形態における、クライアントにおける実行可能ファイル保護方法の例を示したフローチャートである。本実施形態に係る実行可能ファイル保護方法は、コンピュータ装置200によって実現されるクライアントによって実行されてよい。より具体的な例として、アプリストアからアプリケーションのインストールファイルを受信してアプリケーションをインストールして実行するクライアントでインストールファイルが含む実行可能ファイルを保護するために、本実施形態に係る実行可能ファイル保護方法を実行してよい。この場合、クライアントを実現するコンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プログラムのコードとは、実行可能ファイルの保護のための特定のコンピュータプログラムのコードであってよい。このとき、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が図4の方法に含まれる段階410~480を実行するようにコンピュータ装置200を制御してよい。
【0043】
段階410で、コンピュータ装置200は、実行可能ファイルの実行にしたがい、コンピュータ装置200のメモリ210に積載された実行可能ファイルの内容に対するメモリ空間から保護のために難読化された内容が積載された保護メモリ空間を識別してよい。保護のための内容の難読化については、サーバによる実施形態で説明したとおりである。コンピュータ装置200は、メモリ210上で実行可能ファイルのコード領域および/またはデータ領域を確認し、難読化された内容が含まれた保護メモリ空間を確認してよい。
【0044】
段階420で、コンピュータ装置200は、個別のヒープメモリを割り当ててよい。このようなヒープメモリは、コンピュータ装置200のメモリ210上に割り当てられてよい。ヒープメモリが割り当てられる領域は、メモリ210に既に積載された実行可能ファイルの内容に対するメモリ空間とは異なってよい。一例として、コンピュータ装置200は、保護メモリ空間と同じ大きさのヒープメモリを動的に割り当ててよい。他の例として、コンピュータ装置200は、任意の大きいメモリ空間を予め割り当てておき、そのうちの一部をヒープメモリのための空間として活用してよい。
【0045】
段階430で、コンピュータ装置200は、割り当てられたヒープメモリに実行属性を追加してよい。このような実行属性の追加は、後に割り当てられたヒープメモリにコピーされるコードの実行のためであってよい。
【0046】
段階440で、コンピュータ装置200は、保護メモリ空間の難読化された内容を復号化して割り当てられたヒープメモリにコピーしてよい。難読化方式のための周知方法が数多くあるように、難読化された内容を復号化するための周知方法も多くある。例えば、実行可能ファイルの保護のための特定のコンピュータプログラムは、サーバでの難読化方式にしたがって難読化された内容を復号化するためのコードを含んでよく、コンピュータ装置200は、このようなコードの制御にしたがって難読化された内容を復号化した状態でメモリにコピーしてよい。一例として、コンピュータ装置200は、保護メモリ空間の内容をすべて復号化してヒープメモリの空間にコピーしてよい。他の例として、コンピュータ装置200は、ヒープメモリの空間へのコピーが完了した後に全体領域を復号化してもよい。また他の例として、コンピュータ装置200は、保護メモリ空間の内容を一部分ずつ復号化しながらヒープメモリの空間にコピーしてもよい。また、実施形態によって、コンピュータ装置200は、複数のヒープメモリを割り当ててもよい。この場合、コンピュータ装置200は、保護メモリ空間の難読化された内容を復号化して複数のヒープメモリに分散してコピーしてよい。複数のヒープメモリに復号化された内容を分散してコピーする場合は、ユーザによる実行可能ファイルの完全な内容の入手をより困難にすることができる。
【0047】
段階450で、コンピュータ装置200は、メモリに積載された実行可能ファイルの再配置情報を利用して実行可能ファイルの内容に対するメモリ空間のアドレスを動的に修正してよい。一例として、コンピュータ装置200が含むハードディスクに保存された実行可能ファイルの内容は、これがそのままメモリ210に積載されるのではなく、コードと定数データ、変数データなどを区分してメモリ空間に分割して積載されるようになる。言い換えれば、ハードディスクでは、1つの内容がメモリ210に積載されるときには多くの分割されたメモリ領域に積載されるようになり、このような積載の後、変数アドレス値や関数アドレス値などの情報を更新する再配置(relocation)による情報変更作業が実行されるようになる。このとき、ヒープメモリ上にコピーされた内容のメモリ空間のアドレスも再配置情報によって動的に修正される必要がある。メモリ空間のアドレスを動的に修正する方法については、図5~8を参照しながらさらに詳しく説明する。
【0048】
段階460で、コンピュータ装置200は、メモリ210に積載された実行可能ファイルの再配置情報を削除してよい。このような再配置情報の削除は、メモリダンプなどによってメモリを分析しようとするユーザがメモリ空間のアドレスを直接修正し、所望するコードやデータを検出することを防ぐためである。
【0049】
段階470で、コンピュータ装置200は、ヒープメモリから書き込み属性を取り除いてよい。ヒープメモリに対するメモリ空間のアドレスが修正された後にはこれ以上ヒープメモリの内容を変更する必要がないため、ヒープメモリの内容の変更を防ぐために、ヒープメモリから書き込み属性が取り除かれてよい。
【0050】
段階480で、コンピュータ装置200は、実行可能ファイルの実行の終了によってヒープメモリを解除してよい。実行可能ファイルの実行のためのプロセスが終了するかこれ以上実行可能ファイルが使用されない時点にヒープメモリを解除することにより、ヒープメモリが含む復号化された内容へのアクセスを防ぐことができる。
【0051】
図5は、本発明の一実施形態における、再配置位置が保護メモリ空間を示す場合のアドレス修正方法の例を示したフローチャートである。図5の段階510~540は、段階450で再配置情報から把握される再配置位置が保護メモリ空間を示す場合に実行されてよい。
【0052】
段階510で、コンピュータ装置200は、保護メモリ空間の開始位置と再配置情報から把握される再配置位置との差である第1オフセットを計算してよい。ここで、再配置位置は、修正されたメモリ空間のアドレス値を含む位置であってよい。例えば、実行可能ファイルのベースアドレスが1000であり、保護メモリ空間の開始位置が1100であると仮定する。このとき、再配置位置が1300であれば、第1オフセットは200となってよい。
【0053】
段階520で、コンピュータ装置200は、ヒープメモリの開始位置に第1オフセットを加えたヒープメモリの第1位置に移動してよい。このようなヒープメモリの第1位置は、保護メモリ空間の再配置位置に対応してよい。
【0054】
段階530で、コンピュータ装置200は、実行可能ファイルの内容に対するメモリ空間の開始位置と保護メモリ空間の開始位置との差である第2オフセットを計算してよい。このような第2オフセットは、逆に、ヒープメモリの開始位置から実行可能ファイルの内容に対するメモリ空間の開始位置に対応する位置を検出するために活用されてよい。例えば、段階540では、ヒープメモリの開始位置から第2オフセットを引いた位置を検出することにより、実行可能ファイルの内容に対するメモリ空間の開始位置に対応する位置を検出してよい。
【0055】
段階540で、コンピュータ装置200は、ヒープメモリの開始位置から第2オフセットを引いた位置から再配置情報によって計算された第1アドレス値を示すように第1位置に保存された第2アドレス値を修正してよい。言い換えれば、第1位置が示すアドレス値が、再配置位置が示す位置に対応して動的に修正されてよい。
【0056】
図6は、本発明の一実施形態における、再配置位置が保護メモリ空間を示す場合のアドレス修正過程の例を示した図である。図6は、全体メモリ空間610のうちの一部に実行可能ファイル620が積載された例を示している。このとき、実行可能ファイル620の内容に対するメモリ空間の開始位置をベースアドレス(Base Address)630と呼ぶ。このとき、全体メモリ空間610のうちの一部に積載された実行可能ファイル620の内容は、難読化された内容が含まれた保護メモリ空間640と再配置情報650を含んでよい。また、上述したように、個別のヒープメモリ660が割り当てられてよい。
【0057】
このとき、コンピュータ装置200は、上述したように、保護メモリ空間640の開始位置と再配置情報から把握される再配置位置Aとの差である第1オフセットaを計算してよい。ここで、再配置位置Aに保存されたアドレス値が位置Bを示しており、位置Bは保護メモリ空間640に含まれると仮定する。言い換えれば、再配置位置Aが保護メモリ空間640を示している場合を仮定する。この場合、位置Bは、ベースアドレス630を基準としてcのオフセットを有してよい。
【0058】
一方、コンピュータ装置200は、ヒープメモリ660の開始位置に第1オフセットaを加えたヒープメモリ660の位置Cに移動してよい。このとき、位置Cに保存されたアドレス値も再配置によって修正される必要がある。このために、コンピュータ装置200は、実行可能ファイル620の内容に対するメモリ空間の開始位置と保護メモリ空間640の開始位置との差である第2オフセットbを計算してよい。この後、コンピュータ装置200は、ヒープメモリ660の開始位置から第2オフセットbを引いた位置(図6において点線670で示した位置)から再配置情報によって計算された第1アドレス値に基づいて位置Cに保存された第2アドレス値を修正してよい。ここで、位置Dに対する第1アドレス値は、点線670で示した位置にオフセットcを加えた位置のアドレス値が決定されてよい。
【0059】
このとき、コンピュータ装置200は、計算された第1アドレス値がヒープメモリ660の領域に含まれる場合、第1位置に保存された第2アドレス値を計算された第1アドレス値を示すように修正してよい。この場合、位置Cに保存されたアドレス値は位置Dを示すようになる。このようなヒープメモリ660の位置Dが保護メモリ空間640の再配置位置Aが示す位置Bに対応することは、容易に理解することができるであろう。
【0060】
図7は、本発明の一実施形態における、再配置位置が保護メモリ空間を示さない場合のアドレス修正過程の例を示した図である。図7の段階710~730は、段階450で再配置情報から把握される再配置位置が保護メモリ空間を示さない場合に実行されてよい。
【0061】
段階710で、コンピュータ装置200は、保護メモリ空間の開始位置と再配置情報から把握される再配置位置との差である第1オフセットを計算してよい。ここで、再配置位置は、修正されたメモリ空間のアドレス値を含む位置であってよい。例えば、実行可能ファイルのベースアドレスが1000であり、保護メモリ空間の開始位置が1100であると仮定する。このとき、再配置位置が1300であれば、第1オフセットは200となってよい。
【0062】
段階720で、コンピュータ装置200は、ヒープメモリの開始位置に第1オフセットを加えたヒープメモリの第1位置に移動してよい。このようなヒープメモリの第1位置は、保護メモリ空間の再配置位置に対応してよい。
【0063】
段階730で、コンピュータ装置200は、再配置位置が示す位置の第1アドレス値を示すように第1位置に保存された第2アドレス値を修正してよい。言い換えれば、ヒープメモリの第1位置に保存された第2アドレス値が保護メモリ空間の外部のメモリ空間の位置(再配置位置が示す位置)を示すように修正されてよい。
【0064】
図8は、本発明の一実施形態における、再配置位置が保護メモリ空間を示さない場合のアドレス修正過程の例を示した図である。図7では、図6とは異なり、再配置位置Aに保存されたアドレス値が位置B’を示しており、位置B’が保護メモリ空間640の外部に位置すると仮定する。言い換えれば、再配置位置Aが保護メモリ空間640を示さない場合を仮定する。
【0065】
このとき、コンピュータ装置200は、上述したように、保護メモリ空間640の開始位置と再配置情報から把握される再配置位置Aとの差である第1オフセットaを計算してよい。ここで、再配置位置Aに保存されたアドレス値は、保護メモリ空間640の外部に位置する位置Bを示している。
【0066】
この場合、コンピュータ装置200は、ヒープメモリ660の開始位置に第1オフセットaを加えたヒープメモリ660の位置Cに移動してよい。このとき、位置Cに保存されたアドレス値も再配置によって修正される必要がある。このために、コンピュータ装置200は、位置Cに保存されたアドレス値を位置D’のアドレス値から位置B’のアドレス値に修正することによって位置Cが位置B’を示すようにアドレス値を修正してよい。図8の矢印810は、ヒープメモリ660上の位置Cが保護メモリ空間640の外部に位置する位置B’を示す例を示している。
【0067】
一方、再び図4を参照すると、再配置位置が保護メモリ空間でない場合、コンピュータ装置200は、段階450で、実行可能ファイルの内容に対するメモリ空間の開始位置から再配置情報によって計算されたアドレス値に基づいて、再配置位置に保存されたアドレス値を修正してよい。このとき、計算されたアドレス値が前記保護メモリ空間を示さない場合、コンピュータ装置200は、計算されたアドレス値を示すように再配置位置に保存されたアドレス値を修正してよい。また、計算されたアドレス値が保護メモリ空間を示す場合、保護メモリ空間の開始位置で計算されたアドレス値の差に相応するオフセットを計算し、ヒープメモリの開始位置で計算されたオフセットを加えたアドレス値として再配置位置に保存されたアドレス値を修正してよい。
【0068】
図9は、本発明の一実施形態における、再配置位置が保護メモリ空間でない場合のアドレス修正過程の第1例を示した図である。図9は、再配置情報によって再配置位置が保護メモリ空間640の外部の位置Eを示しており、再配置位置Eが保護メモリ空間640内の位置Fを示している場合の例を示している。
【0069】
この場合、コンピュータ装置200は、保護メモリ空間640の開始位置で計算されたアドレス値の差に相応するオフセットjを計算した後、ヒープメモリ660の開始位置に計算されたオフセットjを加えたアドレス値として再配置位置Eに保存されたアドレス値を修正してよい。図9の矢印910は、再配置位置Eに保存されたアドレス値が、既存の保護メモリ空間640上の位置Fのアドレス値からヒープメモリ660上の位置Gのアドレス値に修正されたことを示している。
【0070】
図10は、本発明の一実施形態における、再配置位置が保護メモリ空間でない場合のアドレス修正過程の第2例を示した図である。図10は、再配置位置Eに保存されたアドレス値が保護メモリ空間640の外部の位置F’を示している例を示している。この場合、再配置位置Eに保存されたアドレス値は位置F’のアドレス値となってよい。この場合、再配置位置Eに保存されたアドレス値は変更されなくてもよい。
【0071】
このように、本発明の実施形態によると、メモリ上のコードおよびデータに対するアクセスを困難にすることにより、プログラムを保護することができる。また、メモリに積載されている実行可能ファイルの情報から実際の構成領域を分離して個別のヒープメモリアドレスに該当の領域を位置させ、正常に参照されて動作するようにメモリ情報を修正した後、ヒープメモリや再配置情報を確認できないように取り除き、メモリからプログラムの実行ファイルまたは動的ライブラリのような実行可能ファイルの完全な全体情報を確認できないようにすることにより、メモリ上に存在するプログラムを保護することができる。
【0072】
上述したシステムまたは装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0073】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置に具現化されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に格納されてよい。
【0074】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0075】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10